Vitalik :以太坊的账户抽象之路|以太坊

发布日期:2022-06-28 12:22:24

  注:原文作者是以太坊联合创始人“ Vita♬lik Buteri૜n

 ◘ 转¡载自 金色财经‘

¸  账户抽象允许我们使用智Ο能合约逻辑来指定交易的效果,以及费用支付和验证逻辑‏。这带来了许多重要的安全好处,例如多重签名和智能恢复钱包,能够在不更换钱包的情况下更换密钥以及量子安全性。

  许多帐户抽象的方法已在不同程度上被提出并得到了实施,参见:EIP-86、EI❄P-2938‌,以及两年前的这篇文章‌。今天,由于开发者们希望专注于合并与分片,这些 EIP 的开发陷入了僵局,而 ERC-4337‌ 这种不需要 任何共识更改的™替代方案已经取得了很大进展。

  ERC-4337 尝试通过额外的协议手段实现和 EIP-2938 相同的事情。用户需要发送称为用户操作(user operations)的链੎外φ消息,这些消息由区块提议者(proposer)或为区块提议者生成 bundles 的构建者(bΨuilder)批量收集并打包成单笔交易。提议者或构建者负责过滤操作以确保他们只接受支付费用的操作。用户操作有一个单独的 mempool 存储池,连接到这个存储池的节点会进行 ERC-4337 特定的验证,以确保用户操作在转发之前能够支付费用。

  ERC-43§37 作为一个纯自−愿的 ERC 可ⓞ以做很多事情。然而,在一些关键领域,它比真正的协议内解决方案更弱:

  而实ઐ现最佳效果的一条现实途径,是在短期内开始大ⓛ力支持 ERC-4337,然后随着时间的推移添加 EIP 来弥补其弱点。这并不一定需要大家专门承诺遵守 ERC-4337。相反,可以将τ协议内支持设计为更通用,并支持 ERC-4337 及其替代方案和改进。

  &#25b3;在这里,我将列出其中的一些 EIP,并说明它们જ可以按什«么顺序实施。

  为了让现有的 EOA 钱包升级到 ïERC-4337 钱包,我们可以制作一个 EIP,允许 EOA 执行设置其合约代码的操作。一旦 EOA 做到了这一点,这ਜ਼种转变就不可逆转。从那时起,该帐户将仅用作智能合约钱包。幸运的是,由于 ERC-4337 帐户是 DELEGATECALL 代理,因此如果需要,以后可以将钱包转换为与其他 ERC 兼容的੩智能合约。

  关于如何实施此ી升级过程ખ௄有一些提案:

♬  ▨1、“replace cⓦode” 交易类型

  这还没有作为࠹正式∝的 EIP 引入,但方法很简单♬:添加一个新的 EIP-2718‌ 交易类型,只需将帐户码替换为 calldata。

  2、A∗UTH_‾UνSURP (EIP-5003)

  EIP-5003©‌ 是 EIP-3074‌(AUTHAUTHCALL)的扩展提案,它引入了新的 AUTHUSURP 操作码。如果使用 EIP-3074 机制∝,EOâA 地址 A 已授权另一个地址 B 代表它行事,则 AUTHUSURP 允许 B 设置 A 的代码。

  这种方法比“repàlace cod૦e”路线更复杂,只有当我们打算采用 EIP-3074 时Ê,这才有意义。

  在更长远的未来,我们可能希望进行强制转换,以简化协议,并使合约成为唯一的帐户类型,从协议中取消 ECDSA。一种可能的方法是添加一个覆盖规则,从某个区☏&#261c;块开始,没有 code 的账户被视为具有特定标准化“ERC-4337 υEOA 钱包” code 的账户。

ૌ  这可以通过“pokingò”过程来完成,其中任何源自 EOA 的交易都将其Ο转换,并且任何触及具有非零 nonce 的 EOA 交易都会将其转换。也可以一次性通过整个状态来完成。

 Ǝ ERC-4337 钱包面临更高的 gas 成本(基本 ERC-4337 操作约 42000 gas,而基本常规交易需Ó要 21000 gas),原因如ਊ下:

  1、需要支付大量的单个存储读/写成本,在 E&OA 的情况下,这Ξ些成本会捆绑到一笔 21000 gas 的付款中:

  (1)编辑∫包含 pubkey+nonce (~5000) 的存储Þ slotÑ;

  (2)用户操作调用数据成本(约ર 4500,通过压缩可减少到Ι约 25▧00);

 × (3)ECRECOVER (~ⓕ3Ι000);

