本文为 SevenX 研究团队原创,仅供交流学习,不构成任何投资参考。如需引用,请注明来源。
原版英文报告于 2023 年 5 月 首发。更多中文投研内容,请关注公众号【SevenXVentures】。
作者:Rui
正如许多人所说,账户抽象 (AA) 技术,尤其是 ERC-4337,有望彻底改变自我托管钱包的用户体验,并使其能够扩展以供大规模采用。然而,2023 年 5 月越来越近了,我们必须认识到该标准还处于早期阶段,机遇与风险并存。
* 请注意,随着升级的快速发展,本文内容可能很快就会过时,并且本文仅基于我个人观点。
TL;DR
ERC4337:
AA 标准仍处于早期阶段,不过许多创新构建者正努力对其进行进一步开发。在生态系统的支持和 MetaMask 等大型产品的普及这一大背景下,我们可以预见 AA 将加快发展进程,并产生令人兴奋的成果。
L2:
对 AA 的采用在 L2 解决方案中有所不同。较大的 L2(例如 Optimism 和 Arbitrum)本身并不支持 AA,而 ZKSync 和 Starknet 则支持。
Bundler 服务:
Paymaster 服务:
AA 钱包和 SDK:
以太坊网络中存在两种类型的帐户:外部账户 (Externally Owned Account, EOA) 钱包,如 MetaMask,以及合约账户 (Contract Account, CA) ,比如 Safe。
EOA 钱包和合约钱包之间的主要区别在于其控制方式。EOA 钱包由个人用户通过私钥控制,而合约钱包则由智能合约控制。虽然 EOA 钱包更简单,并用于管理个人加密货币持有量,但合约钱包可以有更复杂的规则,并可用于特定目的。
EOA 钱包用户需要注意保护私钥。在私钥上所犯下的任何错误或疏忽都可能招致资金损失,因此 EOA 钱包的使用成本比较高,风险也高。即便是经验丰富的加密货币用户也可能会因为一次错误或粗心的举动而失去对其账户的控制。操作复杂、无法略过 gas 费或无法进行 gas 费代付以及钱包功能有限,这些都是困扰用户的问题。
智能合约钱包为部分问题提供了解决方案,但以太坊目前要求将所有操作打包在来自受 ECDSA 保护的 EOA 的交易中。这会产生额外的交易费,还要多消耗 21000 gas 费,随之而来的还有潜在的中心化风险和复杂的操作:用户需要管理两个账户并在单独的 EOA 中存入 ETH 来支付 gas 费,或者依靠中心化中继系统支付。
这些痛点催生了 AA 新标准——ERC-4337。
如今,这些事情都可以用合约钱包解决,但以太坊本身要求将所有内容打包在源自 ECDSA 保护的 EOA 的交易中,这将导致:
多年来,人们多次尝试在基于以太坊的区块链上实现账户抽象,例如 EIP-86 和 EIP-2938。然而,这些方法都行不通,因为它们都需要修改共识层,而这是很难实现的。
ERC-4337 通过引入名为 UserOperation 的更高层伪交易对象来实现账户抽象,这在捆绑概念方面类似于 rollups。幸运的是,这个标准让我们可在不改变共识层的情况下构建账户抽象。
EIP 4337 的模块化设计将智能合约钱包的账户抽象功能划分为多个端口:
Bundler:
入口点:
需要存入智能合约钱包的代币向 Bundler 支付 gas 费:当 Bundler 使用 EOA 触发 handleOp 时,会产生 gas 费。智能合约钱包可以用自己的余额支付 gas 费,或者请求 Pymaster 支付。可能失败:gas 费不足,验证步骤失败;即使有足够的 gas 费, UserOperation 执行步骤也可能会失败,例如运行时错误。无论执行是否成功,入口点合约都会向 Bundler 支付 gas 费来触发该 handleOp 功能。入口点合约为智能合约钱包提供添加或提取代币作为抵押品的功能。
智能钱包:
智能合约钱包主合约将 UserOperation 的验证和执行步骤分开。通过将其分离,Bundler 可以在链下验证 UserOperation ,从而过滤掉恶意交易,而无需支付 gas 费。
validateOp 函数中定义了验证步骤:第一次调用 validateOp ,Bundler 模拟链下验证,验证 UserOperation 中的签名,并确保智能合约钱包有足够的 gas 余额;第二次调用 validateOp 的是入口点合约,在执行 UserOperation 之前执行链上验证。
Paymaster:
Wallet Factory :
签名聚合器:
Gas 抽象包含无 gas 费交易,并使用任意 ERC20 代币支付 gas 费。该逻辑可在 Paymaster 合同中或通过中继器执行。对 AA 而言,许多智能合约钱包本身可以实现 EIP 4337 兼容的 Paymaster 合约,并在入口点合约上质押代币,帮助用户支付 gas 费。
在私钥丢失或泄露的情况下,用户可以将新密钥授权为合法的钱包所有者。社交登录和社交恢复的逻辑一般在钱包的主合约中定义。可采用多种方式,如电子邮件、多重签名、MPC 或 SWIE(用以太坊登录)等。
交易批处理是智能合约钱包独有的功能,允许钱包用户在单个链上交易中执行多个交易。
目前,许多钱包都与第三方供应商合作,将法币充提通道和跨链桥接集成到钱包中。这些充提通道和跨链桥接可以进一步与 gas 抽象中的支付合约(Paymaster)进行整合。
AA 最大的优势之一可能是其模块化服务,Bundler、Paymaster 和其他部分可以灵活地组合在一起。
使用 ERC-4337 进行简单转账的成本要比使用传统钱包(通常称为 EOA)高得多,因为前者需要调用合约。
然而,在 Rollup 网络上,使用 ERC-4337 进行简单转账可能比 EOA 更便宜,因为它可以将签名聚合在一起,以减少主网上的数据量。
扩展的交易可扩展性导致攻击向量增加、迁移到新标准时可能出现未知错误或安全风险、需要强大而安全的全局入口点合约来确保所有交易经适当签署及验证,诸如此类的挑战。
✅ 和 ❌ 表示是否支持原生 AA。
Optimism: ❌
Optimism 版本 1 有三个 OVM 操作码,以实现智能合约钱包的账户抽象。然而,出于一致性和安全考虑,版本 2 移除了这些操作码,并且没有关于支持账户抽象的官方声明。
Arbitrum: ❌
虽然目前有一些智能合约钱包在 Arbitrum 上构建,但没有关于支持账户抽象的官方声明。
Starknet: ✅
Starknet 只有具有验证和执行功能的智能合约账户,所有账户必须实现这些功能以验证签名并确保 gas 费。Starknet 禁止验证功能调用外部合约状态,以防止出现未执行的交易。然而,Starknet 与以太坊还是有些不同,比如缺少 UserOperations、类似 Paymaster 的交易费抽象协议,以及需要具有代币余额的账户来创建新合约。另外,如果已验证的交易失败,Starknet 的排序器就无法收取 gas 费,而以太坊却可以。
zkSync: ✅
zkSync 不区分 EOA 和合约账户。它的账户模型类似于 EIP 4337,并包括独立的 validateTransactiom 和 executeTransaction 函数。Paymaster 接口还包括 validateAndPayForPaymasterTransaction 和 postOp 函数。然而,二者还是有不同之处,比如在验证过程中调用已部署的外部合约和外部存储的能力。Paymaster 在交易验证期间也可以调用外部存储。
目前,一些优秀的项目如 Stackup、Etherspot、Candide、Infinistism、Pimlico 都在尝试构建基础设施。
构建者:
一些共识:
绝大多数 Bundler 的开源性质使其具有非排他性和非竞争性。任何 RPC 端点都可以通过复制开源代码来运行 Bundler。
即使运行 Bundler 的 RPC 端点通过 API 密钥收取服务使用费,Bundler 服务也比其他基础设施(如支付合约 Paymaster)更难变现,因为 Paymaster 可以通过与第三方充提供应商或 DeFi 协议聚合器提供商合作,轻松赚取费用差额。
验证和执行 UserOperation 需要尽可能多的 Bundler,以便更好地实现去中心化。因为目前第三方 Bundler 服务提供商只有 Stackup 和 eth-infinitism,我们确实需要更多这样的 Bundler 服务提供商。
Bundler 自己传递消息并传播用户动作,类似于共享内存池,无需就具体事项达成一致。Bundler 有过滤垃圾信息的重要功能,并且出于自身的经济原因,Bundler 希望尽可能地进行监控,以确保内存池的安全。
Bundler 服务的区别:
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。