木星链 木星链
Ctrl+D收藏木星链
首页 > ICP > 正文

比特币:一个示例来解释EIP-712

作者:

时间:1900/1/1 0:00:00

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

摩根溪创始人:贝莱德申请的并非比特币ETF,而是一个信托:金色财经报道,摩根溪创始人Apompliano在社交媒体上发文称,贝莱德申请的并非比特币ETF,而是一个比特币信托,这些产品只是在技术上有所不同,尤其是在监管和批准方面,不过对于投资者而言最终的结果是相似的。最好的结果是真正的比特币现货ETF被SEC批准。但这不是ETF,不认为贝莱德在没有信心的情况下提交信托会被批准。这种发展有一些潜在的后果。GBTC可能被迫引入每日赎回来竞争。GBTC可能被迫削减费用。许多华尔街公司可能会推出快速跟进的产品来与贝莱德竞争,媒体的关注可能导致资金流入比特币。[2023/6/16 21:41:33]

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

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

韩国总统候选人:将设立一个类似FSS的虚拟资产监管部门:11月5日消息,韩国民主党总统候选人李在明在竞选承诺中表示,将设立一个类似金融监督院(FSS)的专门监管虚拟资产行业的政府部门,目的是检查加密市场中的不公平行为,例如价格操纵、交叉交易或黑客攻击,以更好地保护投资者。(Forkast)[2021/11/5 6:34:10]

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

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

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

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

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

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

新的RPC调用eth_signTypedData,

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

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

V神提出以太坊信标链第一个硬分叉提案“HF1”:以太坊创始人V神刚刚在推特上提出了以太坊信标链第一个硬分叉(暂定名为“HF1”)提案。V神称,HF1添加了轻客户端支持,简化了规范,提高了效率,并引入了惩罚性较小的不活动泄漏机制。[2021/2/16 19:51:07]

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

示例代码

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

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

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

步骤1

继续克隆truffle的reactbox。

声音 | 对冲基金经理:比特币价格到达历史最高点前,下一个山寨币季节不太可能发生:对冲基金经理、Blockroots联合创始人Cantering Clark在接受采访时表示,山寨币季节本质上是一群被比特币吸引而进入加密领域的新投资者。他们认为比特币非常昂贵,当时的看法是,更便宜的山寨币将成为未来的比特币。新投资者对市值和乘数效应相对无知,他们只是看到了更低的价格,并将更低的价格等同于更好的交易。比特币本质上是行业选择的资产,它已经成为加密的避风港。当比特币表现良好时,可以利用一些流动资金,但这种流动周期已开始松开并瓦解。负相关和正相关不再是投资者可以始终依赖的常规现象。比特币非常不稳定,它已经经历了所有可能的资产状况。比特币的价格并没有突破历史最高点,下一个山寨币季节不太可能发生,直到这个历史高点被打破。(Cointelegraph)[2019/9/5]

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

步骤2

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

现场 | 黄坤明:区块链落地应用还是一个非常早期的起步阶段:1月9日,2019首届海南GFIS国际金融科技创新峰会在海南海口盛大召开,会上进行以《跨境支付与区块链生态的发展》为题的圆桌论坛。唯物链运营总监黄坤明指出:传统的跨境支付本身就是与国家政策、法律法规相联系的。目前的区块链落地应用还是一个非常早期的起步阶段,但不代表未来的三五年时间还是这样的状态。我们可能看到基于区块链的交易等,Token会在其中起到重要作用。

区块链技术可以通过1.0、2.0、3.0版本迭代和节点机制变革而在DAPP领域产生巨大影响。区块链技术成熟和普及之后,我们再来谈跨境支付才是更合适的。[2019/1/9]

在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以查看所反映的变化。

标签:比特币区块链OMADOM比特币最新价格美元新浪财经魔兽币应用区块链吗tomatos币圈DOMO币

ICP热门资讯
SWAP:去中心化金融成为监管重地:如何将 DeFi 前端去中心化?

运行在区块链上的智能合约可以提供抗审查和持续运营的能力,但是用户在接入这些智能合约之前,如何确保前端体验也能提供同样的去中心化特性?上周.

1900/1/1 0:00:00
TLC:一文读懂跨链的相关技术分类和总结

最近看了看跨链相关的项目,总结一下跨链的相关技术。所谓“跨链”,一条链上的“跨链”语义能在另外链上正确执行。目前跨链项目主要实现在一个链上的资产映射到另外一条链上.

1900/1/1 0:00:00
亚马逊:亚马逊或将今年接受比特币支付

亚马逊内部一位匿名消息人士告诉伦敦商业报纸CityAM,亚马逊计划在2021年底之前接受比特币(BTC)支付.

1900/1/1 0:00:00
NFT:碎片化 NFT 研究报告:提高 NFT 流动性的探索和实践

顾名思义,非同质化代币是独特的数字资产。但问题也随之而来,每个NFTs的独特性使它们难以与其他资产进行交换,因此难以定价。下文将带你了解关于NFTs碎片化以及增加NFTs流动性的各种实践.

1900/1/1 0:00:00
BOB:科普:理解闪电网络:结算并关闭支付通道

闪电网络目前,Alice和Bob已经开通了一个双向支付通道,并分别往通道中存入了5btc。他们已经来回完成了两笔交易。在当前通道状态下,Alice和Bob可以通过终止通道各自取回5btc.

1900/1/1 0:00:00
数字人:国有银行数交会力推数字人民币

7月22至25日,2021中国国际数字和软件服务交易会在大连举行。中国工商银行、中国建设银行、中国农业银行等国有银行组团现身参展,组成数字人民币展区,通过各种场景和技术手段展示推广数字人民币的应.

1900/1/1 0:00:00