૎ Ω (4)首次访问钱包本身 (~2⇑600)

  (5)®Š首次访问收款人账👽户 (~2600)

  (6)将 ETીH 转入收款人账户 (👽è~9000)

  ⇐(7ⓒ)编±辑存储以支付费用(~5000)

 ઺ (8)访问包含代理 (~2૝100) 的存储 slot,然后访问代理本身 (~2600Υ);

  2、除了上述存储读/写成本之外,合约还需要执行 “◯业务逻辑”(解包 UserOperation、对其&#266a;进行哈希、洗牌变量等)

  3、需要↑消耗 g¶as 来支付日志费˜用(EOA 不发布日志);

  4、一次性合约创建成本(约 32000 &#25bd;gas⊕,加上代理中每个 code byte 200 gas,再加上设置代理地址的 20000 gasα)

  其中很多问•题将在 Verkle 树 witness gas cost EIP‌ 以及 write gas cost reform EIP‌ 中自动解决,以更精简的系统取代大量存储成本。例如,pubkey 和 nonce 可以存储在 slot 0…63 中,这将访问઻它们的成本降低到 1000 以下。用户在转移 ETH 和支付费用时支付的费用会更少∑,因为目标账户和接收账户只需要被首次访问一次。

  还有更多ਲ਼的 EIP 可以帮æ助我们实现简ⓚ化。例如:

  这是一个需§૦要更多研究的领域½。

  这是一个长期的问题,因为只有启用了完全的协议提议者/构建者(proposer/builder)分离方案后,crLists 才真正适∞用。挑战在于,我们希望提议者能够识别“值得”包含的用户操作(即他们支付足够的费用),以便协ⓖ议可以迫使它们被包含在下一个有空间的区块中。੕

  这要求在协议中明确“验证”和“执行”的概念。对于用户操作,必须有一种已定义的方法来验证该操作,以及有一种已定义ટ的方法来执行该操作,这样如果某个操作被验证,则执行该操作的尝试将是保证支付费用的,除非被读取的状态在验证期间—被修改。这些操作લ可以通过嵌入 ABI 方法来实现,如果实现了 EOF EIP,也可以通过添加专用的 EOF 部分来实现。

  幸运的是,这不需⊂要我们把 ERC-4337 当作一个最终标准,而是纳入 ERC-4337 所支持的一个较弱<概念¢,其他在很大程度上不同的 ERC 也可以轻松支持它。

  原因是,ERC-4337 和 EIધP-2938 的复杂性很大程度上ਰ与解决更强的 DoS 抗性问૊题有关:不可能使一个操作取消数百个其他操作,因为这将允许廉价地对 mempool 进行垃圾交易攻击。这需要对帐户验证可访问的内容施加限制。在这里,我们可以做一些更简单的事情:只记录在验证过程中触摸了哪些状态对象,如果这些状态对象中的任何一个被编辑,则不需要包含。

  这使得个人账户可以在审查抵制和灵活性之间选择自己的权衡。在极端情况下,如果账户愿意,可以通过 Uniswap 在验证期间支付费用,但由于任何人都可以发送影&#25b3;响 Uniswap 状℘态的交易,因此此类账户实际上没有抗审查保证ਮ。

 ખ crList 设计的大致轮廓如«下:◈

  ERC-੝4337 的剩余复杂性将仅用于 mempool 安全。ⓝ原则上,可以有多个Ÿ相互竞争的 ERC 以不同的方式实现该目标,只要它们都遵循相同的验证和执行标准。

  这↔种方ÿ法的一个缺点是它与签名聚合不完全兼容(正如 ERC-4337 试图做的那样):因为协议不“理解”聚合方案,它不能强制聚合,恶意构建者可能¥纳入未聚合的操作,并迫使发送者为其支付全部 gas。但这种不便可以说是适度的。

24小时滚动播报最新的财经资讯和视频,更多粉丝福利扫描二维码关注(sinafiૌnanceχ†)

એ新浪财经意见反馈留言ⓡ板ς

੟All Rights Reser૎ved 新浪公司 ¨版权所有

关于

发表评论

邮箱地址不会被公开。 必填项已用*标注