在近期以太坊创始人Vitalik发布的最新以太坊路线图的第六阶段Splurge中,最新纳入的ERC-4337成为了目前账户抽象(Account Abstraction)的主要实现方案。
账号为什么重要?因为任何web2用户进入web3的时候,遇到的第一层阻力便是保存私钥或者助记词,还会面对私钥可能丢失而未知,面对钓鱼网站的盗签而无法判断,甚至上亿美元的链桥被盗也因私钥问题而发生,因此实现更好的以太坊账户体系,一直以来都是以太坊网络对于冲击千万量级用户的瓶颈问题
而如果你想要对以太坊以及区块链底层基础设施的迭代进程进入深度了解,你也必须要对账户抽象这一完整概念原理有着绝对深刻的理解,而账户抽象方案的演变史这七年的迭代之路,本份研报将用近万字为你全景呈现,强烈建议准备好咖啡用心阅读。
本文将尝试从2015年起的首个AA提案出发,系统性地整理目前为止所有EIP提案主要内容并综合评价各方案的优缺点,回顾历程,很多提案已经早已处于停滞甚至仅仅是草稿的阶段,为抽丝剥茧探索逻辑脉络,
本文将10个EIP提案依据其优化的模板环节来划分出三大路径:改造链上交易类型、改造链上主体对象、改造上链交易打包过程型
由于内容涉及非常广泛且涉及以太坊原理层知识较多,笔者会更多分析其方案的逻辑而非技术的细节,也将尽力陈诉表达和翻译原意,如有疏漏欢迎评论区留言讨论。
1、背景
最近以太坊创始人V神更新了 ETH 发展路线图,其中第六阶段Splurge的目标是:修复一切(fix everything else)。
在以太坊虚拟机(EVM)中很多东西需要进行优化,比如说 VDF将会让链上产生真正的随机数,而这次路线图中最重要的是账户抽象AA的核心提案EIP-4337成为实现路径。
这些优化的核心是可通过社交网络可直接恢复钱包、项目方帮用户垫付 Gas 费、支持USDT等作为Gas支付方式等功能。就是这些功能将助力以太坊打破千万用户的核心关卡,没有这些改变,以太坊是绝对无法突破用户习惯的门槛。
1.1、为什么现有账户体系是千万用户的瓶颈?
目前在以太坊中有两种账户,分别为外部账户(EOA) 和合约账户(Contract Account)。外部账户的所有权和签名权理论上是同一个体单位持有的。
简单来讲,持有私钥的人不只拥有这个账户的「所有权」,同时还有权利「签名转移所有资产」。
当前以太坊上所有权和签名权是一体的,这样的外部账户设计可能会衍伸出一些值得讨论的问题:
-
私钥难保护:用户失去私钥(遗失、黑客攻击)意味着失去所有资产。
-
签名算法少:原生协议在验证交易上只能使用ECDSA 签名和验签算法。
-
签名权限高:无原生多签(多签只能通过智能合约实现协作),单签即可执行任意操作。
-
交易手续费只能通过ETH支付,并不支持批量交易。
-
交易隐私泄露:一对一交易容易分析账户持有者的隐私信息。
其次单纯的合约钱包也有一定问题:
-
对合约钱包的操作必须由EOA发起(实质是调用合约),每笔交易将多消耗21000Gas。
(当前以太坊交易的验证方式是固定的,只有持有了有效的 ECDSA 签名、Nonce 值和足够的账户余额,一笔交易才算有效)。
-
需要EOA有足够的ETH来支付Gas(管理两个账户),或者依靠Relayer支付Gas(导致中心化)。
上诉的约束让普通用户很难使用以太坊:
-
首先,使用以太坊上的任何应用,用户都必须持有以太(并承担以太价格波动的风险)。
-
其次,用户需要处理复杂的费用逻辑,Gas price、Gas limit、事务阻塞这些概念对用户来说过于复杂。
-
最后,虽然许多区块链钱包或应用试图通过产品优化提高用户体验,但它们的实际效果甚微。
破局之道在于实现账户抽象,将所有权(Owner)和签名权(Signer)解耦(Decoupling),从而才能逐个解决上述问题,那为什么可以解决、将会用怎样的方式来实现解耦合,就让我们回顾这7年AA历史来一同探索吧。
1.2、抽象账户的根本目的
从Web2迈入Web3的人很难去接受高风险的私钥管理方法,所以他们想当然地认为以太坊账户抽象多年的实验是为了取消私钥,但是现在在去中心化的领域是不存在免费的信任,身份验证必须基于密码学证明,所以无论哪种提案都是需要管理某种私钥。虽然大家终究有自己管理私钥的束缚和责任,但是通过智能合约也有办法实现体验上的折中。
而实现体验上的折中,首要打破的就是目前账户权限的过于集中,即是要实现所有权(Owner)和签名权(Signer)的解耦(decouple)。
1.3、抽象账户的历史路径
整体的改造方式按针对的对象或者环节可以分成3种大方向
-
改造链上交易类型(EIP-101、EIP-86、EIP-859、EIP-2718)
-
改造链上主体对象(EIP-2938、EIP-3074、EIP-3607、EIP-5003)
-
改造上链交易打包过程(EIP-4337、EIP-5189)
回溯达成这样的目标的历程
以太坊一开始是通过EIP-86、EIP-101、EIP-859等增加新的交易类型来区分外部账户和合约账户,但是他们发现这样的改动实在太庞大了,其复杂性不亚于合并这样的共识算法的转移。一旦以太坊更改交易类型,就配套地要修改底层签名验签算法,这既要考虑矿工是否接受新的类型帮助其上链,且收益不能低于普通交易(否则矿工没有动机去做验证),还要考虑账户地址管理、冲突、往前往后兼容等等问题。
而在这七年的研究过程中,大量信息和想法并未被放弃而是被继承起来继续发扬。
-
通过EIP-86/208:合约地址需要与外部账户进行区分,所以合约地址要能定制、要能防碰撞,所以有了EIP-1014和EIP-2470的落地。
-
通过EIP-859:首次出现了交易中附带合约初始化代码,如果没有合约地址就现场部署一个,成为EIP-4337的基础功能。
-
通过EIP-2718:让未来的以太坊可以兼容任何新提出的交易类型而无需太照顾往前兼容性的历史包袱。
-
通过EIP-2938:明确总结了合约账户的各类优势,社交恢复、密钥轮换、自定义身份验证算法、元交易等等,让合约账户慢慢深入人心。
最终共识集中在两条路径上即:
-
让现行的外部账户有智能合约的功能(EIP-3074系列)。
-
让现行的智能合约有外部账户的功能(EIP-4337系列)。
如今EIP-4337纳入路线图也宣告这两条路径中以太坊最终做出了决定。
2、下一代账户的最佳形态是什么?
空间有多大?可以用数字来说话:
-
外部账户账户数:以太坊总交易中出现的 from 地址去重数后约为1.5 亿。
-
SCW/A账户数:使用头部两个产品 Gnosis Safe 和 Argent 的数据合计为 15万。
笔者认为后续的用户将会接触的账户形态是两段式的,区分链下密钥管理与链上账户主体。
在链下密钥管理侧,采用体验最佳的MPC(多方安全计算)+TSS(门限签名方案) ,尤其是2/2,2/3都会是兼容吻合监管需求和便捷使用使用需求的参数方案。
-
在2/2模式下,项目方持有1,用户持有1,在任何一方不同意的情况下至少资金不会丢失,适用于未来需要监管的场景(团队金库私钥管理等)。
-
在2/3模式下,项目方持有1,用户持有2,用户可以在两台终端上分别管理分片密钥,日常本地+项目方持有的分片结合签名,即使项目方跑路,用户也可自己恢复。
在链上账户主体侧,会采用可升级的智能合约模式,这时会有多种功能点进行展开:
-
自定义签名算法:如Multisig Verification、Schnorr sigs、BLS sigs、Quantum-resistant sigs (eg Lamport, Winternitz),效果上是从密码学即天然支持多签、门限等。
-
多笔交易进行打包:矿工可以签名聚合多笔交易的数据,只需确保都能执行成功即可。这效果是在交易量足够多就可以拉低平均的 Gas 消耗。
-
社交恢复更换私钥:如果某天一个人的微信被盗号,即使全部钱被转走,里面的好友列表和聊天记录都可恢复,也依旧能使用原账号因为 SBT 灵魂代币不会丢失。
-
可升级与去中心化:合约本身是可设计升级、可以更改所有权的,在链上的账户主体也自然是无人托管且完全去中心化的。
-
元交易与多币支付:用户即可在合约钱包里用其他 Token 的转账来支付矿工 Gas,从而无需先充值原生代币来做手续费。
-
抗 DoS与量子攻击:防恶意矿工阻塞系统以及密钥爆破。
-
针对套利者的优点:实现账户抽象之后,由于可以在账户权限验证阶段进行价格判断,套利者无需为失败的套利行为进行付费,链上也不会包含失败的套利事务,可以有效提高链的可扩展性
但是AA通过EIP-4337实现,也有不少风险问题:
-
节点的验证过程会更加复杂,这样会给节点增加很多无用的计算负担,从而抗DoS攻击的风险提升。
-
因为合约的调度,所以Gas消费会比EOA账号直接签名交易更高,需要用到类似NFT聚合器一样的降低原理。
-
以太坊账户抽象(AA)七年之路相关EIP特性概览图
未尽内容:
账户抽象(AA)相关 EIP 提案解读
-
EIP-101:货币与加密抽象——2015/11/15
-
EIP-86/208:交易来源和签名的抽象——2017/02/10
-
EIP-859:主链账户抽象(AA)——2018/01/30
-
EIP-2718:新交易类型的包装信封——2020/06/13
-
EIP-2938:账户抽象(AA)标准——2020-10-15
-
EIP-3074:增加 AUTH 和 AUTHCALL 操作码——2020/10/15
-
EIP-3607:让外部账户地址不可部署合约——2021/06/10
-
EIP-4337:用交易内存池实现账户抽象——2021/09/29
-
EIP-5003:使用 AUTHUSURP 将代码插入到外部账户——2022/02/26
-
EIP-5189:通过背书来操作账户抽象——2022/06/29
Q&A:
1、现在有哪些钱包是遵循EIP-4337实现的?
2、以太坊为什么选择EIP-4337而不是EIP-3074?
3、账户抽象中抽象的到底是什么?
4、如果有足够好的MPC+TSS方案,不需要助记词,安全性也有保障,那还需要合约钱包吗?
5、自定义签名算法的好处是什么?
6、EIP-4337仍然依赖于EOA账户签名,真的能给用户体验带来质的飞跃吗?
7、EIP-4337下一步的改进方向有哪些?