原文标题:《一个示例来解释 EIP-712》 在 GitHub 中有许多文章和示例解释和展示了如何使用 EIP-712,但在理解它作为一个整体是如何工作的以及前端代码和智能合约是如何关联的方面有很多困难。这是 EIP-712 的一个示例 (不是解释)。先决条件和使用的版本。
EIP-712EIP-712 是一种更高级、更安全的交易签名方法。使用该标准不仅可以签署交易并且可以验证签名,而且可以将数据与签名一起传递到智能合约中,并且可以根据该数据验证签名以了解签名者是否是实际发送该签名的人要在交易中调用的数据。 EIP-712 提出了数据的标准结构和从结构化消息生成散列的定义过程。然后使用此散列生成签名。通过这种方式,为发送交易生成的签名与为验证身份或任何其他目的生成的签名之间就有了明显的区别。EIP-712 草案将签名方案背后的动机表述为 : 提高链上使用的链下消息签名的可用性。我们看到越来越多的人采用链下消息签名,因为它节省了 gas,减少了区块链上的交易数量。 EIP-712 是类型化结构化数据的哈希和签名的标准,而不仅仅是字节字符串。它包括一个
EIP-712 的实现可以在 Uniswap V2 的 Periphery 合约中看到,它通过许可移除流动性,最终调用 Uniswap V2 Core 中的方法来完成这一操作。 前端的签名被传递给 Periphery 中的方法,签名被用来代表 Core 中使用该方法的用户批准 Router 合约。 示例代码我们的示例将使用 EIP-721 提案用数据 (地址、storedData 的值和截止日期) 签署交易,这些数据用于更改合约中变量的值。 如果签名和散列给出了签署人的地址,并且没有超过截止日期,则更改 storedData 的值。 这是一个无用的例子,但理解了它将确保您可以在其他地方使用该标准。正确使用 EIP-712 是创建一个 ERC20 许可证,就像 Uniswap 团队所做的那样。 步骤 1继续克隆 truffle 的 react box。 我们将根据需要简单地调整和添加代码,以使 EIP-712 正常工作。 步骤 2数据是 EIP-712 中最关键的部分。这些要签名的数据必须符合预定义的格式。它必须有一个 EIP712Domain 和要签名的数据 (在我们的示例中设置)。两者的组合将被签名并发送给智能合约进行验证。 (责任编辑:admin) |