剖析EIP-7702:以太坊账户抽象的重大突破与未来展望

深入解析以太坊账户抽象发展历程与未来展望

本文分为两大部分:

上半部分从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个,远低于EOA和CA地址数量。以太坊主网独立地址数已达2.7亿,可见EIP4337在主网上几乎未有实质性发展。

不过,这并不影响AA的本质价值。EIP4337设计初衷就难以解决主网兼容性问题。随着各L2原生嵌入AA,EIP4337地址数在L2上呈爆发式增长,如Base和Polygon链7月月活分别达到100万和300万。

因此,EIP4337设计并非有误,它有诸多优点。当前状况源于主网与L2间的差异,它们需要各自适合的方案。

深入解读以太坊账号抽象赛道的过去与未来

2. 何为账户抽象?

账户抽象本质上解决产权分离问题。

EVM架构中有两类账户:外部账户(EOA)和合约账户(CA)。EOA的所有权和签名权由同一实体持有。私钥持有者不仅拥有账户"所有权",还能"签名转移所有资产"。

这由以太坊账户交易结构决定。标准交易结构中无From字段,资金转账实际通过VRS参数(用户签名)反推From地址。这涉及ECDSA等非对称加密和单向门限函数等概念,由密码学保障安全性,但也导致了当前EOA地址产权合并的困境。

EIP4337核心是在交易字段中增加Sender Address,实现私钥与操作地址的分离。

产权分离的重要性在于:

  1. 私钥难保护:丢失私钥意味着失去全部资产。

  2. 签名算法单一:原生协议仅支持ECDSA签名验证。

  3. 签名权限过高:无原生多签功能,单签即可执行任意操作。

  4. 交易手续费只能用ETH支付,不支持批量交易。

  5. 交易隐私泄露:一对一交易易分析账户持有者隐私信息。

这些限制使普通用户难以使用以太坊:

首先,用户必须持有ETH(承担价格波动风险)才能使用以太坊应用。

其次,用户需处理复杂的费用逻辑,Gas price、Gas limit、交易阻塞等概念过于复杂。

最后,虽然许多钱包或应用试图优化用户体验,但效果有限。

因此,解决方案在于实现账户抽象,将所有权(Owner)和签名权(Signer)解耦,从而逐步解决上述问题。

历史方案虽多,最终汇聚为两种路线。

深入解读以太坊账号抽象赛道的过去与未来

3. AA历史提案脉络梳理

问题的解决方案看似有多个EIP提案,但归根结底是两种核心思路。每个未通过的EIP考虑的问题都汇聚成了现有方案的突破点。

3.1 第一种路线:将EOA地址转为CA地址

2015年11月15日,Vitalik就EIP-101提出以合约作为账户的新结构。将地址改为只有代码和存储空间,支持ERC20支付手续费,通过预编译合约将原生代币改为类ERC20存储余额,简化交易字段。

这一大跃进式变革会大幅改动底层设计,让每个账户地址都拥有自己的"代码"逻辑(正是EIP-7702要实现的效果)。

衍生功能包括:

  1. 交易支持更多加密算法,由地址内部Code指定验签鉴权方法。

  2. 具备抗量子攻击特性,因代码可升级。

  3. 让以太币具备与ERC20合约一致的功能,如代扣授权。

  4. 提升账户自定义空间,兼容社交恢复、SBT支持、密钥找回等。

未能继续推进的原因是步伐太大,对当前交易哈希冲突问题、安全性隐患考虑不周,但每个优点理念都成为后续EIP4337及EIP7702的核心功能之一。

后续一系列EIP试图完善这一逻辑:

EIP-859:主链账户抽象(2018-01-30)

解决Code部署问题,如交易方合约未部署,则用交易附带code参数执行合约钱包部署。提出新的PAYGAS操作码,除支付gas外,作为交易参数中验证部分与执行部分的分隔符。

虽然当时未获通过,但成为EIP7702的核心逻辑之一。EIP7702的每笔交易结合特殊交易结构,可附带一定代码,让EOA地址在本次交易中拥有合约能力。

EIP-7702:设置EOA账户代码(2024-05-07)

Vitalik提出EIP-7702作为EIP-3074替代方案。EIP-3074被弃用,EIP-7702将纳入即将到来的ETH Prague/Electra(Pectra)硬分叉。

3.2 第二种路线:让EOA地址驱动CA地址

EIP-3074:增加AUTH和AUTHCALL操作码(2020-10-15)

在EVM中加入两个新操作码AUTH和AUTHCALL,让EOA能通过这两个opcode授权合约代替EOA身份调用其他合约。

EOA可将已签名消息(交易)发送至信任的合约(Invoker),此Invoker合约可利用AUTH和AUTHCALL操作码代替EOA发送交易。

EIP-4337:用交易内存池实现账户抽象(2021-09-29)

