以太坊钱包可能很快就要迎来重大升级?读懂EIP-3074

以太坊钱包可能很快就要迎来重大升级。一旦升级完成,普通账户(EOA)即可发送批量事务、限期事务、无序事务等。

我与两位同事 @_SamWilsn_ 和 @adietrichs 正在研究如何改善以太坊的交互体验。经过多次迭代后,我们提出了 EIP 3074:操作码 AUTH 和 AUTHCALL。

要想使用这两个操作码,外部账户需要在链下签署一个消息,并将该消息发送给中继者,再由中继者将签名和调用数据发送至一个链上合约(称为 “调用者”)。调用者合约会先使用操作码 AUTH 来验证签名,再使用操作码 AUTHCALL 中继外部账户的调用。

AUTHCALL 与普通调用只有一个区别:AUTHCALL 将调用者(例如,消息发送方)设为使用操作码 AUTH 恢复的外部地址。这样一来,用户不使用以太币也可与以太坊交互。换言之,他们的事务是由中继者 “赞助” 的。

你可能会觉得这个机制似曾相识。事实上,这与元事务(meta-transaction)的运作方式差不多。但是这里要强调一下,元事务是不能随意设置消息发送方的。因此,合约必须明确支持元事务。EIP 3074 旨在淘汰元事务,降低合约的复杂性。

在深入阐述运作原理之前,我们先来介绍一下我们想要构建什么。我们想要构建一个让普通用户无需使用以太币即可以免信任方式发送事务的机制。这里的关键词是 “免信任”,即,用户不会授予中继者任何可能会被利用的特权。

OpenSea发布收藏卡更新、收藏页最佳报价等新功能:金色财经报道,据OpenSea官方社交媒体账号披露,OpenSea现已推出个人资料页面收藏卡更新、收藏页最佳报价(在NFT集合页面上显示最高报价和其他顶级指标)、以及活动Mint价格(在活动源中显示 Polygon、Klaytn 和 以太坊铸币活动的价格)三项新功能。[2022/7/11 2:06:03]

EIP 3074 通过谨慎选择普通账户签名中包含的参数来创建免信任系统。用户签署 keccak(0x03 ++ invoker_address ++ commit_hash)。

“type byte” 是 EIP 2718 的常量字节,值为 0x03。这个字节的作用是避免与其它签名机制发生冲突,例如,EIP 2930 的访问列表事务、EIP 1559 的费用市场事务、EIP 191 的 0x19 签名消息等。

调用者地址将用户的调用与特定合约绑定。用户的签名只对调用者合约有效。因此,用户可以选择自己信任的调用者,就像是选择用来存放资产的智能合约钱包那样。

我们预期只会有少量调用者存在,因为如果调用者合约的实现出错,用户就有可能蒙受损失(请注意,调用者是自主选择加入的)。开发一个安全的调用者合约成本会很高,需要经过多方审计和静态证明。

美国众议院计划在今晚通过其1.9万亿美元的刺激计划:据CNBC消息,美国众议院计划在今天晚些时候通过其1.9万亿美元的新冠病救助计划,并将其发送给参议院。

此前消息,美国当选总统拜登公布1.9万亿美元的刺激计划,该计划包括向大多数美国人直接发放1400美元的救济金,每周400美元的失业补助,以及延长使数百万美国人有资格获得失业保险的项目。该计划还将发放200亿美元用于新冠病疫苗接种,500亿美元用于检测,3500亿美元用于州、地方和社区政府的救济。[2021/2/26 17:57:13]

不过这与如今的惯例没什么太大的不同。在存放巨额资金之前,智能合约钱包也应该经过全面的审计和证明。很多大型 DeFi 项目也是如此。

最后一个签名参数是 commit_hash(或者 commit)。这为调用者设计者带来了更大的灵活性,可以让他们开发出很多不同的方案。

这个 commit 限制调用者只能执行特定操作并创建特定的验证要求(validity requirement)来处理调用。用户可以信任调用者会遵循这一流程,因为他们可以在链上验证代码。这就是区块链的优点。

我们来看一个简单的案例。用户想要通过调用者发送一个调用。为了避免他们的调用被无限次中继,他们需要提供一个 nonce,另外还有其它不可更改的值。用户对这些值进行哈希计算得到 commit,并将该 commit 包含在签名消息内,以便合约使用操作码 AUTH 进行验证。

调用者会使用传入的值来重新生成 commit 哈希。这样一来,如果代付者(sponsor)改变了其中一个值,调用者计算得到的 commit 哈希会与外部账户签署的完全不同,导致 AUTH 恢复出一个垃圾地址,如下图所示:

