近日,以太坊核心开发者执行会议(ACDE)第 185 次会议确定,将 EIP-3074 纳入下一次硬分叉升级(Pectra,即布拉格升级)。这一改进提案旨在为普通外部账户(EOA)地址赋予智能合约功能,从而显著提升以太坊链上交互的用户体验。
当前普通钱包面临的主要问题
在深入探讨 EIP-3074 之前,我们首先需要理解现有普通钱包(EOA)的局限性:
- 单笔交易对应单次操作:每次授权代币或执行操作都需要发起一笔单独的交易,效率低下。
- 缺乏批量处理能力:无法在一笔交易中完成多个动作,导致操作繁琐且 gas 成本高昂。
- 私钥丢失风险:一旦私钥丢失,账户内的资产将永久无法找回,没有内置的恢复机制。
- Gas 费用门槛:用户必须持有 ETH 才能支付交易费用,对新用户不够友好。
虽然智能合约钱包可以解决上述问题,但迁移现有 EOA 地址至合约钱包需要复杂的链上操作,成本高昂且体验不佳。EIP-3074 的提出,正是为了在不强制迁移的前提下,让普通地址也能享受智能合约的便利。
EIP-3074 的核心机制:AUTH 与 AUTHCALL
EIP-3074 通过引入两个新的操作码(opcode)来实现其功能:AUTH 和 AUTHCALL。这两个操作码协同工作,允许经过授权的智能合约代表普通地址执行操作。
AUTH:验证与授权
AUTH 操作码负责验证用户签名的有效性。它接受用户签名和预期操作内容,确认签名正确后,会设置一个变量来标识交易的发起地址。
AUTHCALL:代理调用
AUTH 验证通过后,AUTHCALL 操作码会执行实际的目标合约调用。关键之处在于,它会将调用者地址(即执行调用的智能合约地址)替换为用户的原始地址作为调用来源。
全新的交易流程
在这一机制下,交易流程将变为:
- 用户签署一条消息(链下完成,无需 Gas)。
- 用户或费用资助方将该签名消息作为交易发送至一个“调用者合约”(Invoker Contract)。
- 调用者合约使用
AUTH验证签名,并使用AUTHCALL以用户地址作为来源调用目标合约。
这一流程分离了签名与执行,为许多新功能奠定了基础。
EIP-3074 将带来的关键新功能
1. 费用资助(Gas Sponsorship)
应用项目方或任何第三方可以为用户支付交易 Gas 费用。即使用户钱包中没有任何 ETH,也能无缝进行链上交互。这极大地降低了新用户的入门门槛,是推动以太坊迈向大规模采用的关键一步。
2. 批量交易(Batch Transactions)
用户可以在单笔交易中完成多个操作。例如,在 Uniswap 上交易一个新代币时,授权(approve)和交易(swap)这两个动作可以合并为一笔交易提交,无需等待两次确认,既节省时间又降低 Gas 成本。
3. 社交恢复与资产安全
用户可以预先设置一个可信的调用者合约,用于资产恢复。如果私钥丢失,可以通过已验证的社交身份(如电子邮件或社交媒体账户)向该合约提交签名,从而将资产从旧地址转移至安全的新地址。这为资产安全上了一道保险。
潜在风险与挑战
尽管 EIP-3074 前景广阔,但也引入了一些新的风险点,需要社区谨慎对待。
- 调用者合约的安全性:调用者合约必须经过严格审计、不可升级且真正无需信任。如果一个恶意的或被黑的调用者合约获得了授权,它可能会盗取用户的所有资产。
- 重入攻击防护:一些现有的智能合约针对重入攻击的检查机制可能无法与 EIP-3074 完美兼容,需要开发者重新评估其合约的安全性。
- 升级依赖:与纯智能合约实现的 ERC-4337(账户抽象)不同,EIP-3074 需要以太坊网络进行硬分叉升级才能部署,过程相对复杂。
EIP-3074 与 ERC-4337:有何不同?
很多人会将 EIP-3074 与 ERC-4337(账户抽象)进行比较。两者都旨在改善用户体验,但路径不同:
- ERC-4337:通过一组智能合约和链下基础设施实现账户抽象,无需硬分叉升级。它创建了一个全新的账户体系,但需要用户迁移至新的智能合约钱包。
- EIP-3074:通过协议层的硬分叉升级,直接赋能现有的 EOA 地址。它不需要用户迁移,能更快地让大量现有用户受益。
二者并非相互竞争,而是可以互补的方案,未来甚至可能结合使用。
常见问题
Q1: EIP-3074 什么时候会生效?
A: 它已被正式纳入 Pectra(布拉格)硬分叉升级范围。具体的升级时间尚未最终确定,需等待以太坊核心开发者会议的后续安排。
Q2: 普通用户需要为 EIP-3074 做什么准备吗?
A: 对于大多数用户而言,无需任何操作。现有的钱包和地址将继续正常工作。升级后,用户只需在支持新功能的 DApp 中授权使用即可体验新功能。
Q3: EIP-3074 会让我现在的钱包变得不安全吗?
A: 不会直接降低安全性。安全风险主要来自于用户授权的调用者合约。因此,用户只应授权那些经过官方验证、充分审计且声誉良好的调用者合约。
Q4: 它和智能合约钱包有什么区别?
A: 智能合约钱包是一个全新的合约账户,而 EIP-3074 是让你现有的普通地址(EOA)临时获得类似智能合约钱包的功能,无需更换地址。
Q5: 开发者现在需要做什么?
A: 开发者可以开始研究 EIP-3074 的标准文档,思考如何将其集成到自己的应用中,例如设计费用资助模式或批量交易功能,并为调用者合约的安全审计做准备。
总结
EIP-3074 是以太坊提升用户体验道路上的一个重要里程碑。通过协议层革新,它巧妙地为数以亿计的现有 EOA 地址赋予了智能合约的强大功能,有望在费用资助、批量操作和资产恢复等方面带来革命性体验改善。
尽管存在需要对调用者合约安全保持警惕等挑战,但其带来的便利性增益是巨大的。随着布拉格升级的临近,整个生态系统都在为这一重大变化做准备,未来值得期待。