受MEV启发设计,核心价值是完全避免共识层协议更改。

提出新的事务对象UserOperation,用户将此对象发送到内存池,由bundlers从矿工维度批量打包交付合约执行交易事务,本质上将底层交易与账户运作拉到合约层面执行。

EIP-5189:通过背书人操作抽象账户(2022-06-29)

优化EIP4337逻辑,通过建立资金罚款背书endorser机制防止恶意Bundler的DoS阻塞攻击。

3.3 其他支持AA的提案

EIP-2718:新交易类型的包装信封(2020-06-13)

已完成的提案,定义新交易类型作为未来新增交易类型的信封。

引入新交易类型时,通过特定编码区分,仅需向后兼容。如EIP1559区分了交易手续费,使用新交易类型编码,不影响最初的legacy交易类型。

EIP-3607:禁止EOA地址部署合约(2021-06-10)

AA路径上的补充方案,防止合约部署地址与EOA地址冲突。控制合约生成方法,禁止将代码部署到已是EOA的地址上。风险较小,以太坊地址有160位长,虽存在用私钥碰撞出指定合约地址私钥的方法,但以比特币全算力投入估计也需一年时间。

3.4 如何理解账户抽象发展历程?

首先需理解转为CA后的价值

基本上就是EIP-4337的实际效果,可实现:

  1. 社交恢复
  2. 多签钱包
  3. 支付代币作为gas fee
  4. 批量交易
  5. 定时交易
  6. 插件化钱包
  7. 签名验证扩展

但EIP-4337的核心缺点是违背人性动机原则。

看似更好,但陷入市场发展死循环。许多Dapp尚不兼容,用户不愿使用CA地址,使用CA甚至有更高交易成本(普通转账场景,交易费用翻倍),过于依赖Dapp兼容性。

因此在以太坊主网上迄今未得到普及。

成本是用户最重要的衡量标准,必须降低成本。

但要真正降低GAS,就必须以太坊本身做软分叉升级,修改GAS计算或操作码GAS消耗等模块。既然要软分叉,何不直接考虑EIP-7702?

深入解读以太坊账号抽象赛道的过去与未来

4. 全面解析EIP-7702

4.1 EIP-7702是什么

通过新交易类型,允许EOA在单笔交易中临时具备智能合约功能,支持批量交易、无Gas交易和自定义权限管理等,且无需引入新EVM opCode(影响向前兼容性)。

让用户无需部署智能合约即可获得大部分AA能力,甚至可提供第三方代用户发起交易的能力,无需用户提供私钥,只需签名授权信息。

4.2 数据结构

定义新交易类型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的[chain_id, address, nonce, y_parity, r, s]元组:

  1. 从签名r、s用ecrecover恢复签名者地址。
  2. 验证链ID(防分叉链重放)。
  3. 验证authority签名者代码是否为空或已委托。
  4. 验证authority签名者nonce(防authority签名重放)。
  5. 设置authority签名者代码为0xef0100 || address。
  6. 增加authority签名者nonce(防局部签名重放)。
  7. 将authority签名者账户添加到已访问地址列表。

4.3.2 执行操作阶段

"新"版本仅更改代码部署行为。

不再将账户代码设为contract_code,而从authorization_list中检索代码address并设为账户代码。

执行授权代码时,从authorization_list的address字段指定地址加载代码,在签名者账户上下文中执行。

用户合约代码实际存储在链上特定地址,非直接包含在交易中。

操作指令和相关参数存储在交易负载的data字段。

4.4 EIP-7702的价值

对Web3钱包全链路有变化,用户体验巨变。EOA发起普通交易可类似合约执行多种逻辑,如批量transfer。影响CeFi场景交易鉴别,影响充提归集手续费。

打破多个定势:

  1. 账户余额可因非源自该账户的交易而减少。
  2. 交易执行开始后EOA nonce可能增加多个。
  3. tx.origin和msg.sender比对的防护逻
ETH4.01%
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 8
  • 分享
评论
0/400
区块链假面骑士vip
· 08-01 10:45
感觉都是纸上谈兵 还是看市场反馈吧
回复0
井底望天蛙vip
· 07-31 03:59
突然感觉之前的4337像个弟弟了
回复0
DeFi厨师长vip
· 07-30 12:32
看不懂的新提案又来了
回复0
跨链深呼吸vip
· 07-30 12:30
4337就这?7702才是真神
回复0
智能合约探险家vip
· 07-30 12:30
AA到底行不行啊,看累了
回复0
老韭当家vip
· 07-30 12:25
AA实在太难用了 啥时候变香
回复0
瓦斯烧烤大师vip
· 07-30 12:18
这gas真是烧得太狠了
回复0
区块链打工人vip
· 07-30 12:14
炒作,还炒作,不就是换壳钱包
回复0
交易,随时随地
qrCode
扫码下载 Gate APP
社群列表
简体中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)