ERC-4337 是账户抽象的应用层标准,EIP-3074 是直接修改 EVM 的协议层标准,而 EIP-7702 有点介于两者之间,为 EOA 临时赋予了智能合约。
EIP-3074已于今年 4 月被纳入以太坊的下一次硬分叉计划中,该提案通过允许外部拥有账户(EOA)将交易权限委托给智能合约,旨在为用户带来更便捷的体验。然而,这一功能也引起了社区的担忧,许多成员担心若签名被误用,会使整个账户资金面临风险,为钓鱼攻击者提供机会。为了进一步增强安全性,Vitalik Buterin 最近提出了EIP-7702作为EIP-3074的替代方案,引起了社区的广泛讨论。
EIP-7702 引入了一种新的交易类型来提升账户抽象功能。这种新交易类型允许外部拥有账户(EOA)在交易过程中临时采用智能合约的特性,然后在交易结束后恢复其原始状态。那么同样都是账户抽象提案,ERC-4337、EIP-3074和EIP-7702的差别在哪里?
ERC-4337:使用 Alt Mempool 进行账户抽象。ERC-4337 由 Vitalik 提出,是应用层标准,主要目标是让智能合约账户具有 EOA 主动发起交易的特性。它通过引入一个名为 EntryPoint 的智能合约,使得智能合约可以表现得像是用户的账户,也就意味着用户操作类似账户的智能合约来管理他们的资产和交易。这样便可以实现复杂逻辑,如多签名、自动执行交易等。
主要特点:
无需硬分叉:ERC-4337 不需要通过硬分叉来实现,不需要对以太坊的协议进行任何修改。
兼容性:这种方法与现有的 EOA 系统兼容,使得过渡更为平滑。
目标:实现账户抽象,使智能合约可以作为账户来处理和验证交易。
本质:让智能合约账户具有 EOA 主动发起交易的特性。
EIP-3074:AUTH 和 AUTHCALL 操作码。EIP-3074 由以太坊研究员SamWilsn、Go Ethereum 开发者Matt Garnett等人提出,且 Vitalik 未参与此提案的起草,这是一种允许 EOA 将其权限委托给智能合约的方法,引入了两个新的操作码:AUTH和AUTHCALL,使得智能合约可以代表 EOA 执行操作,比如批量处理交易、赞助 gas 费用。这对于以太坊的虚拟机是一个较大的变动。
主要特点:
委托机制:EOA 可以通过AUTH操作码授权一个智能合约,然后通过AUTHCALL让这个智能合约代表它执行操作。
安全隐患:委托机制可能导致安全问题,因为如果授权给恶意合约,可能会导致资金被盗。
目标:通过允许 EOA 将其权限临时授权给智能合约,来增强 EOA 的功能性。
本质:升级 EVM,增加两个操作码。
EIP-7702:为一笔交易设置 EOA 帐户代码。Vitalik 作为第一作者,于 5 月 7 日刚发布了此提案。作为 EIP-3074 的替代方案,EIP-7702 引入一种允许 EOA 在交易过程中临时采用智能合约功能的机制。通过这种方法,EOA 可以在单一交易执行期间将 EOA 转换成智能合约钱包,而在交易结束后恢复到普通状态。并且因为 EIP-7702 已经提供了临时改变 EOA 代码的框架,所以在 EIP-7702 的基础上实施 EIP-5003(允许 EOA 永久转变为智能合约账户)变得相对简单,通过设置不在交易结束后清除代码,可以实现 EOA 到智能合约的永久转变。
主要特点:
临时转换:在交易过程中,EOA 的智能合约代码临时被赋予执行特定操作的能力。
高度兼容性:EIP-7702 与 ERC-4337 的智能合约钱包代码高度兼容,可以直接利用已经为 ERC-4337 编写和部署的智能合约代码,使得现有的账户抽象化工作可以被重用,避免分裂现有的账户体系。
无需引入新的操作码:与 EIP-3074 相比,EIP-7702 虽然也是协议层标准,但它在交易中临时应用智能合约代码,不需要永久改变以太坊虚拟机。
目标:结合 EIP-3074 和 ERC-4337 的特点,提供一种更加灵活和兼容的账户抽象方案。
本质:临时应用智能合约代码。
EIP-7702 提供了一种避免引入新操作码而实现类似 EIP-3074 功能的方法,同时更好地为账户抽象终局的实现做准备。账户抽象终局(endgame of account abstraction)是指一个预见的未来状态,在这个状态中,以太坊上的所有账户都使用智能合约钱包来管理资产和交易,而不再依赖传统的 EOA。这种普遍的账户使用智能合约钱包的情景,被称为账户抽象的「终局」。EIP-7702 不仅解决了当前的问题,还通过与未来可能的账户模型的兼容性设计,确保了长期的有效性和实用性。