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

HTT:如何实现广义的元交易(Meta Transaction)

作者:

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

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny熊

在合约内启用元交易是一个强大的补充。要求用户持有ETH来支付Gas一直以来都是而且仍然是新用户进入的最大挑战之一。如果只是简单的点击,谁知道现在会有多少人在使用以太坊?

但有时,解决方案可以在你的合约中加入元交易能力。实现起来可能比你想象的要容易。

MetaXKCD

什么是元交易?

元交易是一个普通的以太坊交易,它包含另一个交易,即实际交易。实际交易由用户签署,然后发送给运营商,用户不需要Gas和区块链交互。而是由运营商支付费用签署交易,提交给区块链。

合约确保在实际交易上有一个有效的签名,然后执行它。

概述

如果我们想在合约中支持广义的元交易,可以通过几个简单的步骤完成。从高层次上讲,有两个步骤:

第1步:验证元交易的签名。按照EIP-712标准和ecrecover创建一个哈希值来完成:

马斯克回应查理芒格关于加密货币言论的推文:我们可能会死,但无论如何都值得一试:2月17日消息,马斯克回应一条关于芒格最新的批评加密货币言论的推文,加密货币应该被禁止,并称加密货币就像“性病”一样令人不齿。马斯克评论称,“2009年,我曾和芒格共进午餐,他向整个餐桌的人说特斯拉将如何失败。这让我很难过,但我告诉他,我同意所有这些理由,我们可能会死,但无论如何都值得一试。[2022/2/17 9:57:26]

boolisValidSignature=ecrecover(hash(transaction),v,r,s)==transaction

结构化交易哈希

我们还需要在所有这些数据上计算一个哈希值。这将用于签名schema和防止同一交易的重复执行。关于这方面的细节,请看最后的签名解释。

这是交易schema的哈希值:

EIP712_TRANSACTION_SCHEMA_HASH=keccak256(abi

通过hash所有相关的值,我们可以确保只有原用户签名的交易才会成功执行。例如,即使运营商只是改变了expirationTimeSeconds中的1秒,它也不能成功执行。

CFTC技术团队正尝试了解应如何处理DeFi:美国商品期货交易委员会(CFTC)的技术咨询委员会正在尝试了解应如何处理DeFi。该委员会周一主持了一场演讲,题为”DeFi的增长和监管挑战”,演讲者是法学教授Aaron Wright和律师Gary DeWaal。Wright总结了DeFi的优势,即通过自动化多个相关流程,可以为更多的人提供成本更低的服务。此外,演讲者提及DeFi具有潜在风险,如高技术准入壁垒等。对于“如果DeFi平台非法运作,当局应该追究谁的责任”,DeWaal表示,这是一个难以逾越的法律障碍。次要责任可能会威胁到使用或参与DeFi协议的广泛人群。(cointelegraph)[2020/12/15 15:12:05]

这只是哈希值的第一部分,要了解包括安全签名要求在内的全部细节,请阅读下面关于签名的部分。

设置正确的msg

function_getCurrentContextAddress()privateviewreturns(address){returncurrentContextAddress==address(0)?msg

张春泉:区块链等如何与行业深度融合将是工业互联网发展关键要素:曙光云计算集团副总裁、中国科学院智慧城市产业联盟副秘书长张春泉表示,目前工业互联网发展呈现出新特征,一是在云计算技术架构支撑下,企业之间正从技术、产品和供应链的竞争逐步演进成为平台化的生态体系竞争。二是以工业互联网为支撑,助力企业迈向网络化、智能化的新阶段,构建数字化的工业生态和数字化的商业服务生态。三是新一轮的IT技术加速行业的深度融合,比如说标识解析、区块链等技术如何与行业深度融合,将是这一时期工业互联网发展的关键要素。(经济参考报)[2020/4/30]

你在合约中使用msg

将额外的信息放入我们的哈希值中,因此,一个已签署的交易只能准确地用于该合约与给定的链Id。所有的细节,请查看EIP或我之前关于ERC20-Permit的文章。

好了,现在我们有了完整的交易哈希值和用户的签名。我们可以通过一个辅助工具提取byte32值来获得三个值r、s、v,这三个值是签名中的椭圆曲线签名值。uint8的v值只需要一个简单的转换。

使用ecrecover与给定的签名和交易哈希,可计算出一个签名者地址。如果这个地址与transaction

动态 | 南非税务署正研究如何识别逃税的加密货币交易者:据CCN报道,南非税务机关南非税务署(SARS)正在调查识别逃税的加密货币交易员的方法。该机构专员Mark Kingon最近在约翰内斯堡的内部审计协会会议上说,该机构正在研究如何发现不符合要求的加密货币交易员,以调查任何未能从投资中申报利润的情况。[2018/8/21]

function_readBytes32(bytesmemoryb,uint256index)privatepurereturns(bytes32result){require(b

这就是常规的签名方案。如果你需要用户签署他自己的交易,它就能完美地工作。

但如果你想让智能合约创建有效的签名呢?

高级签名方案

一个更高级的使用场景是让智能合约签署元交易,但想象一下,用户把他的资金放在一个多签名的智能合约里面。这对于某些钱包来说已经很常见了。这个用户不能用EIP-712方案签署交易来创建一个有效的v、r、s签名。

这就是EIP-1271的作用,它允许智能合约来验证签名。标准本身没有说明合约如何做到这一点。唯一的定义是函数签名,其定义是:

金色财经独家整理 贸易战对比特币走势影响如何?贸易战避险,比特币“效果不错”:

今日凌晨,中美史上最大贸易战打响,全球股市重挫,数字资产比特币走势如何再被讨论。重温早在3月2日Brian Kelly在CNBC的关于贸易战的言论:贸易战将加强美元贬值、物价上涨的预期,由于普遍担忧通胀,人们愿意投资比特币这样的“新黄金”、 “硬资产”(避险),“在贸易战中,比特币效果不错”。

Brian Kelly的观点发表于300亿美元贸易战规模预测下,而今600万“变本加厉”。中国已于今晨展开“反击”,外媒也普遍预测美国为长期输家。股市下跌将支撑黄金,金价在昨日由于加息和贸易战担忧下收于两周最高点,而比特币为何反而下跌?据CNBC称:比特币未守住9000美元关口或因日本对加密数字货币加强监管力度的政策可能。金色财经认为,由于政策目前仍为影响比特币的主要因素,在最晚今年7月份国际监管措施出台、政策逐步趋稳后,数字货币价格将逐渐与黄金涨跌保持相似的变动。[2018/3/23]

functionisValidSignature(bytes32hash,bytesmemorysignature)publicviewreturns(bytes4);

其中有效签名的返回值为0x1626ba7e。如何实现签名逻辑则取决于智能合约开发者。

那么,我们怎样才能验证这样的签名呢?

你可以在下边看到一个实现的例子。使用staticcall,我们可以确保在调用过程中没有进一步的状态修改发生。如果结果成功并且有一个有效的returnData长度,我们可以检查返回值是否符合0x1626ba7e。

function_staticCallEIP1271Wallet(addressverifyingContractAddress,bytesmemorydata,bytesmemorysignature)privateviewreturns(bool){bytesmemorycallData=abi

你可能想允许更多的签名方法,比如预签名或拥有可以代表用户签名的运营商。请看0x这里中的现有类型,以获得一些灵感。

自己实现

到目前为止,我们已经看到了所有实现的关键部分,这应该让你对如何实现它有一个好的启发。我还建议你看一下:

0x元交易的实现

OpenzeppelinEIP-712支持

实现签名部分的npmeip-712库

OpenzeppelinEIP-712库仍然是一个草案,但对链ID可能改变的分叉情况有额外支持。也可以看看0x代码,本博文中的很多实现都来自于此。

本翻译由CellNetwork赞助支持。

来源:https://soliditydeveloper.com/meta-transactions

参考资料

登链翻译计划:https://github.com/lbc-team/Pioneer

翻译小组:https://learnblockchain.cn/people/412

Tiny熊:https://learnblockchain.cn/people/15

EIP-712:https://eips.ethereum.org/EIPS/eip-712

EIP-712:https://eips.ethereum.org/EIPS/eip-712

ERC20-Permit:https://learnblockchain.cn/article/1790

EIP-1271:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md

这是非常关键的,见之前的0xbug:https://samczsun.com/the-0x-vulnerability-explained/

这里:https://0x.org/docs/guides/v3-specification#signature-types

0x元交易的实现:https://github.com/0xProject/0x-monorepo/blob/development/contracts/exchange/contracts/hide/MixinTransactions.sol

OpenzeppelinEIP-712支持:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/drafts/EIP712.sol

eip-712库:https://github.com/Mrtenz/eip-712

CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain

免责声明:作为区块链信息平台,本站所发布文章仅代表作者个人观点,与链闻ChainNews立场无关。文章内的信息、意见等均仅供参考,并非作为或被视为实际投资建议。

本文来源于非小号媒体平台:

登链社区

现已在非小号资讯平台发布105篇作品,

非小号开放平台欢迎币圈作者入驻

入驻指南:

/apply_guide/

本文网址:

/news/10155700.html

免责声明:

1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险

2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

巨鲸的资金涌向哪里,哪里就是热点!

标签:HTTTPSIONTRAhttps://etherscan.iotps币行情1MillionNFTseternalcontract

Filecoin热门资讯
AND:高过现实房价,看似水中捞月的虚拟土地真的值得一掷千金吗?

文?|Nancy?编辑|Tong出品|PANews你能想象到吗?虚拟世界的一块土地的售价竟然堪比一线城市.

1900/1/1 0:00:00
SHI:ShibaSwap安全吗?DeFi Safety报告其安全评分仅为3%

尽管以狗狗为主题的去中心化交易所ShibaSwap很快取得了成功,但有人警告称,该DEX的流动性提供者正在把资金投入一个安全性有问题的不透明协议.

1900/1/1 0:00:00
ART:ARTI/USDT 7月12日上线大币网(Dcoin)公告

亲爱的大币网(Dcoin)用户:ARTI将于7月12日上线大币网(Dcoin),具体时间安排如下.

1900/1/1 0:00:00
以太坊:以太坊已经是王者了,为何还要大费周章继续升级到2.0?

这是白话区块链的第1370期原创?作者|?CionSeight出品|白话区块链6月24日,以太坊测试网开启了伦敦升级,一天内就在ETH2.0上质押了10万枚以太坊,价值约2亿美元.

1900/1/1 0:00:00
YTA:交易所即将要洗牌了么?

16July,2021时事分析:1.7月16日,中国香港证监会需明确指出,币安集团旗下的任何实体均未获得发牌或注册以在香港进行“受规管活动”.

1900/1/1 0:00:00
UNC:关于WBF即将上线FISU联盟公链的公告

尊敬的用户:WBF即将在主板区上线FISU/USDT交易对,具体时间以官方公告为准。项目简介:FISU是全球首家基于区块链的运动鞋生态联盟公链,它专注于把区块链防伪溯源技术应用到运动鞋领域,旨在.

1900/1/1 0:00:00