1-
2-
3- ### EIP-7702 技
1+ ### EIP-7702
42
53EIP-7702 的核心创新在于引入了一种新的交易类型,允许外部账户(EOA)在单次交易中临时转换为智能合约账户,赋予其灵活的功能扩展能力。以下从交易结构、执行流程、Gas 机制和安全性等方面详细阐述其技术实现。
64
7-
85#### ** 一、新交易类型的结构设计**
6+
97EIP-7702 定义了一种新的交易类型( ** Type 4** ,具体编号由最终提案确定),其数据结构在现有交易字段基础上扩展了以下关键字段:
108
11- | 字段名 | 类型 | 描述 |
12- | ------------------- | ------------ | ----------------------------------------------------------------------|
13- | ` code ` | ` bytes ` | 本次交易中临时执行的智能合约代码(字节码)。 |
14- | ` signature ` | ` bytes ` | 覆盖传统 ECDSA 签名的灵活签名格式,支持多签或非 ECDSA 算法(如 BLS)。 |
15- | ` validationGas ` | ` uint256 ` | 用于验证阶段(代码执行前)的 Gas 限额。 |
16- | ` executionGas ` | ` uint256 ` | 用于代码执行阶段的 Gas 限额。 |
9+ | 字段名 | 类型 | 描述 |
10+ | --------------- | --------- | ---------------------------------------------------------------------- |
11+ | ` code ` | ` bytes ` | 本次交易中临时执行的智能合约代码(字节码)。 |
12+ | ` signature ` | ` bytes ` | 覆盖传统 ECDSA 签名的灵活签名格式,支持多签或非 ECDSA 算法(如 BLS)。 |
13+ | ` validationGas ` | ` uint256 ` | 用于验证阶段(代码执行前)的 Gas 限额。 |
14+ | ` executionGas ` | ` uint256 ` | 用于代码执行阶段的 Gas 限额。 |
1715
1816** 示例结构(伪代码):**
17+
1918``` solidity
2019struct EIP7702Transaction {
2120 // 标准交易字段(如 nonce, gasLimit, to, value 等)
@@ -28,68 +27,65 @@ struct EIP7702Transaction {
2827}
2928```
3029
31-
32-
3330#### ** 二、交易执行流程**
31+
3432当用户发起 EIP-7702 交易时,以太坊网络按以下步骤处理:
3533
36- 1 . ** 交易验证阶段**
34+ 1 . ** 交易验证阶段**
35+
3736 - ** 签名验证** :不再强制使用 ECDSA 签名,而是根据 ` code ` 中定义的逻辑验证 ` signature ` 。例如,代码可能要求多签验证或使用 BLS 聚合签名。
3837 - ** 临时状态注入** :将 ` code ` 临时绑定到用户的 EOA 地址,模拟智能合约账户的执行环境,但不修改链上账户的永久状态。
3938
40- 2 . ** 代码执行阶段**
39+ 2 . ** 代码执行阶段**
40+
4141 - ** 上下文切换** :在本次交易的执行环境中,用户的 EOA 地址被视为智能合约账户,其权限逻辑完全由 ` code ` 定义。
4242 - ** 自定义操作** :代码可执行任意逻辑,如批量交易、代付 Gas(使用 ERC-20 代币)、社交恢复验证等。
4343 - ** Gas 分段管理** :` validationGas ` 和 ` executionGas ` 分别限制验证与执行阶段的 Gas 消耗,防止资源耗尽攻击。
4444
45- 3 . ** 状态恢复**
45+ 3 . ** 状态恢复**
4646 - 交易完成后,临时注入的 ` code ` 从账户中移除,EOA 恢复原始状态,不保留任何智能合约痕迹。
4747
48-
49-
5048#### ** 三、Gas 优化机制**
49+
5150EIP-7702 通过以下方式降低 Gas 成本:
52- 1 . ** 减少交易层级**
51+
52+ 1 . ** 减少交易层级**
5353 - 相比 EIP-4337 的 UserOperation 需要 Bundler 打包并支付额外 Gas,EIP-7702 直接在协议层处理,省去中间环节。
54- 2 . ** 合并操作**
54+ 2 . ** 合并操作**
5555 - 单笔交易可完成多步操作(如授权+转账+跨链调用),减少总 Gas 消耗。
56- 3 . ** 动态 Gas 分配**
56+ 3 . ** 动态 Gas 分配**
5757 - 用户可灵活分配 ` validationGas ` 和 ` executionGas ` ,避免为单一阶段预留过多冗余 Gas。
5858
59-
60-
6159#### ** 四、安全机制与风险控制**
62- 1 . ** 代码执行沙盒化**
60+
61+ 1 . ** 代码执行沙盒化**
6362 - 临时注入的 ` code ` 仅在本次交易中有效,无法修改账户的永久存储或触发后续交易。
64- 2 . ** 签名权限隔离**
63+ 2 . ** 签名权限隔离**
6564 - ` code ` 中定义的签名逻辑仅适用于当前交易,不影响账户的其他操作。
66- 3 . ** 钱包防护措施**
65+ 3 . ** 钱包防护措施**
6766 - 钱包需对用户展示 ` code ` 的意图(如“本次交易将执行以下操作...”),防止钓鱼攻击。
68- 4 . ** Gas 限额强制约束**
67+ 4 . ** Gas 限额强制约束**
6968 - 即使 ` code ` 包含无限循环,` executionGas ` 上限将强制终止执行,避免网络资源滥用。
7069
71-
72-
7370#### ** 五、与 EIP-3074 的对比**
71+
7472EIP-3074 同样允许 EOA 临时委托权限给智能合约,但其机制存在以下差异:
75- | 特性 | EIP-3074 | EIP-7702 |
73+ | 特性 | EIP-3074 | EIP-7702 |
7674| ---------------------| -----------------------------------| -----------------------------------|
77- | ** 权限范围** | 委托给固定合约(AUTH/AUTHCALL) | 每笔交易自定义代码(动态灵活) |
78- | ** 签名兼容性** | 仅支持 ECDSA | 支持任意签名算法(由代码定义) |
79- | ** 状态影响** | 可能遗留委托关系 | 完全无状态(交易后恢复) |
80- | ** Gas 效率** | 较高(需多次调用) | 较低(单交易内完成) |
81-
82-
75+ | ** 权限范围** | 委托给固定合约(AUTH/AUTHCALL) | 每笔交易自定义代码(动态灵活) |
76+ | ** 签名兼容性** | 仅支持 ECDSA | 支持任意签名算法(由代码定义) |
77+ | ** 状态影响** | 可能遗留委托关系 | 完全无状态(交易后恢复) |
78+ | ** Gas 效率** | 较高(需多次调用) | 较低(单交易内完成) |
8379
8480#### ** 六、潜在技术挑战**
85- 1 . ** 协议层复杂性**
81+
82+ 1 . ** 协议层复杂性**
8683 - 需修改以太坊客户端(如 Geth、Nethermind)的交易处理逻辑,确保临时代码注入与恢复机制稳定。
87- 2 . ** 开发工具适配**
84+ 2 . ** 开发工具适配**
8885 - 钱包和 SDK(如 Ethers.js、Hardhat)需更新以支持新交易类型的构建与解析。
89- 3 . ** 测试网验证**
86+ 3 . ** 测试网验证**
9087 - 此前测试网曾因类似提案(如 EIP-3074)出现分叉问题,需充分验证边界条件。
9188
92-
93-
9489### ** 总结**
95- EIP-7702 通过引入动态代码注入的交易类型,在协议层实现了 EOA 的灵活升级,兼顾了兼容性与功能性。其技术细节体现了以太坊向智能账户体系演进的核心路径。随着 Pectra 升级的推进,这一提案有望成为链上用户体验革新的关键基础设施。
90+
91+ EIP-7702 通过引入动态代码注入的交易类型,在协议层实现了 EOA 的灵活升级,兼顾了兼容性与功能性。其技术细节体现了以太坊向智能账户体系演进的核心路径。随着 Pectra 升级的推进,这一提案有望成为链上用户体验革新的关键基础设施。
0 commit comments