EIP-3074 Link to heading

一、核心目标:让智能合约灵活代理 EOA 操作 Link to heading

在以太坊原有体系里,外部拥有账户(EOA,由私钥控制的普通用户账户)和智能合约账户有着明确区分:

  • EOA:依靠私钥签名发起交易,msg.sender 为 EOA 地址,不过功能相对单一,无法直接实现复杂逻辑(如 Gas 代付、批量交易聚合)。
  • 智能合约账户:能实现复杂逻辑,但调用其他合约时,msg.sender 是智能合约自身地址,无法直接 “扮演” EOA 身份。

EIP-3074 的核心目标是让智能合约可以安全地 “代理” EOA 执行操作,在保留 EOA 签名授权特性的基础上,为其叠加智能合约的强大功能,同时避免重新部署全新账户体系(如 ERC-4337 的智能合约账户)带来的成本与兼容问题。

二、关键操作码解析 Link to heading

EIP-3074 引入了两个关键以太坊虚拟机(EVM)操作码,它们是实现 “智能合约代理 EOA” 的核心:

1. AUTH:注入 EOA 授权身份 Link to heading

作用:在 invoker 合约(用于代理操作的智能合约)中执行 AUTH 时,会校验传入的签名(由 EOA 私钥签署的 auth_msg)。若签名有效,就将 authorized 变量设置为该 EOA 的地址,相当于 EOA 把 “身份令牌” 交给了 invoker 合约,允许其暂时代表自己行事。

类比:你(EOA)给秘书(invoker 合约)一份经过你签名的授权信(auth_msg),秘书拿到信后,就获得了临时代表你开展业务的权限。

2. AUTHCALL:以代理身份执行调用 Link to heading

作用:执行 AUTHCALL 时,invoker 合约会以 authorized 变量(即 EOA 地址)作为 msg.sender,去调用其他合约(如合约 B、合约 C)。这样一来,被调用的合约会认为是 EOA 本人在发起调用,从而保留基于 msg.sender 的权限校验逻辑(比如只有 EOA 授权的地址才能调用某些函数)。

类比:秘书(invoker 合约)拿着你的授权信(AUTH 后的 authorized),以你的名义去和合作方(合约 B/C)洽谈业务,合作方会把秘书当成你本人来对接。

三、完整流程拆解 Link to heading

  1. EOA 签名授权消息:Bob(作为 EOA)使用自己的私钥,对一条 “授权消息”(auth_msg)进行签名。这条消息里包含了 Bob 允许 invoker 合约代理的操作范围、有效期等信息,以此证明是 Bob 本人授权 invoker 合约代表他行动。

  2. 发送签名交易到 invoker 合约:Bob 或者 Alice(也可以是其他 EOA,比如 Alice 帮 Bob 提交交易)发起一笔交易,将交易发送到 invoker 合约。这笔交易中包含了:

    • 经过签名的 auth_msg
    • 具体想要执行的目标操作(例如调用合约 B 转账、调用合约 C 铸造 NFT 等)
  3. invoker 合约执行 AUTH:invoker 合约接收到交易后,先验证 auth_msg 的签名是否有效(确认是 Bob 本人的签名)。验证通过后,执行 AUTH 操作码,把 authorized 变量的值设置为 Bob 的 EOA 地址,完成 “身份注入”。

  4. invoker 合约执行 AUTHCALL:invoker 合约接着执行 AUTHCALL 操作码,以 authorized 变量(也就是 Bob 的地址)作为 msg.sender,去调用合约 B 或者合约 C。此时,合约 B/C 检查 msg.sender 时,会认为是 Bob 本人在发起调用,按照原本针对 Bob 地址的权限逻辑执行相应操作(比如允许转账、铸造)。

四、EIP-3074 争议 Link to heading

  • 优点:
    • Gas 低
    • 可快速应用(利用现有的 EOA及基础设施)
  • 反对:
    • Invoker 权力过大,不利于抗审查
    • 依旧依赖 ECDSA
    • 在 EOA 到 SA 迁移后(被认为是 endgame),EIP-3074 引入的操作码将无用,但会遗留在 EVM 代码中,造成技术债务。