希望你现在已经相信,调用者就像任何普通账户都可以使用的智能合约钱包。现在我们来看看如何使用 commit 来构建更有趣的方案。

通常情况下,“一个操作对应一个签名” 已经成了经验法则。这是一种比较简单的理解。签名是基于一个事务的哈希值创建的,为什么我们不将多个事务合并进行哈希计算呢?事实证明,EIP 3074 可以做到这点。

只要某个账户可以通过 AUTH 的验证,调用者就可以按该账户的要求做任意多次 AUTHCALL。这样做是没问题的,因为我们相信调用者会如实执行代码。我们可以设计将多个调用合并哈希成 commit 的方案。

在上图所示的方案中,调用者会将所有值(nonce1、nonce2 等)合并进行哈希,生成 commit。调用者将使用这个 commit 和用户签名来调用 AUTH。AUTH 会验证用户是否真的签署了这些参数。

然后,调用者会遍历每个调用并验证 nonce 和其它参数,然后将经过认证的调用数据(calldata)发送至被许可的地址。

在此基础上,我们还可以构建更多方案。例如,假设你增加一个新的参数 “保质期”。该参数会与其它参数一起经过哈希得到 commit。另外,在验证过程中,调用者会验证expiration < block.number。现在,外部账户已经可以使用限期交易了!

EIP 3074 将带来更多流畅的用户体验,同时不会引入额外的信任假设。如果你想要阅读 EIP 3074 的完整内容,请点击这个链接:https://eips.ethereum.org/EIPS/eip-3074

go-ethereum 的原型实现在此处维护:

https://github.com/quilt/go-ethereum/tree/eip-3074

我们正在与一些对该机制有兴趣的团队合作。如果你觉得这个机制有用的话,请告诉我们,让我们一起努力!欢迎大家提供对该提案的反馈,非常感谢!点击该链接,留下你的反馈:https://ethereum-magicians.org/t/eip-3074-auth-and-authcall-opcodes/4880/49。

最后,如果你对我们的工作感兴趣,我们的团队正在火热招聘中。我们致力于对以太坊核心协议进行中长期改进。如需了解更多信息,请直接私信我 @lightclients。

(完)

原文链接: https://twitter.com/lightclients/status/1371911245561917441作者: lightclients翻译&校对: 闵敏 & 阿剑

你可能还会喜欢:

账户抽象化(EIP-2938):为什么 & 如何做

以太坊元交易

以太坊中的账户、交易、Gas 和区块 Gas Limit

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链杂谈

USDC金色观察 | V神:UNI应成为预言代币

对于一个成功的DeFi生态系统,最重要的要素之一是拥有高度安全的价格预言机。算法稳定币,例如DAI, RAI, LQTY等,都依赖于这种预言机,任何类型的合成资产和抵押贷款都需要价格预言,许多其他类型的项目也是如此。就ERC-20代币而言,Uniswap确实为交易所交易价格提供了“预言”,但这不是真正意义的预言,因为它不提供任何非加密圈资产的价格。

币安下载山寨狂舞 马斯克倒戈 牛熊周期要开始转换了吗?

抛开迷雾,本轮牛市的驱动力依然是机构,山寨潮其实意义没那么大。 5月12日新浪微博的直播中,我们被问到最多的一个问题是:牛熊周期什么时候到来?而我们上一篇文章讨论的是,垃圾币横行是否代表了牛市行将就木? 5月13日V神的捐赠,本质上加强了MEME币的道德性,让它有了更多的故事,似乎并不一定是什么利空。

USDT狂人说:5月11日 或是变盘节点

狂人本着负责,专注,诚恳的态度用心写每一篇分析文章,特点鲜明,不做作,不浮夸! 本内容中的信息及数据来源于公开可获得资料,力求准确可靠,但对信息的准确性及完整性不做任何保证,本内容不构成投资建议,据此投资,责任自负。 狂人说 昨天美国公布了非农数据,就业人数增加了26.6万人,失业率6.1%,远低于预期。

Bitcoin技术真的中立吗?勿入深渊

在帮助信息网络犯罪活动罪的案件量激增的当下,技术人员正处在刑事犯罪的风口浪尖,一步踏错便是深不见底的万丈深渊,故分享真实案例一则,供读者学习,扫除知识盲区。 案件事实 2019年7月至10月,江某通过互联网联系A公司销售部经理即被告人卢某,提出订购虚拟币交易软件,并明确要求该交易软件须带后台操控价格走势的功能(俗称开后门)。

[0:0ms0-0:500ms