Vitalik 简述以太坊账户抽象之路:相关 EIP 实施顺序及优缺点

2022-06-30 10:53:19 - 市场资讯

  原文标题:《Vitalik:以太坊的账户抽象之路》 撰文:VitalikButerin

编译:隔夜的粥,DeFi之道  转载自金色财经

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

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

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

Vitalik 简述以太坊账户抽象之路:相关 EIP 实施顺序及优缺点

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

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

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

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

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

1、‘replacecode’交易类型

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

2、AUTH_USURP(EIP-5003)

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

这种方法比‘replacecode’路线更复杂,只有当我们打算采用EIP-3074时,这才有意义。

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

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

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

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

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

3、需要消耗gas来支付日志费用(EOA不发布日志);

4、一次性合约创建成本(约32000gas,加上代理中每个codebyte200gas,再加上设置代理地址的20000gas)

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

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

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

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

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

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

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

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

crList设计的大致轮廓如下:

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

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

可能的替代方案

Adaverse是一个Cardano生态系统加速器,汇集了企业家、战略家和导师,在非洲建立了最强大的基础。

今日热搜