月亮链 月亮链
Ctrl+D收藏月亮链
首页 > 火必APP > 正文

TPS:如何实现广义的元交易(Meta Transaction)_CACT币

作者:

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

译文出自:登链翻译计划

译者:翻译小组

校对:Tiny熊

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

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

MetaXKCD

什么是元交易?

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

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

概述

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

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

美国财政部正在研究如何使用数字美元来保护隐私:金色财经报道,负责金融机构的助理部长Graham Steele表示,美国财政部一直在研究如何使潜在的数字美元的零售交易尽可能保持私密和匿名,尽管他说美国还没有决定是否推进中央银行数字货币(CBDC)的发展。

然而,Steele也指出了零售业CBDC可能存在的风险,特别是运行的危险。最近的美国银行业动荡表明,\"使存款流动的技术只会越来越快,\"这增加了高速、恐慌性的资金流动的危险。斯蒂尔说,一个由财政部领导的小组正在研究建立美国中央银行数据中心的可能性,\"该小组正在评估与全球金融领导地位、国家安全、隐私、非法金融和金融包容性有关的政策目标。[2023/6/14 21:34:44]

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

结构化交易哈希

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

墨西哥官员会见Samson Mow讨论墨西哥如何采用Bitcoin:金色财经报道,Bitcoin Magazine在社交媒体上发文表示,墨西哥参议员兼财政部委员会主席会见Samson Mow讨论墨西哥如何采用Bitcoin。[2023/4/30 14:35:25]

这是交易schema的哈希值:

EIP712_TRANSACTION_SCHEMA_HASH=keccak256(abi

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

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

设置正确的msg

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

Polychain Capital实习生展示如何使用100美元对CheapETH进行51%攻击:风险投资公司Polychain Capital的18岁实习生Anish Agnihotri展示了51%攻击的工作方式,以达到教育目的。Agnihotri选择了CheapETH来进行实验。为了发动攻击,Agnihotri租用了能够每秒执行14.4亿哈希的挖矿设备。这样一来,他就可以占据该网络哈希率的72%左右。此外,他还租用了虚拟机来运行区块链。总费用不到100美元。(The Block)[2021/5/18 22:12:59]

你在合约中使用msg

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

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

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

动态 | 各国代表在FATF开会讨论如何监管虚拟资产和虚拟资产服务提供商:金色财经报道,据FATF官网消息,1月9日,各国主管开会讨论了如何监督和管理虚拟资产和虚拟资产服务提供商(VASP)。自金融行动特别工作组(FATF)在2019年6月敲定这些新措施以来,这次会议是主管们首次有机会讨论如何实施这些新措施。 论坛讨论了三个主要领域:1.迄今为止,从那些已经建立VASP监督制度并已经开始监督VASP的国家吸取的经验教训。2.起草VASP法律法规时的常见问题。3.管理者有效监管VASP所需的工具、技能、程序和技术。这次会议确定了需要采取进一步行动的若干领域。这些问题将在FATF全体会议和将于2020年5月举行的监督机构论坛的会议上进一步讨论。据此前报道,2019年6月22日,FATF官网发布《基于风险的角度:监管数字资产和数字资产服务商的章程指南》,该指南将帮助各国和虚拟资产服务提供商了解其反和反恐融资义务,并有效实施FATF适用于该行业的要求。[2020/1/11]

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

比特币共识大会圆桌讨论有关政府如何使用加密技术:今日比特币共识大会召开,在有关政府如何使用加密技术的圆桌讨论环节,德勤高级经理Wendy Henry表示,美国正着眼于能够实现现代化的技术。这些技术例如区块链技术,实际上可以作为连接的组织,人们必须弄清关于如何使用区块链技术。linux基金会首席营销官Jamie E. Smith表示,区块链技术并非将房子烧毁一样的革命,而是提供政府目前已经提供了的服务的更好版本。[2018/5/15]

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

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

高级签名方案

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

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

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.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场

上一篇:

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

标签:TPSHTTIONACTtps币行情htt币局huionecoinCACT币

火必APP热门资讯
BIT:BitMart上线Smooth Love Potion (SLP)_BITMOON

亲爱的BitMart用户:BitMart将于2021年7月14日上线代币SmoothLovePotion(SLP)。届时将开通SLP/USDT交易对.

1900/1/1 0:00:00
Gate.io投票上币空投福利第165期—CoFiX(COFIX),10,000美元COFIX空投福利_/T

2021年7月13日12:00—7月20日12:00我们将开启CoFiX超级空投福利,$10,000美元COFIX等你来拿!新用户请点击注册Gate.io并参与活动.

1900/1/1 0:00:00
AND:关于百万“刮刮乐”活动重新开放上线的公告_DAF

亲爱的PandaFe熊猫用户:PandaFe活动系统全新升级完成,百万“刮刮乐”活动于2021年7月13日强势回归,奖励丰厚惊喜多多,欢迎广大新老用户踊跃参与.

1900/1/1 0:00:00
BTC:每日行情解读 | 本周迎GBTC单日最大解锁,加密市场临近变盘_BKX

加密市场本周末或将迎重大变盘,目前有三大信号:1.灰度GBTC将于7月17日迎来最大单日解锁数量;2.重要中期趋势线MA65逐渐下移,周末时候将迎技术变盘信号;3.BTC巨鲸地址数持续未变.

1900/1/1 0:00:00
WEIRD:华东政法大学教授:以虚拟货币为名实施电信网络属于涉众型犯罪_WEI

据澎湃新闻7月12日消息,华东政法大学金融监管与刑事治理研究中心主任、博士生导师、教授毛玲玲今日在以“涉虚拟货币相关犯罪法律适用问题”为主题论坛上表示,对以虚拟财产或虚拟货币为对象的犯罪.

1900/1/1 0:00:00
智能链:币安智能链生态加速计划公布,6家项目获得首批资金支持_DeFi Firefly

2020年10月14日–全球领先的区块链生态系统币安,今日正式公布币安智能链生态加速计划支持的首批项目名单.

1900/1/1 0:00:00