EIP-712是一种更高级、更安全的交易签名方法。我们可以在UniswapV2的Periphery合约中看到EIP-712的实现。但对于EIP-712却很难被我们普通人所理解,本文就是根据一个示例来具体体验EIP-712,以达到对其的更好理解。在GitHub中有许多文章和示例解释和展示了如何使用EIP-712,但在理解它作为一个整体是如何工作的以及前端代码和智能合约是如何关联的方面有很多困难。这是EIP712的一个示例(不是解释)。先决条件和使用的版本。
Solidity基础知识npm7.19.1节点16.2.0Metamask9.8.4truffle5.4.0
EIP-712
EIP-712是一种更高级、更安全的交易签名方法。使用该标准不仅可以签署交易并且可以验证签名,而且可以将数据与签名一起传递到智能合约中,并且可以根据该数据验证签名以了解签名者是否是实际发送该签名的人要在交易中调用的数据。
EIP-712提出了数据的标准结构和从结构化消息生成散列的定义过程。然后使用此散列生成签名。通过这种方式,为发送交易生成的签名与为验证身份或任何其他目的生成的签名之间就有了明显的区别。EIP-712草案将签名方案背后的动机表述为:
稳定币crvUSD科普创新清算机制LLAMMA,可在抵押品价格下跌时逐步替换为稳定币:1月17日消息,Curve官方科普其稳定币crvUSD创新的清算机制LLAMMA,解释了LLAMMA通过AMM的特性进行针对债务人更友善的清算方式,让抵押品在价格下跌时逐渐转移成稳定币,让原本要清偿的债务有一定程度的稳定币可以偿还,同时在价格回稳时再逐渐把稳定币换回抵押品,而不是直接的触发清算导致债务人的亏损。
此前报道,2022年11月23日,去中心化交易平台CurveFinance开发者发布Curve即将推出的去中心化Stablecoin“crvUSD”的官方代码和白皮书。[2023/1/17 11:17:13]
提高链上使用的链下消息签名的可用性。我们看到越来越多的人采用链下消息签名,因为它节省了gas,减少了区块链上的交易数量。
EIP-712是类型化结构化数据的哈希和签名的标准,而不仅仅是字节字符串。它包括一个
编码函数正确性的理论框架,与solid结构相似并兼容的结构化数据规范,安全哈希算法用于这些结构的实例,在可签名消息集中安全包含这些实例,一个可扩展的域分离机制,新的RPC调用eth_signTypedData,EVM中哈希算法的优化实现。EIP-712的实现可以在UniswapV2的Periphery合约中看到,它通过许可移除流动性,最终调用UniswapV2Core中的方法来完成这一操作。
火币推出《一分钟读懂DeFi》系列科普视频:据官方消息,8月24日,火币推出《一分钟读懂DeFi》系列科普视频,并与微博财经合作冠名播出,布道DeFi认知,助力行业发展《一分钟读懂DeFi》是由火币成长学院打造的业内首个系统全面讲解DeFi的系列科普动画,继推出《区块链100问》后的再续佳作。《一分钟读懂DeFi》系列动画对DeFi的发展进行系统梳理,适合想要由浅入深、全面系统了解区块链DeFi的人们轻松了解DeFi。目前视频已由火币网官方微博发布。[2020/8/24]
前端的签名被传递给Periphery中的方法,签名被用来代表Core中使用该方法的用户批准Router合约。
示例代码
我们的示例将使用EIP-721提案用数据(地址、storedData的值和截止日期)签署交易,这些数据用于更改合约中变量的值。
如果签名和散列给出了签署人的地址,并且没有超过截止日期,则更改storedData的值。
这是一个无用的例子,但理解了它将确保您可以在其他地方使用该标准。正确使用EIP-712是创建一个ERC20许可证,就像Uniswap团队所做的那样。
动态 | 区块链技术入选科普杂志《科学美国人》2019十大突破性技术榜单:据新浪网今日新闻报道,美国科普杂志《科学美国人》公布 2019 十大突破性技术榜单。区块链技术因在保障食品安全中的作用而上榜。 入选榜单具体原因:区块链技术的发展应用将显著改善食品污染源数据追踪的困境。利用区块链云端系统,食品制造商可以依次在计算机储存各类过程的信息。[2019/9/29]
步骤1
继续克隆truffle的reactbox。
我们将根据需要简单地调整和添加代码,以使EIP-712正常工作。
步骤2
数据是EIP-712中最关键的部分。这些要签名的数据必须符合预定义的格式。它必须有一个EIP712Domain和要签名的数据(在我们的示例中设置)。两者的组合将被签名并发送给智能合约进行验证。
在EIP-712下签名的每个数据必须有一个EIP712Domain和另一个数据。这两者的结构可以是任何东西,但必须在JS代码和SC代码上相同。
动态 | 浙江卫视节目科普支付宝区块链防伪溯源产品:昨日,在浙江卫视播出的科普综艺栏目《智造将来》现场,支付宝首次展示了支付宝区块链防伪溯源产品,以接地气的方式公开向大众展示区块链在生活中的应用。[2019/3/4]
当使用该提案时,EIP712Domain的结构是一个被广泛接受的标准。
EIP-712数据标准
EIP712Domain有一些参数,这些参数指定在哪个网络和哪个特定合约上将用于验证签名。另一份具有相同代码的合同将无法验证该签名。
步骤3
声音 | 火星人朋友圈科普RAM:火星人在朋友圈发文称,“什么是RAM?简单来说就是EOS这个国家的土地,所有的经济行为都离不开土地。只要EOS的BP们能投票形成一个稳定的供给预期,并且不改变目前的Bancor算法,那么RAM后续的价格有可能会像北上广深的房价走势。房价下跌不行,房价过快上涨也不行,EOS的生态越来越像某国了,真有意思。”[2018/7/6]
让我们添加一个按钮,当单击该按钮时,将弹出元掩码,使用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以查看所反映的变化。
source:https://medium.com/coinmonks/eip712-a-full-stack-example-e12185b03d54
巴比特讯,IOG首席执行官CharlesHoskinson在Twitter上展示了Cardano生态系统在过去三个月中的增长。3月份,NFT首次以“CardanoKidz”的形式在Cardano主网上推出.
1900/1/1 0:00:00——?前言—— 我们已经了解到分布式系统一般通过状态复制机原理来实现一致性。其核心思想是系统中所有副本运行着相同的状态机,只要所有副本都以相同的初识状态开始,并基于相同的初识状态执行一组相同顺序的操作,那么所有的状态最终会收敛一致,即.
1900/1/1 0:00:00据Cointelegraoph8月17日消息,澳大利亚知名加密货币影响者AlexSaunders再次受到追随者抨击.
1900/1/1 0:00:00原标题:《奢侈时尚品牌Burberry发布首个NFT系列》根据官方公告,奢侈时尚品牌Burberry与MythicalGames合作推出了其首个NFT系列,被称为“B系列”的数字NFT将限量发行.
1900/1/1 0:00:00据俄罗斯媒体TheBell报道,近日,俄罗斯逮捕了一家名为Finiko公司的联合创始人KirillDoronin,Finiko允许用户投资比特币而获得Finiko的原生代币收益,并设置了推广奖励.
1900/1/1 0:00:00链集市?·让区块链落地更简单 《区块链行业观察》专栏·第40?篇作者丨SaniAbdul-Jabbar 图片丨来源于网络 编者注:原报告来自SaniAbdul-Jabbar福布斯委员会成员,福布斯商业理事会成员.
1900/1/1 0:00:00