随着以太坊Deneb升级带来的重大变革,社区已将目光转向下一次硬分叉Pectra。为促进讨论,本文旨在梳理当前以太坊及其Rollup生态中账户抽象的发展现状,并探索清晰的前进路径。
本文将概述以太坊当前账户模型及其对交易有效性的影响,阐释账户抽象的核心概念与分析框架,重点评估EOA可编程性方案(包括EIP-5086、3074和7702),并探讨这些变革如何塑造未来的以太坊交易体验。
什么是账户抽象?
账户抽象旨在提升整个以太坊生态的用户与开发者体验。它不仅让链上操作更易用、更友好,还赋予开发者更强大的工具,以更具意义的方式服务用户。
根据实现机制的不同,账户抽象方案可分为三类:
1. EOA增强与可编程性
通过协议层改动,让外部拥有账户(EOA)重新定义其交易有效性规则中的执行逻辑部分。由于EOA通常由终端用户控制,此类方案将使用户对账户授权行为拥有更高控制权。
2. EOA转换与迁移
此类提案主张将EOA完全转换为合约账户(CA)。核心思路是合约账户已具备智能账户的大部分优势,因此无需过度复杂化系统,用户可直接使用合约账户作为主账户(通过智能合约钱包实现)。
3. 智能账户
这类设计允许EOA和CA通过完全重定义其有效性规则,成为“智能账户”。尽管早期提案如EIP-86和EIP-2938曾尝试在协议层实现智能账户,但因复杂度过高而未能推进。Vitalik在合并后重启讨论,ERC-4337作为可选智能账户标准被提出,类似MEV中的提议者-构建者分离(PBS)基础设施。
ERC-4337通过UserOperation结构让用户自定义账户逻辑与交易有效性规则,无需协议层支持即可享受智能账户的好处。然而,其复杂性仍是潜在故障点。为解决该问题,RIP-7560被起草为ERC-4337的协议内嵌版本,继承网络的抗女巫攻击机制而非依赖新规则集。
本文将聚焦EOA可编程性方案,评估相关EIP的优劣。系列后续文章将覆盖另两类账户抽象方案。
以太坊账户与交易基础
以太坊账户是以太币(ETH)持有实体,可发送交易。账户由42字符十六进制地址标识,作为状态树中的叶子节点,包含四个字段:
- nonce:线性计数器,防重放攻击
- balance:账户持有的ETH数量(以wei为单位)
- codeHash:账户EVM可执行代码的哈希值
- storageHash:账户存储根哈希,用于表示状态变量数据
基于这些字段,账户分为两类:
外部拥有账户(EOA)
- 由加密密钥对控制:私钥(64位十六进制字符)和公钥(通过ECDSA算法从私钥派生)
- codeHash和storageHash为空
- 地址由公钥Keccak-256哈希的后20字符加“0x”前缀生成
合约账户(CA)
- 由EOA部署的代码逻辑控制
- 无私钥,仅含公钥
- 地址由创建者地址和部署时nonce派生
交易机制
交易是账户发出的加密签名指令,引发网络状态变更。为确保无许可环境中的安全交互,交易必须遵循基于账户类型的有效性规则。
账户与交易有效性规则
EOA面向终端用户优化,易用性强,可自主发送交易,但必须遵循严格规则:
- 认证与授权:依赖ECDSA私钥
- nonce逻辑:顺序计数器,每nonce仅执行一笔交易
- Gas支付:必须由发送方结算
- 执行逻辑:仅支持三种交易类型:EOA间转账、合约部署、合约调用
合约账户则更具灵活性:
- 认证:非必要,交易为响应式
- 授权:取决于智能合约逻辑与可升级性
- Gas支付:通常由调用方处理
- 执行逻辑:支持多调用交易、原子交易等UX改进
简言之,EOA拥有完全自主性但可编程性有限;CA拥有高度可编程性但自主性受限。接下来我们将探讨这一设计选择带来的问题。
以太坊账户困境
EOA的局限性
- 易受量子攻击:ECDSA签名方案非抗量子计算
- 表达力不足:固定有效性规则限制交易批处理、原子性与委托
- 自给性差:必须自行支付Gas,且仅接受ETH作为Gas货币
CA的局限性
- 完全无自主性:仅能响应调用
- 逻辑人为错误风险:智能合约漏洞导致巨额资金损失
账户抽象时间线
账户抽象始终是以太坊路线图的重要组成部分。早期因复杂度推迟,合并后再次聚焦,现成为Pectra升级的核心议题。当前需求包括:
- 新账户标准需更具表达力且不损失自主性
- 桥接EOA与CA差距,保持与L2生态兼容
智能账户旨在结合EOA与CA的优势,允许账户自定义验证逻辑与执行逻辑。需区分:
- 智能账户:通过机制(如ERC-4337)替换网络强加的有效性规则
- 智能合约钱包:作为合约账户的接口提供商
交易有效性参数中,前四项(认证、授权、nonce逻辑、Gas支付)构成验证逻辑,最后一项为执行逻辑。
下文将聚焦第一类方案:EOA可编程性。
可编程EOA方案
EIP-5806:委托调用增强
该提案允许EOA对合约账户逻辑执行委托调用(delegatecall),从而在保持验证逻辑的同时借用CA的执行逻辑。它引入新EIP-2718兼容交易类型,并限制某些操作码(如SSTORE、CREATE)以防止状态破坏。
应用场景:
- 条件交易执行
- 交易批处理
- 多调用交易(如批准并调用)
批评意见:
- 创新性有限,基于现有EIP-7
- 仅实现执行抽象,其他有效性规则仍由网络定义
EIP-3074:授权委托
该提案允许EOA将验证逻辑委托给专用合约(调用器),通过两个新操作码AUTH和AUTHCALL实现。调用器负责管理授权逻辑,支持Gas赞助和非ce并行等功能。
应用场景:
- 非ce并行处理
- Gas赞助交易
- 执行逻辑抽象
批评意见:
- 调用器中心化风险:仅少数经审计的调用器被广泛采用
- 前向兼容性问题:固化ECDSA方案,与ERC-4337生态存在兼容挑战
- ECDSA方案不可撤销性:私钥丢失仍导致资产完全损失
EIP-7702:代码指针设置
作为EIP-3074的优化版,该提案通过SET_CODE_TX_TYPE交易让EOA临时“借用”合约代码,成为智能账户。它引入授权列表,支持更灵活的委托机制。
应用场景:
- 执行抽象
- 条件访问策略(如权限降级)
- 跨链智能合约部署
批评意见:
- 缺乏向后兼容性:打破EIP-3607的地址碰撞保护机制
- 与EIP-3074相似性:跨链代码一致性无保障,存在潜在风险
常见问题
什么是账户抽象?
账户抽象是以太坊的升级方案,允许账户自定义交易有效性规则,结合EOA的自主性与CA的可编程性,提升用户体验与开发者灵活性。
EIP-7702与EIP-3074有何区别?
EIP-7702采用代码指针机制,允许EOA临时设置为合约账户,兼容性更强且风险更低;EIP-3074则通过调用器委托授权,复杂度较高且存在中心化风险。
智能账户与智能合约钱包有何不同?
智能账户是协议层概念,指能自定义规则的账户;智能合约钱包是产品层工具,作为合约账户的管理界面,不改变底层账户属性。
账户抽象对普通用户有何好处?
用户可享受Gas赞助、交易批处理、密钥恢复等高级功能,无需担心Gas币种限制或单点故障风险,操作体验更接近传统Web2应用。
EIP-7702如何解决量子攻击风险?
EIP-7702本身不解决该风险,但它为过渡到抗量子签名方案提供路径,最终需通过协议升级替换ECDSA算法。
账户抽象是否影响现有DApp兼容性?
大多数方案设计为向后兼容,但部分DApp可能需要调整逻辑以适应新的交易类型和账户行为,建议开发者提前测试适配。
结论
当前EOA严重受限,无法充分利用EVM的可编程特性。账户抽象升级需平衡安全自托管原则与用户体验改进,充分考虑所有利益相关者的意见。
EIP-7702作为EOA可编程性的代表方案,已被列为Pectra升级中EIP-3074的替代品。它继承开放设计理念,降低攻击面,支持更广泛的应用场景。尽管仍需 refinements,该提案已获得社区广泛支持,包括Vitalik的背书。
然而,必须警惕量子计算威胁下的长期安全性。EOA可编程性应视为通向智能账户的过渡步骤,而非终极目标。它增强EOA能力,改善用户体验,同时保持与智能账户目标的兼容性。
在后续报告中,我们将深入探讨EOA迁移方案及其在账户抽象路线图中的定位,敬请期待!