# 深入解读以太坊账户抽象赛道的过去与未来## 前言本文分为两大部分:上半部分从2015年的首个账户抽象(AA)提案出发,系统梳理了目前为止的EIP提案主要内容,回顾AA历史提案的发展历程,并对各方案进行综合评价。下半部分重点对比了EIP4337提出后面临的市场低迷反馈,深入分析即将纳入以太坊下一版本升级的EIP7702。这一提案一旦合并,将全方位改变链上应用形态。EIP-7702具有划时代意义,让我们深入了解其细节。## 1. 账户抽象的背景### 1.1 账户抽象的意义定位以太坊创始人Vitalik在2023年底更新ETH发展路线图时,对账户抽象的设定并未改变。当前主流模式正从EIP-4337,步入下一阶段的自愿转换EOA账户。在EIP4337推出一年多后(2023年3月1日在丹佛WalletCon上正式宣布),该方案得到用户广泛认可但未被广泛使用。在这种矛盾的市场环境下,EIP-7702的进度被大幅提前,已确定将在下一次升级中合并。### 1.2 账户抽象的市场现状 经过一年半发展,EIP4337在主流链上的账户数仅1200万,其中以太坊主网上活跃地址仅6,764个。相比之下,以太坊主网独立地址数已达2.7亿。可以说EIP4337在主网上几乎没有实质性发展。然而,这并不影响AA的本质价值。EIP4337的设计注定了它难以解决主网的向前兼容性问题。随着各类L2原生支持AA,EIP4337在L2上获得爆发式增长,其中Base和Polygon链的7月月活分别达到100万和300万。因此,EIP4337的设计并非错误,它有很多优点。当前现状源于主网与L2之间的差异,它们需要各自适合的解决方案。## 2. 什么是账户抽象?账户抽象本质上解决的是产权分离问题。以太坊虚拟机(EVM)架构中有两种账户:外部账户(EOA)和合约账户(Contract Account)。在外部账户中,所有权和签名权由同一实体持有。持有私钥的人不仅拥有账户的"所有权",还有权"签名转移所有资产"。这是由以太坊账户交易结构决定的。以太坊的标准交易结构中实际上没有From字段,资金转账的具体消费地址是通过VRS参数(用户签名)反向解析得出的。这种设计导致了当前EOA地址的产权合并困境。而EIP4337的核心效果是在交易字段中增加Sender Address字段,从而实现私钥与被操作地址的分离。产权分离的重要性在于解决外部账户(EOA)设计带来的诸多问题:1. 私钥难以保护:丢失私钥意味着失去所有资产。2. 签名算法单一:原生协议只能使用ECDSA签名和验签算法。3. 签名权限过高:无原生多重签名支持,单个签名即可执行任意操作。4. 交易手续费只能用ETH支付,不支持批量交易。5. 交易隐私容易泄露:一对一交易易于分析账户持有者信息。这些限制使普通用户难以使用以太坊:- 用户必须持有ETH并承担价格波动风险。- 用户需要处理复杂的Gas费用逻辑。- 钱包或应用的产品优化效果有限。解决之道在于实现账户抽象,将所有权(Owner)和签名权(Signer)解耦,从而逐步解决上述问题。历史上提出了多种方案,最终汇聚为两种主要路线。## 3. AA历史提案脉络梳理问题的解决思路看似有很多EIP提案,但归根结底只有两种核心思路。每个未被通过的EIP所考虑的问题都汇聚成了现有方案的突破点。### 3.1 第一种路线:将EOA地址转变为CA地址早在2015年11月15日,Vitalik就在EIP-101中提出以合约作为账户的新结构。主要变化包括:- 将地址改为只有代码和存储空间- 改变手续费支付方式,支持ERC20代币支付 - 通过预编译合约将原生代币改为类ERC20代币- 将交易字段精简为to、startgas、data和code这一方案可以带来诸多优势:1. 交易可使用更多加密算法,由地址内部代码指定验签方法2. 具备抗量子攻击特性,因代码可升级3. 让以太币具备与ERC20合约一致的功能,如代扣授权4. 提升账户自定义空间,兼容社交恢复、SBT支持、密钥找回等但由于变革过于激进,对当时的交易哈希冲突和安全性考虑不周,该方案一直搁置。不过,其中的许多理念成为后续EIP4337和EIP7702的核心功能。后续还有一系列EIP试图完善这一思路:EIP-859:主链账户抽象(2018-01-30)- 解决代码部署问题- 提出PAYGAS操作码,作为交易参数中验证部分与执行部分的分隔符EIP-7702:设置EOA账户代码(2024-05-07)- 由Vitalik提出,作为EIP-3074的替代方案- 已确定将在即将到来的ETH Prague/Electra硬分叉中纳入### 3.2 第二种路线:让EOA地址驱动CA地址EIP-3074:增加AUTH和AUTHCALL操作码(2020-10-15)- 在EVM中加入两个新操作码,允许EOA授权合约代替其身份调用其他合约EIP-4337:用交易内存池实现账户抽象(2021-09-29)- 受MEV启发设计,可完全避免共识层协议更改- 提出新的事务对象UserOperation,用户将其发送到内存池- 由bundlers从矿工维度批量打包交付合约执行交易EIP-5189:通过背书人操作抽象账户(2022-06-29)- 优化EIP4337逻辑- 通过建立资金罚款背书机制(endorser)防止DoS攻击### 3.3 其他支持AA的提案EIP-2718:新交易类型的包装信封(2020-06-13)- 定义新的交易类型,作为未来新增交易类型的信封- 允许引入新交易类型时只需向后兼容,无需向前兼容EIP-3607:禁止EOA地址部署合约(2021-06-10)- 防止合约部署地址与EOA地址冲突- 禁止将代码部署到已是EOA地址的地址上### 3.4 如何理解账户抽象发展历程?转为CA后的主要价值体现在EIP-4337的实际效果:然而,EIP-4337的核心缺点是违背人性动机原则:- 许多Dapp尚未兼容,用户不愿使用CA地址- 使用CA可能增加交易成本- 过度依赖Dapp的兼容性这导致EIP-4337在以太坊主网上一直未能普及。降低成本是用户最关心的标准。要真正降低Gas费,就必须通过以太坊软分叉升级,修改Gas计算或操作码Gas消耗等模块。既然要进行软分叉,不如直接考虑EIP-7702。## 4. 全面解析EIP-7702### 4.1 EIP-7702简介EIP-7702通过新的交易类型,允许EOA在单笔交易中临时具备智能合约功能,从而支持批量交易、无Gas交易和自定义权限管理等,且无需引入新的EVM操作码。它使用户无需部署智能合约即可获得大部分AA能力,甚至可以提供第三方代用户发起交易的能力,只需签名授权信息而无需提供私钥。### 4.2 数据结构EIP-7702定义了新的交易类型0x04,其TransactionPayload是以下内容的RLP编码序列化结果:rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])其中新增的authorization_list对象存储签名者希望在其EOA中执行的代码。用户在签署交易的同时也签署要执行的合约代码。这是一个二维列表,可存放多个操作信息,实现批量操作。authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...]### 4.3 交易生命周期#### 4.3.1 验证阶段在执行交易开始时,对authorization_list中的每个元组进行以下步骤:1. 使用ecrecover从签名恢复签名者地址2. 验证链ID(防分叉链重放)3. 验证签名者代码是否为空或已委托4. 验证签名者nonce(防签名重放)5. 设置签名者代码为0xef0100 || address6. 增加签名者nonce7. 将签名者账户添加到已访问地址列表#### 4.3.2 执行操作阶段执行合约代码和操作指令时:- 从authorization_list的address字段指定地址加载代码- 在签名者账户上下文中执行- 合约代码存储在链上特定地址,而非直接包含在交易中- 操作指令和相关参数存储在交易负载的data字段### 4.4 EIP-7702的价值EIP-7702将对Web3钱包全链路产生变革,显著改善用户体验。EOA发起的普通交易也可执行多种合约逻辑,如批量转账。这会影响CeFi场景的交易鉴别和冲提归集手续费。它打破了多个既有定势:1. 账户余额不再仅因源自该账户的交易而减少2. 交易执行开始后EOA nonce不再只增加13. tx.origin和msg.sender两个比对的防护逻辑失效4. EOA可发出事件,影响链上事件识别监听5. EOA地址接收ERC20、721、1155等资产不再必然成功### 4.5 EIP-7702与EIP-4337对比EIP-7702优势:- Gas成本更低,无需经过entrypoint模块- 用户迁移成本更低,无需提前部署链上合约- 与EIP-4337相似,支持代码委托执行: - 完全委托:将某操作全部权限委托给特定地址 - 受保护委托:在委托过程中增加限制和保护措施EIP-7702缺点:- 需要软分叉升级,改动巨大,对链上生态影响广泛- 自由度高,难以审计,用户更需可靠钱包提供安全保护- 对原架构变化大,许多基础设施和不可改合约难以直接适配- 为EOA地址提供合约能力,但对应存储空间无法保留- 单独交易成本略高,增加Calldata部分- 接收者签署无接收功能代码可能导致资产发送DoS- 链上充提逻辑可能不一致- EOA能发出事件可能带来新问题## 5. 总结账户抽象目前被放在以太坊发展路线图的第六模块"修复一切"中。加快EIP-7702进度主要带来
以太坊账户抽象进化史:从EIP4337到EIP7702的革命性变革
深入解读以太坊账户抽象赛道的过去与未来
前言
本文分为两大部分:
上半部分从2015年的首个账户抽象(AA)提案出发,系统梳理了目前为止的EIP提案主要内容,回顾AA历史提案的发展历程,并对各方案进行综合评价。
下半部分重点对比了EIP4337提出后面临的市场低迷反馈,深入分析即将纳入以太坊下一版本升级的EIP7702。这一提案一旦合并,将全方位改变链上应用形态。
EIP-7702具有划时代意义,让我们深入了解其细节。
1. 账户抽象的背景
1.1 账户抽象的意义定位
以太坊创始人Vitalik在2023年底更新ETH发展路线图时,对账户抽象的设定并未改变。当前主流模式正从EIP-4337,步入下一阶段的自愿转换EOA账户。
在EIP4337推出一年多后(2023年3月1日在丹佛WalletCon上正式宣布),该方案得到用户广泛认可但未被广泛使用。在这种矛盾的市场环境下,EIP-7702的进度被大幅提前,已确定将在下一次升级中合并。
1.2 账户抽象的市场现状
经过一年半发展,EIP4337在主流链上的账户数仅1200万,其中以太坊主网上活跃地址仅6,764个。相比之下,以太坊主网独立地址数已达2.7亿。可以说EIP4337在主网上几乎没有实质性发展。
然而,这并不影响AA的本质价值。EIP4337的设计注定了它难以解决主网的向前兼容性问题。随着各类L2原生支持AA,EIP4337在L2上获得爆发式增长,其中Base和Polygon链的7月月活分别达到100万和300万。
因此,EIP4337的设计并非错误,它有很多优点。当前现状源于主网与L2之间的差异,它们需要各自适合的解决方案。
2. 什么是账户抽象?
账户抽象本质上解决的是产权分离问题。
以太坊虚拟机(EVM)架构中有两种账户:外部账户(EOA)和合约账户(Contract Account)。在外部账户中,所有权和签名权由同一实体持有。持有私钥的人不仅拥有账户的"所有权",还有权"签名转移所有资产"。
这是由以太坊账户交易结构决定的。以太坊的标准交易结构中实际上没有From字段,资金转账的具体消费地址是通过VRS参数(用户签名)反向解析得出的。
这种设计导致了当前EOA地址的产权合并困境。而EIP4337的核心效果是在交易字段中增加Sender Address字段,从而实现私钥与被操作地址的分离。
产权分离的重要性在于解决外部账户(EOA)设计带来的诸多问题:
这些限制使普通用户难以使用以太坊:
解决之道在于实现账户抽象,将所有权(Owner)和签名权(Signer)解耦,从而逐步解决上述问题。
历史上提出了多种方案,最终汇聚为两种主要路线。
3. AA历史提案脉络梳理
问题的解决思路看似有很多EIP提案,但归根结底只有两种核心思路。每个未被通过的EIP所考虑的问题都汇聚成了现有方案的突破点。
3.1 第一种路线:将EOA地址转变为CA地址
早在2015年11月15日,Vitalik就在EIP-101中提出以合约作为账户的新结构。主要变化包括:
这一方案可以带来诸多优势:
但由于变革过于激进,对当时的交易哈希冲突和安全性考虑不周,该方案一直搁置。不过,其中的许多理念成为后续EIP4337和EIP7702的核心功能。
后续还有一系列EIP试图完善这一思路:
EIP-859:主链账户抽象(2018-01-30)
EIP-7702:设置EOA账户代码(2024-05-07)
3.2 第二种路线:让EOA地址驱动CA地址
EIP-3074:增加AUTH和AUTHCALL操作码(2020-10-15)
EIP-4337:用交易内存池实现账户抽象(2021-09-29)
EIP-5189:通过背书人操作抽象账户(2022-06-29)
3.3 其他支持AA的提案
EIP-2718:新交易类型的包装信封(2020-06-13)
EIP-3607:禁止EOA地址部署合约(2021-06-10)
3.4 如何理解账户抽象发展历程?
转为CA后的主要价值体现在EIP-4337的实际效果:
然而,EIP-4337的核心缺点是违背人性动机原则:
这导致EIP-4337在以太坊主网上一直未能普及。
降低成本是用户最关心的标准。要真正降低Gas费,就必须通过以太坊软分叉升级,修改Gas计算或操作码Gas消耗等模块。既然要进行软分叉,不如直接考虑EIP-7702。
4. 全面解析EIP-7702
4.1 EIP-7702简介
EIP-7702通过新的交易类型,允许EOA在单笔交易中临时具备智能合约功能,从而支持批量交易、无Gas交易和自定义权限管理等,且无需引入新的EVM操作码。
它使用户无需部署智能合约即可获得大部分AA能力,甚至可以提供第三方代用户发起交易的能力,只需签名授权信息而无需提供私钥。
4.2 数据结构
EIP-7702定义了新的交易类型0x04,其TransactionPayload是以下内容的RLP编码序列化结果:
rlp([chain_id, nonce, max_priority_fee_per_gas, max_fee_per_gas, gas_limit, destination, value, data, access_list, authorization_list, signature_y_parity, signature_r, signature_s])
其中新增的authorization_list对象存储签名者希望在其EOA中执行的代码。用户在签署交易的同时也签署要执行的合约代码。这是一个二维列表,可存放多个操作信息,实现批量操作。
authorization_list = [[chain_id, address, nonce, y_parity, r, s], ...]
4.3 交易生命周期
4.3.1 验证阶段
在执行交易开始时,对authorization_list中的每个元组进行以下步骤:
4.3.2 执行操作阶段
执行合约代码和操作指令时:
4.4 EIP-7702的价值
EIP-7702将对Web3钱包全链路产生变革,显著改善用户体验。EOA发起的普通交易也可执行多种合约逻辑,如批量转账。这会影响CeFi场景的交易鉴别和冲提归集手续费。
它打破了多个既有定势:
4.5 EIP-7702与EIP-4337对比
EIP-7702优势:
EIP-7702缺点:
5. 总结
账户抽象目前被放在以太坊发展路线图的第六模块"修复一切"中。加快EIP-7702进度主要带来