链资讯 链资讯
Ctrl+D收藏链资讯
首页 > 瑞波币 > 正文

Domain:一个示例来解释EIP-712_Trust Domains

作者:

时间:

EIP-712是一种更高级、更安全的交易签名方法。我们可以在UniswapV2的Periphery合约中看到EIP-712的实现。

但对于EIP-712却很难被我们普通人所理解,本文就是根据一个示例来具体体验EIP-712,以达到对其的更好理解。

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

Solidity基础知识

npm7.19.1

节点16.2.0

Metamask9.8.4

truffle5.4.0

EIP-712

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

BM:EOS需要一个社区论坛:3月3日消息,推特网友向BM提问称,为什么不像Cardano那样,为EOS社区创建一个讨论论坛?对此,BM回应称,同意,EOS需要一个,对B1而言赞助做这个是件好事。[2021/3/3 18:09:52]

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

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

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

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

声音 | 肖磊:区块链是下一个互联网+美元的超级系统,美国的对手只有中国:12月6日消息,今日肖磊在其微信公众号发文称,区块链是下一个互联网+美元的超级系统,美国的对手只有中国。

区块链这套系统,可以承载货币、法律、银行、契约、结算机构、国际协议等等多重角色,而不用担心它背后的系统的共识性、可靠性。

中国虽然有扩展性极强的移动支付网络,但美国已经逐步放行Facebook发行的基于区块链和美元的国际货币Libra,美国财政部长今日已明确表态,只要不用于资助恐怖活动,遵守银行保密和反规定,美国将不会反对Facebook创新数字货币。这将使得美元成为区块链的子系统,但Facebook属于美国,这也为美国在未来世界增强了一份竞争力。[2019/12/6]

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

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

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

声音 | 比特币钱包Xapo CEO:比特币是一个智力实验:据newsbtc报道,Xapo首席执行官Wences Casares声称比特币只不过是一个有趣的智力实验,它可能会失败或成功。即使它不起作用,Casares个人从加密中学到的信息也非常重要。[2018/10/30]

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

新的RPC调用eth_signTypedData,

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

EIP-712的实现可以在UniswapV2的Periphery合约中看到,它通过许可移除流动性,最终调用UniswapV2Core中的方法来完成这一操作。

前端的签名被传递给Periphery中的方法,签名被用来代表Core中使用该方法的用户批准Router合约。

示例代码

宝二爷:区块链真正的技术创新还没有,未来会有一个大产业链:近日,宝二爷在活动中表示,区块链的顶层第一是公链,第二是交易所,第三是矿池。在这三方面的竞争已经很激烈,未来应该有一个很大的产业链,就是做恒定货币。他认为,真正的技术创新还没有出现,必须经过理论验证和实际验证。[2018/5/29]

我们的示例将使用EIP-721提案用数据(地址、storedData的值和截止日期)签署交易,这些数据用于更改合约中变量的值。

如果签名和散列给出了签署人的地址,并且没有超过截止日期,则更改storedData的值。

这是一个无用的例子,但理解了它将确保您可以在其他地方使用该标准。正确使用EIP-712是创建一个ERC20许可证,就像Uniswap团队所做的那样。

步骤1

继续克隆truffle的reactbox。

BK资管公司创始人:加密货币时一个独立的世界:比特币多头、BK资管公司创始人Brian Kelly称,加密货币是一个独立的世界,它有自己的市场和组织结构。比特币只是成千上万种加密货币中最大的一个。仅仅投资比特币、认为这足以玩转加密货币市场的观点是错误的。Kelly称,不同的加密货币功能也不同,例如有的作为支付系统、有的用于存储等。在构建加密货币投资组合时应按不同功能和作用分散投资。[2018/3/1]

我们将根据需要简单地调整和添加代码,以使EIP-712正常工作。

步骤2

数据是EIP-712中最关键的部分。这些要签名的数据必须符合预定义的格式。它必须有一个EIP712Domain和要签名的数据(在我们的示例中设置)。两者的组合将被签名并发送给智能合约进行验证。

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

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

?EIP-712数据标准

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

步骤3

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

步骤4

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

拆分签名

步骤5

编写智能合约。

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

使用ercrecover

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

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

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

签名数据的结构

步骤6

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

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

部署代码片段

步骤7

进入client目录,运行npmrunstart启动react应用。

按下'Presstosign'按钮,然后在元掩码弹出的签名请求上签名。接下来,确认交易以设置智能合约上的值。

交易完成后,刷新webapp以查看所反映的变化。

标签:DomainMAIOMAMAINTrust DomainsMainstonnomad币重启Modulus Domains Service

瑞波币热门资讯
CBD:国际货币金融机构论坛 (OMFIF):CBDC系统应聚焦可编程支付_数字货币

具有可编程特性的CBDC或将彻底改变商业模式、加速经济发展,并引领世界走向一个更加数字化的未来。这一切都能够以安全的方式实现,无需触及货币本身,属于数字货币之上的分层功能.

CBD:隐私计算加区块链 助力数据可信治理实践_DFI

近年来,区块链技术应用和产业已经具备良好的发展基础,在防伪溯源、供应链管理、司法存证、政务数据共享、民生服务等领域涌现了一批有代表性的区块链应用.

CBD:浅谈FileCoin长线投资价值_CBD价格

近期小编关注非小号上热搜排名,FIL已经连续2周出现在热搜前三甲,但反观FIL价格从最高238U跌至最低40.10U.

以太坊:分析:以太坊难度炸弹与告别POW的具体时间是_CEB

以太坊的工作量证明机制是否将在2.0升级完成后退出历史舞台?这句话包含两个问题:一,以太坊PoW是否必须终结;二,终结是否发生在2.0升级完成之后。回答这两个问题首先需要理解分片的逻辑.

元宇宙:“元宇宙”爆红 巨头们加码添薪火_OBLOX价格

在一段时间里,“元宇宙”只停留在概念阶段。今年3月,Roblox在纽交所上市,不仅成为市值超400亿美元的“新贵”,还带火了“元宇宙”,被称为“元宇宙第一股”.

DEF:从三个维度分析DeFi连环清算问题的解决方案_POW

来自DeFi借贷协议的连环爆仓清算是DeFi世界最重大的系统性风险之一,由于过多的清算量以及市场流动性不足,每次市场行情剧烈变化之际都会引起市场的进一步动荡,不仅导致抵押借款人产生额外损失.