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

我的网站

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

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

时间:2021-08-23 13:51来源:未知 作者:admin 点击:
在 EIP-712 下签名的每个数据必须有一个 EIP712Domain 和另一个数据。这两者的结构可以是任何东西,但必须在 JS 代码和 SC 代码上相同。 当使用该提案时,

在 EIP-712 下签名的每个数据必须有一个 EIP712Domain 和另一个数据。这两者的结构可以是任何东西,但必须在 JS 代码和 SC 代码上相同。

当使用该提案时,EIP712Domain 的结构是一个被广泛接受的标准。

用示例解释以太坊 EIP-712:如何提高链下消息签名的可用性?EIP-712 数据标准

EIP712Domain 有一些参数,这些参数指定在哪个网络和哪个特定合约上将用于验证签名。另一份具有相同代码的合同将无法验证该签名。

步骤 3

让我们添加一个按钮,当单击该按钮时,将弹出元掩码,使用 eth_signTypedData_v3 方法对数据进行签名。

步骤 4

一旦签署了上面定义的数据使用 eth_signTypedData_v3 方法我们得到了签名和签名分割成其 r, s, 和 v 组件并将其发送到智能合约将使用 ercrecover 这些参数和数据哈希恢复签名者的公钥。

用示例解释以太坊 EIP-712:如何提高链下消息签名的可用性?拆分签名

步骤 5

编写智能合约。

就像我们定义了包含 EIPdomain 和要签名的数据的 JS 代码一样,智能合约也需要两个变量来表示每个 EIPdomain 的散列数据和我们的数据 (在本例中是设置数据)。

用示例解释以太坊 EIP-712:如何提高链下消息签名的可用性?使用 ercrecover

在 UI 端,我们对数据进行签名,并将 r、s 和 v 发送给智能合约。

上面的代码做了两件事,首先它散列数据并生成它们的散列。接下来,它使用该数据的散列 (在 SC 中称为散列) 和签名,使用 ercrecover 方法生成签名者的公钥。

上面显示的数据的两个 kecak 哈希值应该类似于在 out JS 代码中定义的数据结构。如果两者不同,则无法恢复签名者的地址。

用示例解释以太坊 EIP-712:如何提高链下消息签名的可用性?签名数据的结构

步骤 6

将 infura 中的助记符添加到 truffle-config.js 文件 (第 3 行),并指定部署者的地址 (第 18 行)。上面的例子使用了 rinkeby testnet,但是任何测试都可以使用,并查看 truffle 文档来部署到其他测试网。

然后部署合同。部署后复制 simplestorage 的地址,替换为 verifyingContract 下 app.js 第 76 行的地址。

用示例解释以太坊 EIP-712:如何提高链下消息签名的可用性?部署代码片段

步骤 7

进入 client 目录,运行 npm run start 启动 react 应用。

按下「Press to sign」按钮,然后在元掩码弹出的签名请求上签名。接下来,确认交易以设置智能合约上的值。 (责任编辑:admin)

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