什么是 EIP-7702?
EIP-7702 是一项改变以太坊账户能力的核心协议提案。EIP 是 Ethereum Improvement Proposal(以太坊改进提案)的缩写;7702 是提案编号。它允许外部账户把自己的代码执行能力委托给一份已经部署的智能合约代码,同时保留原来的地址、余额和私钥控制方式。
外部账户(Externally Owned Account,EOA)是由私钥控制、通常供个人钱包使用的以太坊账户。传统 EOA 可以签名并发起交易,但自身不能像智能合约账户那样编写批量操作、权限规则或恢复逻辑。EIP-7702 在两种账户之间增加了一条连接路径:EOA 不需要把资产迁移到新地址,就可以让指定合约代码在自己的账户环境中执行。
这项提案已进入 Final(最终)状态,并随名为 Pectra 的网络升级于 2025 年 5 月 7 日在以太坊主网激活。它定义的是底层委托机制,不是一个面向用户的完整钱包产品。批量操作、Gas 代付、会话权限或账户恢复等功能是否存在,取决于钱包选用的委托合约及具体实现。
它解决什么问题
传统 EOA 的优点是结构简单:只要能够使用对应私钥,就可以签名和控制账户。但这种账户没有可编程逻辑。用户如果要连续批准代币、交换资产和把结果存入另一个协议,通常需要分别确认多笔交易;Gas 费用也通常由账户自己持有的以太坊原生资产 ETH 支付。
智能合约账户可以加入更复杂的验证和执行规则,但创建新合约账户往往意味着使用新地址,并处理资产迁移、应用兼容和历史身份延续等问题。
EIP-7702 让已有 EOA 可以指向合约代码。这样,钱包能够在不更换账户地址的前提下,为该账户增加由代码实现的能力。它没有删除 EOA 原来的私钥控制,也没有把所有 EOA 自动升级;只有账户签署并提交有效授权后,委托才会写入链上状态。
一次授权怎样生效
EIP-7702 新增了类型为 0x04 的交易。这类交易可以携带一份或多份授权,每份授权都表示某个 EOA 同意把代码执行委托给一个目标地址。
从用户角度看,流程可以分为五步:
- 钱包选择一份准备使用的委托合约代码,并向用户展示授权内容;
- EOA 对授权签名,确认目标网络、委托地址和当前账户交易序号(nonce);
- 类型 4 交易把授权提交到网络,提交者可以是该 EOA,也可以是代为支付 Gas 的其他账户;
- 节点验证签名和 nonce 后,在 EOA 上写入一个指向目标代码的委托标记;
- 此后其他账户或合约调用该 EOA 时,以目标合约的代码处理调用,但使用 EOA 自己的地址、余额和存储环境。
授权中几个字段分别限制不同风险:
| 字段 | 作用 |
|---|---|
chain_id |
指定授权适用的网络,减少授权被带到其他网络重复使用的风险;值为 0 时可以跨链适用,需要格外谨慎。 |
address |
指定提供委托代码的目标地址。 |
nonce |
绑定授权账户当时的交易序号,防止同一授权被反复使用。 |
| 签名数据 | 证明对应私钥同意这组授权内容。 |
这里的“委托”不是把资产转给目标地址。目标代码是在授权 EOA 的上下文中执行,因此读取和修改的是该 EOA 的存储,使用的是该 EOA 的地址和余额。也正因为如此,委托代码可以获得很大的操作范围。
授权后账户发生了什么
委托生效后,账户仍使用原来的地址,原有余额不会因为设置委托而自动转移,私钥也仍然可以签署交易。变化在于:账户的代码位置保存了一个指向目标合约代码的特殊标记。调用该账户时,以标记指向的代码决定怎样验证和执行操作。
这个委托具有持续性,不会在一次交易结束后自动消失。它会一直存在,直到账户用新的有效授权改指向另一份代码,或把委托清除。因此,用户不能因为某次批量操作已经完成,就假定授权也随之结束。
设置授权与随后执行的调用还是两个不同阶段。按照 EIP-7702 的处理规则,即使类型 4 交易后续执行失败,已经处理完成的委托也不会因此自动回滚。钱包需要把“委托已经写入”和“预期操作已经成功”分别展示并核对。
它可以支持哪些账户功能
EIP-7702 为钱包提供了一项底层工具,常见设计可能在委托代码中实现:
- 把批准、交换和存入等多个操作打包为一次签名流程;
- 由其他账户或服务提交交易并支付 Gas;
- 设置会话密钥、单次额度或限定目标等细分权限;
- 使用不同于单一私钥签名的身份验证方式;
- 加入恢复、暂停或支出控制规则;
- 与基于账户抽象标准 ERC-4337 的智能账户基础设施配合。
这些都不是 EIP-7702 自动提供的保证。提案只规定怎样授权、写入委托和执行被指向的代码。是否支持某项功能、功能怎样验证,以及出现故障后如何恢复,都由具体委托合约和钱包交互决定。
Gas 代付也不等于网络不再收取 Gas。类型 4 交易允许另一个账户作为外层交易发送者,把 EOA 的授权带上链,并由发送者支付该笔交易的 Gas。服务是否愿意代付、费用怎样结算,以及后续调用由谁支付,属于钱包或服务的产品安排。
它与智能账户有什么区别
“智能账户”通常泛指用可编程代码定义验证和执行规则的账户体验。EIP-7702 是实现这类体验的一种协议级机制,但不能与某一种智能账户方案画等号。
ERC-4337 是另一套账户抽象标准。它通过描述用户意图的 UserOperation 数据对象、负责汇集操作的打包者和统一验证执行的 EntryPoint 合约组织操作,不要求以太坊共识层为每种账户逻辑新增交易规则。EIP-7702 则直接让 EOA 在协议状态中设置代码委托。两者可以组合:ERC-4337 已定义怎样在用户操作流程中携带 EIP-7702 授权。
EIP-7702 也不会让一个普通 EOA 自动变成真正由多签规则独占控制的账户。即使委托代码要求多方批准,原有私钥仍保留更换或清除委托的能力,也可以绕过仅由当前委托代码实施的长期策略。若应用需要不可由单一原始私钥绕过的控制模型,就不能仅凭设置 EIP-7702 委托得出已经实现多签的结论。
怎样更换或撤销委托
账户可以签署一份新的授权,把委托改到另一目标地址。若要清除委托,可以把授权目标设为零地址。新的授权仍要满足网络、签名和 nonce 等验证条件,并通过类型 4 交易写入链上。
清除委托会移除代码指向,但不等于自动清空旧委托代码曾写入账户存储的数据。以后如果改用另一份代码,新的代码可能读取到旧数据,或因存储布局不同而把同一位置解释成另一种含义。设计委托合约时需要考虑初始化、升级和存储兼容;用户更换实现前,也需要确认钱包是否提供对应的迁移与恢复流程。
撤销委托也不能替代私钥保护。私钥泄露后,攻击者仍可能签署新授权、更换委托或直接控制账户。委托代码可以增加操作规则,但原始密钥仍是账户的关键控制凭证。
主要风险和检查重点
恶意或有缺陷的委托代码
委托代码在 EOA 自己的环境中执行,可能调用其他合约、转移资产或改写存储。一份恶意代码或存在漏洞的实现,可能获得接近完整的账户操作能力。钱包应核验目标代码和升级权限,不应要求用户对来源不明的委托地址签名。
授权钓鱼
EIP-7702 授权的影响可能持续多笔交易,比单次转账签名更广。界面若只显示“登录”或“启用功能”,却没有清楚展示目标网络、委托代码及持续效果,用户就可能低估授权范围。以太坊官方指南建议由钱包负责委托交互和目标代码审查,而不是让普通网页随意索取授权。
跨链重放和地址差异
授权的 chain_id 用来限定网络。把它设为 0 会让同一授权可能在多条链使用,而同一地址在不同网络上未必部署相同代码。即使地址文字完全一致,代码和账户状态也可能不同。钱包需要同时核对网络、目标地址和该网络上的实际代码。
初始化与存储冲突
新委托代码可能需要先写入所有者、权限或其他初始数据。如果初始化可以被其他人抢先执行,账户可能被错误配置。更换委托时,不同实现若复用相同存储位置,也可能产生权限或数据冲突。
旧应用的账户假设失效
过去有些应用把“账户当前没有代码”视为普通用户账户,或使用 tx.origin 判断调用来源。EIP-7702 让 EOA 可以执行委托代码,这些判断不再可靠,也可能引入重入等执行风险。应用需要按实际调用和授权模型验证权限,不能只依赖账户过去的类型特征。
常见问题
设置委托会改变钱包地址吗?
不会。设置委托后,EOA 继续使用原地址,余额和历史记录也留在该地址。它新增的是一个代码委托标记。
委托只对一笔交易有效吗?
不是。委托写入后会持续存在,直到被新的授权替换或清除。某次预期操作失败,也不一定会撤销已经处理的委托。
设置委托后,私钥还有效吗?
有效。原私钥仍可以签署交易、替换委托或将其清除。委托代码不能让用户忽略私钥泄露风险。
它是否自动提供批量交易和 Gas 代付?
不是。它提供实现这些功能所需的底层委托机制。批量逻辑由委托代码实现;Gas 代付还需要愿意提交并支付交易费用的外部发送者或服务。
可以把账户委托给任意合约吗?
协议允许授权指向一个代码地址,但“能够指向”不代表“适合使用”。目标代码会在账户环境中运行,用户应通过可信钱包确认代码用途、审计信息、升级权限和撤销方法,不应签署无法识别的授权。
相关词条
继续了解以太坊、智能合约和以太坊虚拟机,或返回加密货币术语表。七种语言版本全部发布前,本词条暂不加入 A–Z 主文章链接。
参考来源
- EIP-7702:Set Code for EOAs——交易类型、授权字段、委托执行、撤销方式和安全注意事项。
- Ethereum.org:EIP-7702 指南——钱包集成、账户控制、跨链授权、委托风险及用户交互说明。
- Ethereum Foundation:Pectra 主网上线公告——主网激活时间及 EIP-7702 的用户功能背景。
- ERC-4337:使用替代内存池的账户抽象——ERC-4337 对 EIP-7702 授权的兼容方式。







