📢 #Gate广场征文活动第三期# 正式启动!
🎮 本期聚焦:Yooldo Games (ESPORTS)
✍️ 分享独特见解 + 参与互动推广,若同步参与 Gate 第 286 期 Launchpool、CandyDrop 或 Alpha 活动,即可获得任意奖励资格!
💡 内容创作 + 空投参与 = 双重加分,大奖候选人就是你!
💰总奖池:4,464 枚 $ESPORTS
🏆 一等奖(1名):964 枚
🥈 二等奖(5名):每人 400 枚
🥉 三等奖(10名):每人 150 枚
🚀 参与方式:
在 Gate广场发布不少于 300 字的原创文章
添加标签: #Gate广场征文活动第三期#
每篇文章需 ≥3 个互动(点赞 / 评论 / 转发)
发布参与 Launchpool / CandyDrop / Alpha 任一活动的截图,作为获奖资格凭证
同步转发至 X(推特)可增加获奖概率,标签:#GateSquare 👉 https://www.gate.com/questionnaire/6907
🎯 双倍奖励机会:参与第 286 期 Launchpool!
质押 BTC 或 ESPORTS,瓜分 803,571 枚 $ESPORTS,每小时发放
时间:7 月 21 日 20:00 – 7 月 25 日 20:00(UTC+8)
🧠 写作方向建议:
Yooldo
EIP-7702: 以太坊账户抽象的终极方案与未来发展
深入解读以太坊账户抽象赛道的过去与未来
前言
本文分为两大模块:
上半部分从2015年第一个AA提案开始,系统梳理了目前为止的主要EIP提案内容,回顾AA历史提案历程,并对各方案优缺点进行综合评价。
下半部分重点对比EIP4337推出后面临的市场反馈不佳的情况,深入分析即将纳入以太坊下一版本升级的EIP7702,这一提案一旦合并将全方位改变链上应用形态。
EIP-7702具有划时代意义,让我们详细了解一下。
1. 账户抽象的背景
1.1 账户抽象的意义定位
以太坊创始人Vitalik在2023年底再次更新ETH发展路线图,但针对账户抽象的设定并未改变。目前主流模式正从EIP-4337向下一阶段VoluntaryEOA Conversion(自愿转换EOA账户)过渡。
1.2 账户抽象的市场现状
经过一年半发展,EIP4337在主流链上的账户总数仅1200万,其中以太坊主网活跃地址只有6,764个,与EOA和CA地址数差距巨大。以太坊主网独立地址数已达2.7亿,可见EIP4337在主网上几乎没有实质性发展。
不过这并不影响AA的本质价值。EIP4337设计之初就注定难以解决主网兼容性问题,但在各类L2层链上得到普遍应用。其中Base和Polygon链7月月活用户分别达到100万和300万,表现不俗。
因此,EIP4337设计本身并无问题,当前情况源于主网与L2之间的差异,它们需要采用不同的适用方案。
2. 什么是账户抽象?
账户抽象本质上解决的是产权分离问题。
EVM架构中有两种账户:外部账户(EOA)和合约账户(Contract Account)。EOA的所有权和签名权实际上由同一主体持有。持有私钥的人不仅拥有账户"所有权",还可以"签名转移所有资产"。
这是由以太坊账户交易结构决定的。标准交易结构中实际没有From字段,资金转账是通过VRS参数(用户签名)反解析出From地址实现的。
EIP4337的核心效果就是在交易字段中增加Sender Address,从而实现私钥与被操作地址的分离。
产权分离如此重要的原因在于,EOA设计会衍生出诸多问题:
私钥难以保护:丢失私钥意味着失去所有资产。
签名算法单一:原生协议只能使用ECDSA算法验证交易。
签名权限过高:无原生多重签名,单一签名即可执行任意操作。
交易手续费只能用ETH支付,不支持批量交易。
交易隐私泄露:一对一交易易于分析账户持有者信息。
这些限制导致普通用户难以使用以太坊:
首先,使用以太坊应用必须持有ETH并承担价格波动风险。
其次,用户需要处理复杂的费用逻辑,如Gas price、Gas limit、交易阻塞等概念。
最后,虽然许多区块链钱包试图通过产品优化提升用户体验,但效果有限。
因此,突破口在于实现账户抽象,将所有权(Owner)和签名权(Signer)解耦,从而逐步解决上述问题。
历史上有多种方案,最终归结为两种路线。
3. AA历史提案脉络梳理
问题的解决方案看似有很多EIP提案,但归根结底只有两种核心思路。每个未通过的EIP考虑的问题都汇聚成了当前方案的突破点。
3.1 第一种路线:将EOA地址转变为CA地址
早在2015年11月15日,Vitalik就在EIP-101中提出以合约作为账户的新结构。将地址改为只有代码和存储空间,支持用ERC20支付手续费,通过预编译合约将原生代币改为类ERC20存储余额,将交易字段精简为to、startgas、data和code。
这一方案可以衍生出多项功能:
交易可使用更多加密算法,由地址内部Code指定验签方法
具备抗量子攻击特性,因代码可升级
让ETH具备与ERC20合约一致的功能,如代扣授权
提升账户自定义空间,兼容社交恢复、SBT支持、密钥找回等
未能继续推进的原因很简单,步子迈得太大,对当前交易哈希冲突问题和安全性隐患考虑不周。但每个优点理念都成为后续EIP4337和EIP7702的核心功能之一。
后续还有一系列EIP试图完善这种逻辑:
EIP-859:主链账户抽象(2018-01-30)
试图解决Code部署问题,核心是若交易方合约未部署则使用交易附带code参数执行部署。还提出新的PAYGAS操作码,作为交易参数中验证部分与执行部分的分隔符。
虽然当时无疾而终,但成为EIP7702的核心逻辑之一。EIP7702的每笔交易可结合特殊交易结构附带代码,让EOA地址在本次交易中具备合约能力。
EIP-7702:设置EOA账户代码(2024-05-07)
这是本文后续讨论的核心EIP,由Vitalik提出作为EIP-3074的替代方案。EIP-3074被弃用,EIP-7702确定将在即将到来的ETH Prague/Electra硬分叉中纳入。
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机制防止DoS阻塞攻击。
3.3 其他支持AA的提案
EIP-2718:新交易类型的包装信封(2020-06-13)
已Final的提案,定义新交易类型作为未来新增交易类型的信封。
引入新交易类型时,通过特定编码区分,只需向后兼容而无需向前兼容。最常见例子是EIP1559,区分了交易手续费,使用新交易类型编码,不影响最初legacy交易类型。
EIP-3607:限制EOA地址部署合约(2021-06-10)
AA路径上的补充方案,防止合约部署地址与EOA地址冲突。控制合约生成方法,不允许将代码部署到已是EOA的地址上。此风险很小,以太坊地址160位长,虽存在用私钥碰撞出指定合约地址私钥的方法,但以比特币全算力估计也需一年时间。
3.4 如何理解账户抽象发展历程?
首先需理解转为CA后的价值,基本上就是EIP-4337的实际效果:
但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]元组:
从签名r、s用ecrecover恢复签名者地址。
验证链ID(防分叉链重放)。
验证authority签名者代码是否为空或已委托。
验证authority签名者nonce(防authority签名重放)。
设置authority签名者代码为0xef0100 || address。
增加authority签名者nonce(防局部签名重放)。
将authority签名者账户添加到已访问地址列表。
4.3.2 执行操作阶段
"新"版本仅更改代码部署行为。
不再将账户代码设为contract_code,而从authorization_list的address字段检索代码并设为账户代码。
执行授权代码时,从authorization_list指定地址加载代码,在签名者账户上下文中执行。
用户合约代码实际存储在链上特定地址,不直接包含在交易中。
操作指令和相关参数存储在交易负载data字段。
4.4 EIP-7702的价值
对Web3钱包全链路有变化,用户体验巨变。EOA发起普通交易可类似合约执行多种逻辑,如批量transfer。影响CeFi场景交易鉴别、充提归集手续费。
打破多个既有定势:
账户余额可因非源自该账户交易而减少。
交易执行开始后EOA nonce可能增加多个。
打破tx.origin和msg.sender比对防护逻辑,许多现有合约有风险。
EOA本身可发出事件,影响部分链上事件识别监听。
EOA地址接收ERC20、721、1155等资产可能失败(因回调机制)。
4.5 对比EIP-7702和EIP-4337
完全委托(Full Delegation)