五、解决的核心痛点与应用场景 Link to heading

1. Gas 代付(降低用户使用门槛) Link to heading

传统问题:在以太坊网络中,EOA 发起交易时,必须用自己账户里的 ETH 支付 Gas 费用。要是 EOA 账户中没有 ETH,就无法执行任何交易,这对新用户或者 ETH 不足的用户很不友好。

EIP-3074 方案:invoker 合约可以预先存储 ETH(或者由项目方、第三方服务提供商赞助 ETH)。当 Bob 发起交易时:

  • invoker 合约使用自己存储的 ETH 支付 Gas 费用
  • 通过 AUTHCALL 让目标合约觉得是 Bob 在调用,保留业务逻辑的完整性

这样一来,Bob 即便没有 ETH,也能借助 invoker 合约完成交易,大大降低了用户使用区块链应用的门槛。

2. 批量交易(提升操作效率) Link to heading

传统问题:EOA 要执行多笔交易(比如同时调用合约 B 转账给 A、调用合约 C 铸造 NFT),得依次发送多个交易,多次进行签名,操作流程繁琐,效率低下。

EIP-3074 方案:invoker 合约能够把多笔调用整合打包成一个交易:

  • 只需要执行一次 AUTH,就能获得 Bob 的授权
  • 接着通过 AUTHCALL 连续调用合约 B、合约 C 等多个合约
  • Bob 也只需要签署一次授权签名,就能完成多笔操作

3. 扩展 EOA 功能(无需更换账户体系) Link to heading

对于已经广泛使用的 EOA 账户(比如用户在 MetaMask 中的钱包地址),不需要重新创建全新的账户(如 ERC-4337 的智能合约账户),就能通过 invoker 合约快速叠加复杂功能(如多签控制、交易限额、自动复投等)。

五、与 ERC-4337 的区别与关联 Link to heading

特性 EIP-3074 ERC-4337
账户体系 基于现有 EOA,通过智能合约代理扩展功能 引入全新的 “智能合约账户” 体系
实现成本 低,可复用现有 EOA 高,需部署整套新基础设施
功能灵活度 依赖 invoker 合约的逻辑编写 智能合约账户可实现更复杂的验证逻辑
生态适配 对现有生态影响小 需要 DApp、钱包、基础设施全面适配

简单来说:

  • EIP-3074 是 “给 EOA 外挂智能合约功能”,轻量级、改造成本低
  • ERC-4337 是 “用智能合约账户重构 EOA”,功能更强大,但生态迁移成本高

六、提案状态与进展 Link to heading

重要说明:EIP-3074 虽然提出了 AUTH 和 AUTHCALL 操作码,但截至目前,它还没有被正式纳入以太坊虚拟机(EVM)的标准操作码集合中。

提案状态与进展 Link to heading

以太坊改进提案(EIP)需要经过一系列的审核、讨论和实现步骤,才能最终被集成到以太坊的主网或测试网中。在提案被接受并实现之前,相关的操作码不会出现在以太坊官方文档的标准操作码列表中。

EIP-3074 面临一些技术和安全方面的考量:

  • 安全性:引入新的操作码会对 EVM 的安全性产生影响,需要确保不会引入新的安全漏洞,如签名验证机制是否足够健壮,防止恶意用户伪造授权签名
  • 兼容性:要考虑与现有以太坊生态系统的兼容性,包括智能合约、钱包、工具等

未来可能的发展 Link to heading

如果 EIP-3074 最终通过审核并实现,以太坊官方会更新相关文档,将 AUTH 和 AUTHCALL 操作码添加到 EVM 操作码列表中。届时,开发者可以在以太坊网络中使用这些操作码开发智能合约,实现诸如 Gas 代付、批量交易等功能。

目前,虽然在以太坊官方操作码文档中找不到相关内容,但可以通过查看 EIP-3074 的原始提案文档,了解其设计原理、使用方式和预期效果。