织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

如何提高链下消息签名的可用性?

时间:2021-08-23 13:51来源:未知 作者:admin 点击:
原文标题:《一个示例来解释 EIP-712》 撰文:Apurba Pokharel 翻译:ChinaDeFi 在 GitHub 中有许多文章和示例解释和展示了如何使用 EIP-712,但在理解它作为一个整体是如何工作的以及前端代码

原文标题:《一个示例来解释 EIP-712》
撰文:Apurba Pokharel
翻译:ChinaDeFi

在 GitHub 中有许多文章和示例解释和展示了如何使用 EIP-712,但在理解它作为一个整体是如何工作的以及前端代码和智能合约是如何关联的方面有很多困难。这是 EIP-712 的一个示例 (不是解释)。先决条件和使用的版本。

  1. Solidity 基础知识

  2. npm 7.19.1

  3. 节点 16.2.0

  4. Metamask 9.8.4

  5. truffle 5.4.0

EIP-712

EIP-712 是一种更高级、更安全的交易签名方法。使用该标准不仅可以签署交易并且可以验证签名,而且可以将数据与签名一起传递到智能合约中,并且可以根据该数据验证签名以了解签名者是否是实际发送该签名的人要在交易中调用的数据。

EIP-712 提出了数据的标准结构和从结构化消息生成散列的定义过程。然后使用此散列生成签名。通过这种方式,为发送交易生成的签名与为验证身份或任何其他目的生成的签名之间就有了明显的区别。EIP-712 草案将签名方案背后的动机表述为 :

提高链上使用的链下消息签名的可用性。我们看到越来越多的人采用链下消息签名,因为它节省了 gas,减少了区块链上的交易数量。

EIP-712 是类型化结构化数据的哈希和签名的标准,而不仅仅是字节字符串。它包括一个

  • 编码函数正确性的理论框架,

  • 与 solid 结构相似并兼容的结构化数据规范,

  • 安全哈希算法用于这些结构的实例,

  • 在可签名消息集中安全包含这些实例,

  • 一个可扩展的域分离机制,

  • 新的 RPC 调用 eth_signTypedData,

  • EVM 中哈希算法的优化实现。

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)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容