L2 上的原生账户抽象
_作者:Harry,Kroma 区块链工程师
Kroma 目前正在基于 eth-inifinitism 提出的 RIP-7560 实施原生账户抽象。本文介绍了 Kroma 的原生 AA 解决方案的简要规范及其对 Kroma、Superchain 和更广泛的以太坊生态系统的潜在影响。
自 2023 年在主网上推出 ERC-4337 以来,账户抽象生态系统和合约账户一直在不断发展和进步。特别是在 2024 年 6 月的最后一周,UserOps 的数量达到了创纪录的 112 万,表明智能合约账户在 dApp 和消费者中变得越来越受欢迎。
每周成功的 UserOps | 来源:BundleBear)
智能合约账户的核心目前在 ERC-4337 中。ERC-4337 是通过一种链下机制实现账户抽象的提案。它引入了以下两个实体,以实现在 EVM 链上无缝使用智能合约账户:
ERC-4337 通过三个抽象级别显著提升了用户体验:
尽管具有这些优势,ERC-4337 并非完美解决方案。以下是其问题所在。
ERC-4337 旨在通过入口合约在链上执行 UserOp 的验证和执行。这涉及入口合约内的大量计算,ERC-4337 的 UserOp 消耗的 gas 比普通 EOA 交易更多。
如上数据所示,在 ERC-4337 中智能合约账户的原生转账的 gas 费用约为普通 EOA 的 5 倍。尽管 EIP-4844 的引入降低了 L2 上的 gas 费用,但仍然高昂的 gas 费用可能会带来问题。例如,如果通过支付主提供的方式将 gas 成本减半,提供支付主的应用程序可以以相同资金吸引两倍的用户。因此,当前 UserOp 的高 gas 费用对用户吸引力产生了负面影响。
目前,UserOps 通过个人 Bundler 执行。在Bundler级别的集中化可能会导致审查和 MEV 等问题。尽管去中心的公共Bundler网络的概念已经出现,但尚未达到生产级别。
因此,可以引入通过 RPC 端点接收 AA 交易的原生 AA 解决方案,但这对某些 L2 可能不太适用。如果Bundler的角色必须由序列化器执行,则序列化器在序列化器的公共 RPC 级别执行每个的 ERC-7562 规则验证,这将导致可扩展性降低,并增加 L2 执行客户端的技术复杂性。在对 AA 交易需求量大的大型网络中,这一点尤为棘手。
ERC-4337 引入了以下兼容性问题:
tx.origin
被识别为Bundler EOA 的地址,而不是 UserOp 的发送者。TSTORE
或 TLOAD
不仅适用于特定 UserOp 内,而且适用于整个捆绑,构成安全威胁。这是因为整个捆绑被视为单个交易。这不仅可能破坏现有合约的兼容性,而且由于未来合约开发人员的疏忽,可能会不断带来安全事件的潜在风险。
我们正在研究在 L2 上提供原生账户抽象,特别是针对 OP Stack。我们的原生账户抽象架构将包括 3 个 RIP(Rollup Improvement Proposal)的实现:RIP-7560、RIP-7711 和 RIP-7712。
RIP-7560:与 ERC-4337 兼容的新交易类型,降低 gas 费用
RIP-7560 通过结合 EIP-2938 和 ERC-4337 实现了原生账户抽象。它引入了一个新的交易类型,AA_TX_TYPE
,将以太坊交易分为验证、执行和交易后逻辑三个步骤。通过这一方式,RIP-7560 不仅可以包含 ERC-4337 中定义的所有功能,还可以获得进一步与 EIP-7702 等与 AA 相关提案的前向兼容性。
其采用意味着入口合约不再必要。移除它意味着发送 AA 交易所使用的 gas 通常会减少。
RIP-7712:为新交易类型启用 2D Nonce
RIP-7712 启用了 ERC-4337 入口点合约支持的 2D Nonce 的使用。它定义了在 AA_TX_TYPE
交易中包含一个 bigNonce 参数,其 uint256 格式,其中前 24 字节是密钥,最后 8 字节是序列。必须在网络上部署一个名为 NonceManager 的预部署合约来管理 2D Nonce。
这是为了提供向后兼容性,以便在使用 ERC-4337 合约钱包时使用。目前,正在使用 2D Nonce 在 ERC-4337 兼容钱包中实现并行交易和多重签名钱包等功能。
RIP-7711:RIP-7560 捆绑交易类型
RIP-7711,类似于 ERC-4337,提议捆绑 AA_TX_TYPE
交易,并将验证和执行分开,以防止捆绑内的交易无效。
OP Stack 区块构建本身由单个序列化器执行,但任何连接的节点都可以向内存池提供交易,并按优先费用对交易进行排序。这意味着在 AA 交易处理期间执行特定交易可能会轻松影响另一个交易的有效性。如果出现这种情况,可能会出现两个问题:
即使需要,序列化器可能无法填充块。如果前面的交易导致后续交易无效,序列化器无法收取该交易的 gas 费用,因此无法按预期填充块空间。
如果无效交易大量涌入,干扰序列化器的块构建,可能会发生 DoS 攻击。因此,在 OP Stack 中进行 RIP-7711 和 ERC-7562 规则检查至关重要。每个规则的作用如下:
RIP-7711 在捆绑中分离了 AA_TX_TYPE
交易的验证和执行,确保特定交易的执行不会使捆绑中的另一个交易无效。
ERC-7562 在验证阶段定义了一个规则,限制了可访问的存储空间和可执行的操作码。在构建区块之前检查此规则可以确保特定交易的有效性不会受到另一个交易的验证阶段或区块内状态更改的影响。
在 OP Stack 中的本地账户抽象中,必须执行捆绑和验证/执行分离,以及在验证阶段进行存储和操作码检查。我们建议引入一个捆绑节点来执行这两个任务。如果此节点符合所需规范和条件,任何人都可以无需权限地操作它,并且它可以由现有的捆绑提供者组成,因为它执行的任务几乎与 ERC-4337 中当前的捆绑器相同。
该节点收集用户的 AA_TX_TYPE
交易,对它们进行捆绑,调试捆绑中的交易的验证阶段,以确保没有禁止的存储槽访问或操作码使用,然后通过 eth_sendRip7560Bundle
RPC API 将捆绑发送到内存池。
在一个区块中存在多个捆绑的情况下,定序器在每个捆绑前插入了由 RIP-7711 定义的 Bundle Header 交易。这不会改变区块链的状态,只是指示每个捆绑中有多少交易。
将Gas费降低高达 40%
这种本地账户抽象可以通过在协议内执行以前在 ERC-4337 Entrypoint 合约中执行的多个操作,显著降低Gas成本。
简单的基准测试显示,ETH 转账消耗了大约 60,000 到 70,000 gas,这相当于与 ERC-4337 UserOp 相比Gas成本降低了 30-40%。更详细的基准测试结果将在未来几天内发布。
更好的开发人员体验
我们当前设计的主要重点是与 ERC-4337 兼容。我们希望这种本地账户抽象架构不是 ERC-4337 的替代品,而是与之兼容。换句话说,在 ERC-4337 中使用的智能合约账户、捆绑器和 SDK 应该能够选择采用这种架构而进行最小的更改。
此外,智能合约账户构建者还将能够摆脱他们以前必须谨慎对待的方面。通过在协议级别嵌入账户抽象,开发人员可以获得与兼容性相关的以下好处:
tx.origin
的合约兼容性。为 Kromans 提供无缝的用户体验
如上所述,账户抽象可以极大地增强用户体验。Kroma Network 将引入本地账户抽象,以允许用户以最经济的方式使用智能合约账户。
这意味着 Kroma 内的用户将能够更轻松地使用 dApps,包括 Kroma 内的游戏。例如,以下用例是可能的:
重要的是,使用本地账户抽象显著降低了此类操作的Gas成本。
迈向 10 亿用户链上的一步
我们正在构建这个架构,基于 OP Stack 的代码库,而不是 Kroma 的。换句话说,我们的目标是让所有 Superchain 和 OP Stack 链享受这种架构的好处。尽管这种架构仍然不够成熟,需要迭代,但在 OP Stack 链上启用它可以对整个生态系统产生积极影响。特别是,像 Optimism、Base、Redstone 和 Cyber 这样广泛使用智能合约账户的链,引入本地账户抽象将显著增强 Superchain 生态系统内的用户体验。
此外,这是以太坊生态系统用户体验的一大进步。智能合约账户是以太坊账户抽象终极目标的核心,以太坊旨在使其成为默认选项。为了实现这一目标,协议必须原生支持智能合约账户。我们正在为此构建基础设施,我们相信这一举措将进一步推动以太坊生态系统的用户体验方面。
我们正在以下 GitHub 存储库中以开源方式构建这个基础设施。
关于 Kroma
作为亚洲领先的建立在 Superchain 上的 Layer 2 解决方案,Kroma 是第一个具有主动故障证明系统的 OP Stack Rollup,利用 zkEVM。
一旦 ZK 证明的生成变得更具成本效益和更快速,Kroma 将过渡到通用的 ZK Rollup —— 利用其原始模块化 ZK 后端库 Tachyon。
Kroma 计划推动基于游戏化的 web3 体验,借助其在游戏、消费者应用、亚洲市场和技术能力方面的优势,实现真正的通用 web3 采用。
网站 | Twitter | Discord | Warpcast | Github | 文档
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!