近期以太坊社群对未来将纳入Pectra升级的账户抽象提案EIP-3074有很多争论,包括Vitalik等人在内的反对方认为其对未来的兼容性存在疑虑,因此昨日Vitalik直接提出一个新的方案——EIP-7702。
背景知识:账户抽象
账户抽象:提升区块链用户体验
ERC-4337被视为终局但开发周期长
EIP-3074的载浮载沉
EIP-3074争议不断
EIP-3074争议点
Vitalik提出EIP-7702欲取代EIP-3074
以太坊未来发展可能纳入EIP-7702?
账户抽象(Account Abstraction, AA)是以太坊针对区块链互动过程中的用户体验改进方向,账户抽象是指将用户与区块链互动的方式优化,使操作变得更加容易与实用,期待可以借此迎来大规模采用。
到底账户抽象如何提升用户体验?举例来说:
批量交易:
允许同一用户在一个原子交易中进行多个操作。举例来说在去中心化交易所上,用户可以同时完成批准与交易。
赞助交易:
第三方账户可以代表交易账户支付交易燃料费用,可以用于项目对用户的补贴。
权限管理:
用户可以签署子密钥,并授予特定权限。例如用户可以使用给出某个ERC-20代币的使用权限但不包含ETH使用的权限,或是每日最高花费总额,或限定仅能与特定应用程序互动。
随着以太坊网络安全性与去中心化等重要议题逐渐获得解决,用户体验的提案因此近期渐渐被搬上台面讨论。包含EIP-2938、EIP-3074、EIP-4337等提案都是重点提案。
EIP-4337引入User Operations的概念,让智能合约钱包(smart contract wallet)可以自定义交易功能,例如赞助交易或是批量交易。
User Operations会进入替代内存池(alt mempool),后者是EIP-4337创造的一个新的内存池,以原有的一般交易与内存池分开。
EIP-4337运作架构
不过要实现ERC-4337甚至到可以大规模采用的光景,还需要很多的努力,包含基础设施的设计、用户钱包的手动更新等等。
EIP-3074预期加入两个新的操作码(opcode):AUTH和AUTHCALL,让EOA能通过这两个操作码授权合约(invokers)代替自身去调用外部其他合约与互动。也就是让现行的EOA拥有智能合约功能的意思。
EIP-3074虽然早在三年前被提出,但是后来出现EIP-4337这个「最终」的完美解决方案,让前者淡出社群视野。
近期因为用户体验的重要性逐渐增加,且其他公链的竞争逐渐加快,但是若要实现EIP-4337并且顺利在以太坊主网络上运作,仍需要许多的开发工作与资源。以太坊社群则认为应该先实现EIP-3074。
(链抽象是什么?比起账户抽象更全面提升用户体验)
EIP-3074可以使外部拥有账户(EOA)能像智能合约钱包一样运作,过程无需部署额外的合约,用户也不需要手动升级,以太坊社群因此将之纳入下一次的硬分叉升级之中。
虽然目前已经被安排至Pectra升级,但其实EIP-3074的争议其实不小,甚至Vitalik也公开反对。
Vitalik指出EIP-3074存在未来更新兼容性问题:
引入的两个操作码AUTH和AUTHCALL在Vitalik认为终局的账户抽象提案EIP-4337是没有且不需要的。
EIP-3074呼叫者合约的生态系统的发展,可能会与智能合约钱包生态系统分开,导致技术分散。
另外也有社群成员Yoav Weiss指出EIP-3074需要完全信任invokers合约,增加信任风险,也需要因此延后抗审查的Inclusion Lists机制。
Vitalik认为EIP-3074可以视为是EOA的扩展而非必要,如果对于以太坊未来发展有负面影响那干脆不要。
支持EIP-3074的一方表示:“延后或删除EIP-3074的人,往往认为以太坊用户体验虽然不理想但目前还不错。”如果没办法在下次Pectra更新中有意义的提升以太坊的用户体验,可能会落后其他竞争者。
EIP-3074最大的争议点其实就是「EIP-4337是否为以太坊最适合的终局?」如果答案是肯定的,那么就该反对EIP-3074;如果答案是否定的则该支持。
不过上述这样的论述过于狭隘,该问题无法解决社群的争议,Vitalik深知此道理而不仅是打打嘴皮子还直接实现出新的方案,这才让EIP-3074的争议得以继续讨论下去。
EIP-7702的设计会借由调用EOA,取代掉EIP-3074所需要使用的两个操作码AUTH和AUTHCALL:
AUTH将会被替换为调用verify,设定authorized[msg.sender, …]
AUTHCALL将被替换为调用execute,验证authorized[msg.sender, …]并执行。
该提案内容表示此两个小小的改动,将可以避免EIP-3074为协议后续更新带来潜在的负面影响。
EIP-7702的目的是实现EIP-3074的所有用例,而却没有这两个可能带来问题的opcode。
现在出现除了单纯支持与反对EIP-3074的第三种方案——EIP-7702,若其确实可以同时解决「以太坊需要快速有效的用户体验解决方案」与「不影响未来EIP-4337与其他协议发展的进程」,或许将会变成社群有共识的方向。
目前该提案仍在讨论中,或许可以期待下一次的以太坊ACDE会议掌握最新进展。
不管如何,以太坊社群确实仍在尝试以最好的方式进步,这点无庸置疑。
AA
EIP-3074
EIP-4337
EIP-7702
Vitalik
账户抽象