Pectra之后的EIP-7702:以太坊应用开发者实用指南
· 阅读需 9 分钟
在2025年5月7日,以太坊的Pectra升级(Prague + Electra)在主网上线。其中对开发者最明显的变化之一是EIP-7702,它允许外部拥有账户(EOA)"挂载"智能合约逻辑——无需迁移资金或更改地址。如果你构建钱包、dapp或中继器,这为智能账户UX开启了一条更简单的道路。
以下是一份简洁的、实现优先的指南:实际发布了什么,7702如何工作,何时选择它而不是纯ERC-4337,以及你今天可以适配的复制粘贴脚手架。
实际发布的内容
- EIP-7702在Pectra的最终范围内。 Pectra硬分叉的meta-EIP正式列出7702为包含的变更之一。
- 激活详情: Pectra在2025年5月7日的纪元364032在主网激活,此前在所有主要测试网成功激活。
- 工具链说明: Solidity v0.8.30将其默认EVM目标更新为prague以兼容Pectra。您需要升级编译器和CI管道 ,特别是如果您固定特定版本的话。
EIP-7702—工作原理(技术细节)
EIP-7702引入了一种新的交易类型和EOA将其执行逻辑委托给智能合约的机制。
- 新交易类型(0x04): 类型4交易包括一个名为
authorization_list的新字段。此列表包含一个或多个授权元组—(chain_id, address, nonce, y_parity, r, s)—每个都由EOA的私钥签名。当处理此交易时,协议向EOA的代码字段写入委托指示符:0xef0100 || address。从那时起,对EOA的任何调用都会代理到指定的address(实现),但在EOA的存储和余额上下文中执行。此委托保持活动状态,直到明确更改。 - 链范围: 授权可以通过提供
chain_id来特定于链,或者如果chain_id设置为0,则可以适用于所有链。这允许您在多个网络上部署相同的实现合约,而无需用户为每个网络签署新的授权。 - 撤销: 要将EOA恢复到其原始的不可编程行为,您只需发送另一个7702交易,其中实现
address设置为零地址。这会清除委托指示符。 - 自赞助vs.中继: EOA可以自己提交类型4交易,或者第三方中继器可以代表EOA提交。后者常用于创建无gas用户体验。nonce处理根据方法略有不同,因此使用正确处理此区别的库很重要。
安全模型转变: 因为原始EOA私钥仍然存在,它总是可以通过提交新的7702交易来更改委托,从而覆盖任何智能合约规则(如社交恢复或支出限制)。这是根本性的变化。依赖
tx.origin验证调用来自EOA的合约必须重新审核,因为7702可能破坏这些假设。相应地审核您的流程。
7702还是ERC-4337?(何时组合)
EIP-7702和ERC-4337都能实现账户抽象,但它们服务于不同的需求。
- 选择EIP-7702当…
- 您想为现有EOA提供即时智能账户UX,而不强迫用户迁移资金或更改地址。
- 您需要可以逐步升级新功能的跨链一致地址。
- 您想分阶段过渡到账户抽象,从简单功能开始,随时间添加复杂性。
- 选择纯ERC-4337当…
- 您的产品从第一天起就需要完全可编程性和复杂的策略引擎(如多重签名、高级恢复)。
- 您为没有现有EOA的新用户构建,使新智能账户地址和相关设置可接受。
- 组合它们: 最强大的模式是使用两者。EOA可以使用7702交易指定ERC-4337钱包实现作为其逻辑。这使EOA表现得像4337账户,允许它被打包、由付款主赞助,并由现有4337基础设施处理——所有这些都无需用户需要新地址。这是EIP作者明确鼓励的前向兼容路径。