“卷上加卷”:Rollup时代的账户抽象解决方案
在L2技术动态呈现“短期OP,长期ZK”之后,Vitalik的心思开始向账户抽象(Account Abstraction)技术倾斜,在本次以太坊波哥大开发者大会上,他也为支持账户抽象技术的钱包Soul wallet点赞,引得关注。
账户抽象可从源头减少交易的数据,再结合Rollup方案,可作为一体化的“数据瘦身”方案,大幅减少Gas Fee的消耗和使用,一个易用且便宜的以太坊网络将出现在世间。
10月3日,Vitalik补充EIP-4337账户抽象提案内容,增加了BLS签名算法的数据聚合部分,可以让构建者和批验证者聚合签名,以减少所广播至主网的数据。
并且,StarkNet也在新版本更新中提出有关账户抽象的详细设计。而困扰账户抽象的DoS危机,也随着更多的Zk系Rollup投入使用得到解决,ZK方案的安全性并未得到如同数据压缩特性相同的重视,这是以往长期被忽视的特点,有望在账户抽象路线之争上得到全方位展示。
由此,基本上拉开了ZK+AA的链上数据解决方案序幕,一个迥异于任何现存公链的分层解决方案雏形就此诞生,这将会为以太坊带来深远的影响。
思路转变:非共识层账户抽象
在本次的更新中,是通过EIP提案的方式来设计账户抽象模型,而在最初的设想中,本来是希望改变以太坊本身的账户地址设计,一统EOA账户和智能合约地址,这也是最初的以太坊账户地址设计方案。
在4337之前的提案中,如EIP-86/208、EIP-859以及EIP-2938等提案,这些提案有一些共同特点,基本上都是在基于以太坊主网进行改造,在以太坊L2方案未广泛得到采用的环境下,贸然对主网进行“伤筋动骨”般的操作风险过大,实际上将账户抽象的优先级置于L2之后。
这在工程上并不是最优解,但是秉持“又不是不能用”的原则,账户抽象真正落到实处需要等待L2解决方案,尤其是ZK路线的实用化。
本质上,账户抽象想要实现的功能,目前都可以通过EOA账户+智能合约的方式实现,并非影响到以太坊主网,社区只想要一种“改进”,而非推倒重来。
最终,ERC-4337得到了较为普遍的认同,不再对将作为共识层的L1主网进行改动,而是在其上赋能智能合约,以一种渐进的方式实现账户抽象。
智能合约:ERC-4337标准一统天下
如前文所述,以太坊上存在EOA外部账户地址与智能合约地址这两种地址类型,其中EOA控制着“人类”与以太坊的交互,比如说需要私钥、助记词、ETH(Gas Fee)等前提条件;而智能合约地址是预先写好的函数,在特定条件下执行特定任务。
两者互相配合,打造出最为丰富的以太坊生态,而助记词、钱包、私钥、智能合约等概念也深入人心,但其实这并非以太坊的最优解,维护两套地址类型会降低主网运行效率,比如需要额外开销去判断一个地址究竟属于何种地址类型,更不要说复杂的操作会需要昂贵的Gas Fee。
因此,从2015年开始便不断在寻求将二者合并,目前的4337提案是最为接近成功的一种方案设计,本质上而言,是用智能合约方案,或者赋予账户抽象更为高阶的“智能”来一统两者,而非在共识层层面修改主网,以在安全和效率之间求取平衡。
用户被期望发送称为用户操作(User Operations)的链外信息,这些操作被区块构建者收集并批量打包成一个批交易。构建者负责过滤这些操作,以确保他们只接受支付费用的操作。并有一个单独的Mempool用于用户操作,连接到这个Mempool的节点进行ERC-4337特定的验证,以确保用户操作在转发之前保证支付费用。
这样做的好处有如下几点:
•更为智能。智能合约的逻辑特性将为更复杂的操作提供可能性;
•更加安全。钱包可内置多签功能以及社交恢复功能,摆脱助记词。
•更加灵活。比如可以实现他人赞助交易,避免自身无ETH可支付Gas的窘境。
本质上,ERC-4337设计的账户抽象是将智能合约“下放”到普通账户上,将一些复杂的逻辑功能化,用户在前端只感受到更为便捷,而无需深刻了解内在逻辑。
但是,智能合约的逻辑复杂性也会带来额外的账户开销,因此才需要技术上持续优化,并配合Rollup方案达到整体提速降费的效果,两者一起构成后PoS时代的主力改进方向,优先度仅次于终极解决方案DankSharding。
天生一对:账户抽象和Rollup的契合点
在账户抽象投入使用之前,先总结下当下账户抽象和Rollup的特点,寻找到二者可以结合的契合之处:
- 账户抽象:保密、智能、通用,但是Gas Fee贵,贵是因为步骤多导致的数据多,刚好Zk-Rollup擅长减少数据;
- 功能丰富:钱包多签确保安全、权限分割便于治理,但是导致的逻辑也会更为复杂,安全漏洞会相应扩大;
- 还未爆发:Rollup还在前ZK时代,目前的账户抽象解决方案是以大规模L2实用化为设想前提,仍是一个预研的技术;
- 未来一致:L2逐步成型后,共识层将不再改动,智能合约会有更多用武之地,账户抽象的安全性也可得到保障。
账户抽象虽然可以提高地址的智能性,但是在目前并不适合直接推向用户,其高度的复杂性会直接推高Gas Fee以及降低安全性,以他人赞助交易为例,一旦机制出问题,会直接导致主网的运行危机。
而推高Gas Fee在提案中也有详细说明,这也是Vitalik本次补充ERC-4337的直接动因,理论上而言,一个账户抽象地址每一步都需要计算,无人工干预下需要更多计算资源来保证安全,交易需要包含以下一次性设置合约地址和设置代理地址成本。
传统的EOA外部账户地址则无需如此”复杂“的交易逻辑,其本身已经经由人工验证和以太坊主网设置完毕,可直接投入使用,账户交易Gas Fee约是账户抽象的1/2。
因此在更为廉价的解决方案投入使用之前,账户抽象的复杂性反而会拖累以太坊的运行速度,而这正是ZK-Rollup的机会,其更擅长以压缩后的数据呈现全局验证结果。
本次Vitalik更新的提案内容,其实是打通账户抽象和Rollup的数据接口,让L2解决方案也可以处理账户抽象产生的数据,其改进点在于,将只能分步骤实现的功能打包成批交易,高度接近于Rollup的思路,而依旧通过SNARK技术来确保交易的有效性。
可以设想一下,Rollup和账户抽象结合后,以太坊将呈现出数据通用,验证便捷,高度安全的特性,而无需对共识层进行改进的特性,会依赖于更为精细化的解决方案。
类似于多种Rollup解决方案,账户抽象也有机会产生生态爆发的可能,比如说目前EVM生态最大的智能合约多签钱包Gnosis-Safe,其技术护城河便不复存在,新一轮的叙事模型会促进更新的解决方案的出现。
而在Layer 2解决方案中,StarkNet也在尝试结合账户抽象功能,从设计之初就将其纳入其中,包括通过Entry Point合约规范的账户抽象模块,包括验证和执行分离、添加Nonce字段以在协议级别强制执行事务唯一性等。
并且,StarkNet会构造L2和L1直接的通信件,以更好的协调两者之间的状态通传机制,在压缩数据成本的前提下,账户抽象的优势才可能被发挥出来,更加智能和便宜。
结语
从2015年第一份实际上的账户抽象方案提出至今,已经过去7年有余,而在ZK-Rollup缓步推进的大背景下,真正实现账户抽象功能仍旧需要很长时间,但是正如同PoW到PoS的转型依然实现,以太坊正在按照自己的既定路线去发展。账户抽象作为和PoS、Layer 2、DankSharding等长期谋划的重大基础性功能,将会在PoS和Zk-rollup版Layer 2实现后得到更广泛的使用。
而随着越来越多的Rollup兼容账户抽象方案,我们也许在不远的未来就可以丢掉助记词,真正实现Web 2级别的使用体验,和Web 3的安全、隐私体验。