Skip to content
全部期权指南
以太坊账户委托9分钟阅读

EIP-7702:EOA代码委托机制与风险

了解EIP-7702如何让EOA指向已部署代码、type-4授权签署的内容,以及需要检查的权限和风险。

本指南内容EIP-7702改变执行路径,不会替换密钥

简短摘要

EIP-7702让现有外部拥有账户(EOA)设置一个指向已部署代码的标记。账户地址和私钥不变,但针对该账户的调用可能以账户权限执行这段代码。标准并不保证权限受限或安全。签名之前,请核对目标代码及其控制者。

EIP-7702改变执行路径,不会替换密钥

普通EOA用私钥签署交易,账户自身地址上没有可执行代码。EIP-7702允许EOA指向部署在其他地址的代码,并在该账户的执行上下文中运行。代码位于另一地址,但使用的账户地址、余额和存储仍属于委托方。这不是迁移到新的合约地址,也不是更换私钥。

EIP-7702规范定义了type-4 set-code交易和authorization list。Ethereum.org的Pectra指南也将其描述为指向已部署代码的指针。钱包中的“智能账户”标签不会说明实际验证规则、恢复方式或委托代码。请查明谁能修改代码,以及代码能如何访问账户资产和存储。

type-4交易包含单独签名的授权列表

set-code交易的类型字节为0x04。每个授权元组包含chain ID、代码地址、授权账户的nonce和授权签名。授权账户签署授权,交易发送者另行签署外层交易;二者可以是不同账户。

chain ID通常将授权限制在一条链上。值为0时,授权可在支持EIP-7702的链上适用,但不代表一定成功:nonce和账户状态仍须匹配。请将签名页面上的网络、账户和完整目标地址与可信区块浏览器核对。nonce或其他校验失败时,授权元组可能被跳过。

Ethereum.org交易文档介绍了type-4授权列表。外层交易仍有gas条件和费用支付方。type-4与智能账户指南中的ERC-4337 UserOperation和paymaster不是同一机制。

委托标记指向代码,而不包含代码

EOA代码中的标记由0xef0100前缀和目标地址组成。客户端识别标记后,会在调用时加载目标地址的代码。因此账户地址与代码地址不同,必须分别核对。代码来自当前使用的链;同一地址在其他链上可能对应不同代码,也可能没有代码。

委托代码在账户的执行上下文中运行,并能使用账户存储。根据实现,它可能转出ETH或代币、调用外部合约、修改已存数据。EIP-7702本身不会添加“只能使用此代币”等限制。如果目标是代理合约,请核查管理员和升级权限。

委托代码可能拥有广泛的账户权限

验证逻辑有缺陷时,代码可能允许资产转移、代币授权、任意外部调用或存储修改。EIP安全注意事项提醒开发者将重放保护、目标地址和calldata、ETH金额及gas条件绑定到授权签名。缺少这些限制时,赞助方可能提交不同的调用,或造成交易失败。

检查账户能调用哪些合约、签名如何验证、谁拥有紧急或升级权限,以及部署代码是否与已验证源码一致。审计标记不能证明请求中的具体地址和版本都经过审查。若一次确认包含代币授权和兑换,请读清两项调用,并将授权额度限制在所需范围。

外层交易失败后,委托仍可能保留

EIP-7702在执行外层交易之前处理授权列表。规范明确指出,即使后续执行失败或revert,已处理的委托标记也不会回滚。因此,失败回执不等于账户状态已恢复。请分别检查回执和账户当前代码。

授权可能已生效,而之后的初始化调用失败;此时委托仍然有效,但设置没有完成。重试前请核对交易哈希、授权账户、nonce和代码指针。nonce可能已经改变,导致旧签名失效。

删除委托不会清除其他状态

新授权可以指向另一段代码。授权到零地址会删除委托标记并清空账户代码,但不会清除账户存储、ERC-20合约中的allowance、已完成的转账或外部合约状态。代币授权需要单独检查和撤销。

新代码可能以不同方式解释旧存储。更换前应检查存储布局和迁移方案。代币额度问题可参考代币授权与allowance指南。若私钥或助记词泄露,删除代码不能找回密钥;请参考钱包恢复指南。

签名前检查链、目标和失败后的状态

先查阅钱包官方文档,确认它支持所选网络上的EIP-7702。核对chain ID、账户、准确的目标地址、已验证代码以及代理管理员。区分授权签名与外层交易的发送者、费用支付方;有人代付并不能证明代码安全。

如果委托已生效,别只看交易状态;还要检查当前标记和代码地址。若与预期不符,请暂停后续调用和授权。外层费用见以太坊Gas费用指南,EOA nonce和待处理交易见待处理交易指南。

区分协议机制与钱包承诺

EIP-7702标准化了将EOA连接到已部署代码的交易格式。批量调用、费用赞助、会话权限和恢复功能取决于具体代码与服务。Ethereum Foundation的Pectra主网公告说明了替换或撤销授权;ERC-4337的UserOperation和paymaster则是另一种机制。

界面显示“智能账户”并不能说明谁持有密钥、谁能升级代码或更改恢复方式。更改有资产的账户前,请检查实现、设置和网络支持情况。本文解释账户机制,不推荐特定钱包或委托代码。

常见问题

Q1EIP-7702会把EOA变成普通智能合约钱包吗?

不会。它允许EOA委托调用到代码,但不会自动增加特定的钱包规则、恢复方式或权限系统。

Q2授权签名和type-4交易签名相同吗?

不相同。授权账户签署目标、chain ID和nonce,发送者另行签署外层交易。

Q3删除委托会撤销代币授权吗?

不会。代币合约单独保存allowance。请通过代币合约或可信钱包流程另行检查并撤销。

Q4应检查委托目标的哪些方面?

核对当前链上的准确地址和代码、已验证源码、升级管理员,以及代码对账户资产和存储的权限。

资料来源与延伸阅读

报告问题

我们会准备一封包含本文链接的邮件。发送后,Mark 才会收到你的反馈

快速检查

读完指南后,用 3 道题检查一下

问题 1 / 3

问题 01

有效授权已处理后,外层执行失败时可能发生什么?

选择答案即可查看解释

期权术语表