4.挑战与应对
4.1 账户抽象标准未定
共识层账户抽象:首先是对于以太坊上 Layer1 上的账户抽象,ERC4337 并非唯一方案。以 EIP2938 为主导的共识层账户抽象只是暂时被搁置而非完全否决。或许从现阶段来看,账户抽象带来的利益无法驱使开发者在以太坊底层做出改动。但随着 ERC4337 式账户抽象开发到瓶颈,人们便会要追求更佳的用户体验。这时,可以提高合约账户权限使其能主动发起交易,去除掉 Bundler 并降低交易成本与交易复杂度的共识层账户抽象方案或许又会重新进入大家的考虑范围。
有待确定的 EIP 提案:其次,ERC4337 正式实施的时间不足一年,现在还在不断发现问题并进行完善。因为无法对 Entry Point 进行改动,所以暂时提出的优化 ERC4337 的 EIP 提案大都是涉及 Bundler 和 操作码的优化,比如 EIP-1589 中可以防止 MEV 攻击的 endorser 合约,以及涉及共识层变更的 EIP-3974 中所添加的将 EOA 账户控制权托管给智能合约账户的操作码,这些提案能否通过还有待以太坊开发社区的讨论。
Layer2 原生账户抽象:最后还有 Layer2 上的各类原生账户抽象钱包,比如 Starknet 与 Zksync Era。在 Starknet 中采用了不同于以太坊的 ECDSA 签名,大大降低了签名和验签过程的成本,从而大大降低了 gas 消耗。同时 Starknet 中仅有合约账户,默认其为顶级账户,不需要再通过复杂的合约层操作便直接可以让合约账户主动发起交易,为开发者提供了更灵活、丰富的应用设计环境。
总而言之,要在以太坊上进行账户抽象,ERC4337 虽然是现今得到最广泛认可的选项,但并非唯一选项。
4.2 ERC4337 自身缺陷
更高的固定 gas 成本:ERC4337 钱包中基本操作的 gas 消耗为 42000 gas,是普通 EOA 账户的两倍。具体原因如下:
ERC4337 账户与 EOA 账户的 gas 消耗区别 ,来源:Kernel Ventures
可以看出,由于智能合约的引入,在执行合约业务(解包 UserOperation,执行条件验证,链上哈希等)以及触发事件并在以太坊上发布日志的过程中产生了巨大的 gas 消耗。同时,ERC4337 中所提出的交易批处理以降低交易成本的方式被证明在实际交易中并不实用,大多数的用户往往不需要在一次调用中打包大量交易,仅在项目方发放空投等极少数情景下可以发挥 ERC4337 批处理交易的优势。此外,原先为了分摊交易成本的 UserOperation 一旦在链上执行失败,也会给钱包账户或 Bundler 带来更高额的损失。
升级成本高:在 Entry Point 智能合约中可以通过 entryPoint() 函数返回一个符合 IEntryPoint 接口的参数,在 Wallet Contract 中通过这个参数可以判断外部的交易是否来自 entryPoint 合约中的函数调用。但这要求必须将 EntryPoint 的地址写死在了每一个生成的智能合约账户主体中,如果要对 EntryPoint 合约进行升级需要所有的智能合约账户主体都同意。当 ERC4337 被广泛接受后,这一改变的难度将会不亚于共识层的改动。所以 ERC4337 的部署必须非常慎重,做好各个方面的安全审计。而后续如果要进行性能的优化,也将会是一件非常困难的事情
合约安全问题:在原先的 EOA 账户中交易过程简单,交易安全性通过密码学以及共识层的共识机制来进行确保。加密算法和分布式系统的共识机制都是经过了长期考验以及学界认证的技术,出现漏洞的可能极低。而 ERC4337 钱包将许多原来通过区块链共识机制验证的操作改为合约函数判断,这对合约自身安全性的要求极高,而随着交易逻辑的复杂化,安全风险也急剧上升。
4.3 ERC4337 的更新成本
传统钱包巨头的观望:
ChainCatcher 消息,MetaMask 产品负责人 Alex Jupiter 在接受 Decrypt 采访时表示,尽管 EthCC 期间账户抽象、EOA 等多种优化用户体验的技术被多次提及,但 MetaMask 会非常谨慎地采用这些技术.
MetaMask 作为传统钱包供应商,可以帮助用户便捷的创造 EOA 账户,并通过提供去中心化的 Swap 服务收取手续费。对于这类已经形成稳定盈利方式的传统钱包巨头,大都不愿意冒险做出改变,当下对账户抽象也是多采取观望态度,虽然积极探索但在尝试方面始终保持谨慎态度。
Dapp 的更新成本
以太坊上现有的 Dapp 包括 Opensea,Uniswap,MetaMask Swap…..,均以 EOA 账户作为默认服务对象。而如果要使这些 Dapp 完全兼容 ERC4337 钱包,需要改变 Dapp 与钱包交互的审查机制以及代币质押机制。要完成这一改变,现今主流 Dapp 的智能合约代码都需要进行改动,这一过程可能产生的安全风险以及更新成本都无法估量。此外,考虑到之前 Tornado 合约而引发的 Dapp 对合约账户的大量交易抵制,这一更新的工作量将更加巨大。
4.4 ERC4337 与跨链
在以太坊与 Layer2 进行交互的跨链桥中,往往默认接收网络的收款地址为发送网络上付款的地址。这在传统的 EOA 账户中完全是没有问题的,因为同一把私钥通过签名便可以实现对两个网络上地址同样的控制效力。但是在 ERC4337 钱包中,转账发起地址为合约地址,而并不受私钥控制,也就不能把收款地址设置为与发送网络相同的地址了。所以 ERC4337 钱包与现今以太坊 Layer1 和 Layer2 之间几乎所有跨链桥都存在不兼容问题。
4.4 ERC4337 的改进措施
EIP 提案改进:虽然 ERC4337 标准自身难以改动,但是我们可以通过提出新的 EIP 补充提案对 ERC4337 进行补充,比如 22 年 6 月提出的 EIP5189,通过引入 endoser 合约降低了 Bundler 筛选过程的风险以及进一步防止了 MEV 机器人的恶意攻击。此外还有 EIP3074,EIP5003 等大量 4337 相关的待审查提案。
跨链协议的补充:对于以太坊 Layer1 和 Layer2 跨链问题最根本的解决方法是从跨链桥的底层出发,用户可以自行设置在接收网络上的接收地址,但这一改进成本较高,设计到跨链桥的重新部署以及新合约的安全问题。目前比较理想的解决方案是通过设置一个可信的第三方 EOA 账户,在 ERC4337 钱包和跨链桥间起到一个中间人的作用,而这要求这个中间人存有大量的 ETH 或者 Layer2 token 质押,每次在帮助执行一笔跨链前先质押超额资产,等收款的智能合约钱包接收到转账后返回质押的 token,并给予一定奖励。
ERC4337 的自建 Dapp:自从今年 3 月份入口点合约部署以来,大量基于 ERC4337 开发的钱包项目落地以太坊,这些项目自身便与 ERC4337 钱包兼容,比如高度可拓展的智能合约钱包项目 ZeroDev Kernel,与日本政府官方合作的钱包抽象项目 MynaWallet……。这些项目自成一个庞大的账户抽象钱包生态,可以看到,即便在传统钱包商多持观望态度的情况下,以太坊上 UserOperation 的使用量从今年 3 月份以来仍持续攀升,处于快速扩张状态。
以太坊上 UserOperation 月使用量的变化, 来源:Dune, 时间:2023 年 10 月 8 日