如何让账户抽象赋能基础设施,服务十亿级用户?
原文作者: Albert He , BlockPI Cheif Scientist
原文编译:MarsBit,MK
无论是牛市还是熊市,以太坊生态系统一直在持续建设,并不断自我优化。其中,账户抽象(AA)在近年来已经成为非常重要的进步,并且已经渗透到以太坊生态系统的各个组成部分,包括应用、基础设施、用户和开发者。
我们可以预见到,广泛采用 AA 可以降低区块链使用案例的门槛,从而将 web2 用户体验引入到 web3 行业。
为了迎接形成一个价值数十亿的 AA 市场的可能性,BlockPI 计划将资源投入到将 AA 整合到其基础设施服务中。通过构建 AA 的整合,我们的目标是为 AA 用户提供更便利、更高效的方式来与他们在区块链上的合约钱包账户进行交互,同时也将 BlockPI 定位为行业的领导者。
在这篇文章中,我将深入探讨我们对 AA 的理解,并从基础设施服务提供商的角度分享思考。
EOA 和智能合约钱包
AA 的概念源于 EOA 账户的限制。EOA 账户(外部拥有账户)是以太坊中的典型用户账户,由公钥(区块链地址)表示,可通过私钥访问。它是以太坊生态系统的主要组成部分,允许用户与智能合约交互并在网络上执行交易。然而,使用 EOA 对人们来说可能具有挑战性,某些不便可能会影响用户体验。
EOA 的第一个不便之处与 Gas 的使用有关。每笔交易都会花费用户大量的 ETH 作为 Gas 费用(Gas 价格 25 Gwei 的简单 ETH 转账费用为 0.5 美元,合约交互或 Gas 价格更高的费用更多)。这使得小额交易的交易费用非常昂贵,尤其是在网络拥堵高峰期。此外,只有 ETH 可以用来支付 Gas,这意味着用户必须在他们的钱包中拥有 ETH,对许多用户来说,这是一个重要的入门障碍。
EOA 的第二个不便之处是无法进行条件交易,除非使用其他智能合约来实现某些逻辑。例如,如果用户想设置定时周期转账,他们必须将 ETH 转移到具有此功能的第三方智能合约中来实现此功能。
EOA 的第三个不便之处是签名加密算法。以太坊网络使用一种特定的数字签名算法,称为 secp 256 k 1 ,以确保交易的真实性和安全性。这是硬编码到系统中的,用户无法选择使用其他算法。
因此,从这些问题出发,人们开始尝试寻找解决方案。智能合约钱包(例如 MetaMask 和 Argent )是这些努力的产物,通过使用以太坊智能合约来增强用户账户功能,解决了许多 EOA 的限制。然而,这样的解决方案还有一些缺点,主要是需要用户为交易支付 Gas 费,以及智能合约钱包的普及问题。
基于这些挑战,以太坊开始尝试引入一个新的概念,即账户抽象化。账户抽象化的目标是在协议级别解决这些问题,而不是依赖于智能合约或者其他中间件。这就是我们现在所说的账户抽象化(AA)。
这篇文章的剩余部分,我将深入探讨账户抽象化的概念,以及我们如何利用这一概念优化 BlockPI 的基础设施。
除了上文提到的 EOA 的三个不便之处,公钥和私钥之间的绑定关系也是一个问题。私钥是访问 EOA 的唯一方式,如果丢失,就没有办法恢复私钥。这意味着如果私钥丢失,所有与之关联的资产将无法找回。
此外,EOA 在执行单个交易中的线性任务时也面临约束。例如,如果用户希望在一个动作中批准、交换和取消批准代币,他们需要执行三个单独的交易,这既不高效又耗时。
好消息是,以上所有的问题都可以通过智能合约钱包解决。智能合约钱包是一种实现 AA 的特殊类型的智能合约。它被设计为在以太坊网络上作为用户的钱包,并提供更适应和个性化的方式来管理他们的资金。只要以太坊智能合约能够实现的逻辑,智能合约钱包就可以提供所需的功能。
具体来说,智能合约钱包的交易可以打包成一个链上交易共享 Gas 成本,如果有第三方愿意支付,甚至可以没有 Gas 成本。一个操作可以促进在其智能合约钱包内执行顺序任务。智能合约钱包能够支持任何签名的加密算法,并设置恢复代码等。
随着人们对智能合约钱包的所有好处的讨论,以太坊社区实际上从一开始就一直在研究合约钱包。尽管已经提出了许多 EIP 来探索账户抽象化,但直到 2021 年都还没有建立统一的标准。以下是几个最具代表性的提案。
EIP-86
最初由 Vitalik Buterin 在 2017 年创建。实现了一组变化,为「抽象化」签名验证和 nonce 检查服务,允许用户创建执行任何所需签名 /nonce 检查的「账户合约」。
EIP-2938
创建于 2020 年。这个 EIP 的标题是账户抽象化。这个 EIP 详细描述了 AA 的概念。它引入了一种新型的交易,即 AA 交易。这种交易将由 EntryPoint 地址初始化,并调用 AA 钱包合约。通过这样做,它提供了一个统一的规范,并将 AA 引入到以太坊共识中。更具体地说,它在以太坊共识中添加了两个新的操作码、三个全局变量和一个不同的有效负载结构。
EIP-3074
创建于 2020 年。这个 EIP 引入了两个 EVM 指令,AUTH 和 AUTHCALL。AUTH 根据 ECDSA 签名设置一个名为 authorized 的上下文变量。 AUTHCALL 以被授权的账户身份发送一个调用。这允许一个智能合约代表 EOA 发送交易。但是这对于 AA 来说还不是一个完美的解决方案。在赞助交易期间进行原生价值转移方面,EIP-3074 存在一定的限制。如果你失去了对 EOA 的访问权,你将无法恢复你的资产,如果被盗,所有的资产需要转移到一个新的账户。
由于需要在共识层进行改变或者并不全面等主要原因,上述的所有想法都没有被正式采纳到以太坊协议中。因此,以太坊社区继续探索如何在不改变共识的情况下将 AA 引入到以太坊协议中,最终创建了 EIP 4337 。
ERC — 4337
EIP-4337 最初在 2021 年 9 月提出,并在 2023 年 3 月被授权为 ERC-4337 。它的作者包括 Vitalik Buterin,Yoav Weiss,Kristof Gazso,Namra Patel,Dror Tirosh,Shahaf Nacson 和 Tjaden Hess。
EIP-4337 是一个改变游戏规则的提案,它引入了 AA,而无需对核心以太坊协议做任何改变。EIP-4337 引导了 ERC-4337 标准,构建者可以使用它来实现他们自己的智能合约钱包,还包括一些额外的基础设施,包括「Bundlers」和 UserOperation 内存池。通过这样做,它实际上在一个更高级的系统中复制了交易内存池的功能。用户不再发送交易,而是提交 UserOperation 对象,这些对象然后可以打包成一个单独的交易并包含在以太坊链中。
以下是官方文档对 ERC-4337 的更具体的技术解释,以及一些更好理解的评论。
ERC-4337 的定义和关键角色
UserOperation — 描述代表用户发送的交易的结构。为避免混淆,它没有被命名为「交易」。它被发送给 Bundler 以与其他 UserOperations 打包在一起。然后,该包被作为一个单一的交易发送给区块创建者。
Sender — 发送新 UserOperation 的合约账户。智能合约钱包必须实现 ERC-4337 的 IAccount 接口。
EntryPoint — 执行 UserOperations 包的单例合约。Bundlers/Clients 将支持的 EntryPoint 加入白名单。此合约由 Infinitism 团队批准并审核,负责处理所有 UserOperations 并连接其他合约,包括 Wallet Factory、Aggregator、Paymaster。它在大多数兼容 EVM 的链上都将有相同的地址。
Bundler — 一个从内存池中捆绑多个 UserOperations 并创建 EntryPoint.handleOps() 交易的节点(区块构建器)。协议层的所有验证节点不必都是 Bundler。Bundler 服务可以独立于区块构建器运行,并使用 RPC 发送打包的 UserOperations。
Aggregator — 由账户信任的帮助合约,用于验证聚合签名。Bundlers/Clients 将支持的聚合器加入白名单。聚合器必须实现 ERC-4337 的 IAggregator 接口。
Paymaster — 一个合约,如果在 EntryPoint 合约中存放了足够的 ETH,它可以为 Sender 支付 UserOperation 的 Gas 费用。Paymaster 实现了有效的 Gas 抽象。Paymaster 必须实现 ERC-4337 的 Paymaster 接口。Paymaster 可以有自己的逻辑与 Sender 达成交易。例如,Sender 支付 USDC 给 Paymaster,然后 Paymaster 用 ETH 赞助其 UserOperations。实际上,只要 Paymaster 同意且在技术上可行,任何 ERC 20 代币甚至其他链上的代币都可以支持。
Wallet Factory — 一个可以被调用以为 ERC-4337 用户创建智能合约钱包的合约。部署钱包工厂是无需许可的。作为链上组件,它开放于公众审计和透明审查。广泛使用的 Wallet Factory 应由专业人士全面审计。
以下图表解释了 EntryPoint 合约如何与其他角色互动。
Bundlers 调用 EntryPoint 合约的 handleOps 函数,该函数以 UserOperation 为输入。
handleOps 在链上验证 UserOperation,检查是否由指定的智能合约钱包地址签名,以及钱包是否有足够的 Gas 来补偿 Bundler。
如果验证成功,handleOps 将根据 UserOperation 的 calldata 中定义的函数签名和输入参数执行智能合约钱包函数。
另一方面,当 Bundler 使用 EOA 触发 handleOps 函数时,会产生 Gas 费用。智能合约钱包可以从自己的账户余额中支付 Gas 费用给 Bundlers,或者请求 Paymaster 合约代其支付。没有足够 Gas 的 UserOperations 无法通过目标智能合约钱包中的验证过程,从而在执行前失败。即使有足够的 Gas,UserOperations 在执行过程中也可能失败,例如,由于运行时错误。无论执行是否成功,EntryPoint 合约都会将 Gas 费用支付给触发 handleOps 函数的 Bundler。
(来源:官方文档:https://eips.ethereum.org/EIPS/eip-4337)
在 ERC-4337 生效后,用户现在有两种方式来启动区块链交易。一种是原始的方式,其中 EOA 启动交易。另一种是使用 ERC-4337 标准通过 Bundler 启动 UserOperation,然后由 Bundler 将其与其他 UserOperations 打包并在链上发起。以下流程图说明了普通 EOA 发送交易和 ERC-4337 合约钱包发送 UserOperation 的区别。
道路已经铺好,但乘客还不多
ERC-4337 为用户和开发人员在以太坊平台上使用和构建 AA 提供了一个强大的框架。尽管这个框架是一个重要的前进步骤,但仍然需要解决和消除一些挑战和不确定性。
AA 的采用还处于初级阶段。根据 Dune ERC-4337 分析面板(ERC-4337 Account Abstraction from @niftytable),只有 65 k+ 的 UserOperations 在链上执行,其中 90% 来自 Polygon 。因此,此时执行的 UserOperation 数量仍然非常小,其中大部分为开发者的测试,只有少部分归因于用户。我们注意到,已经整合了 AA 的产品仍处于初期阶段。同时,可以看到 Bundler 的利润为负(以 MATIC 计算为 -700)。这是因为 Polygon 上有一些 Bundler 没有正确计算预验证 gas。这种验证算法仍需要优化。
除此之外,还有一些问题需要解决。其中一个问题是 Bundlers 如何处理交易失败。在 Bundler 将几个 UserOperations 打包在一起后,Bundler 首先模拟交易以检查是否会回滚,然后计算由 Sender 或 Paymaster 返回的 Gas 费用是否大于交易支付的 Gas 费用。如果有利可图,Bundler 就将这批 UserOperations 一起作为一个交易提交给区块构建器。然而,交易可能仍然会失败,导致 Bundler 支付 Gas 费用但没有从 EntryPoint 收到退回的 Gas。例如,用户可能向不同的 Bundlers 发送操作。如果任何操作有利可图并且它们的模拟成功,Bundlers 愿意在链上提交它们。这意味着如果一个 UserOperation 同时被不同的 Bundlers 提交。只有一笔交易会成功,只有一个 Bundler 会从 EntryPoint 接收到 Gas 费用,所有其他 Bundlers 都会因链上失败而损失 Gas。虽然有人可能会争辩说,用户不应该这样做,这样的行为会被认为是恶意攻击,Bundler 可以禁止 Sender 地址,并拒绝来自这个地址的任何未来请求,但这并不是一个合理的方法,因为用户可能无意中提交了这个操作。这样的问题需要在代码中得到适当的解决,可能通过开发一个未完成的公共 mempool 网络。此外,由于突然的 Gas 波动,即使交易已经成功提交并被模拟为有利可图,Bundlers 也可能面临损失。
另一件事是从 AA 中提取的最大可提取价值(MEV)。在以太坊的背景下,MEV 通常指的是矿工或其他交易处理器通过在一个区块中操纵交易的顺序或在区块中包含他们自己的交易所能提取的价值。有人注意到 MEV 的逻辑也可以应用到 AA 上,因为 Bundlers 可以自由地排序 UserOperations 吗?然而,这是有条件的,需要有足够的 UserOperations 被打包在一起,Bundlers 才能提取 MEV。现在整个 AA 市场还处于初期阶段,因此 Bundler MEV 也可以被认为是初期阶段。总的来说,AA 行业可能会发展出两个方向:一个是类似于以太坊主网的,有像 Flashbots, Ultra Sound 和 BloXroute 这样的参与者参与其中,另一个是形成 Bundler 共识以执行公平的排序。而后者的方式将完全消除 AA 中 MEV 的可能性。
未来的发展
公共 mempool
尽管 AA 生态系统已经在运行,但仍需要完成许多开发工作。观察整个 AA 生态系统,目前最大的缺口就是公共 mempool。Etherspot 团队,也就是 Skandha Bundler 客户端的开发者,目前正在开发公共 mempool 的 p2p 网络。预计公共 mempool 的 p2p 网络将在今年 8 月可用。
打包算法
在此过程中,以太坊基金会已经资助了由专注和勤奋的开发人员组成的几个 AA 开发团队。到目前为止,已经开发出多个版本的 Bundler 客户端,并且现在可用。其中一些在产品成熟度方面处于高度发展阶段。他们是 Candide(用 Python 编写的 Voltaire Bundler),Pimlico(用 Typescript 编写的 Alto Bundler),Etherspot(用 Typescript 编写的 Skandha Bundler),Stackup(用 Go 编写的 Stackup-Bundler)等等。
现在,让我们深入讨论一下更详细的打包算法。目前,由于 UserOperations 的数量较少,Bundlers 可以采用简单直接的打包逻辑,例如固定的时间间隔或每个包裹中的 UserOperations 数量。然而,随着 UserOperations 数量的增加,特别是在公共 mempool 的引入后,选择和打包 UserOperations 的策略变得更加复杂。原因很简单:没有像区块链那样的共识协议,Bundler 组成了一个黑暗森林,每个 Bundler 都根据自己的利益优先处理工作,并与彼此竞争。私有 mempool,相应地对应公共 mempool,更有可能首先出现。因为当从公共 mempool 打包 UserOperations 不利可图时,将私有 mempool 中的 UserOperations 打包在一起就可能变得有利可图。这样,Bundler 在打包时就具有竞争优势。
此外,随着公共 mempool 逐渐被接纳,其中的 UserOperations 将具有不同的特性,例如,不同的 Gas 利润预期和链上执行复杂性。Bundlers 将进行链下模拟,以评估各种 UserOperations 组合的利润性,从而建立他们独特的打包策略。打包更多的 UserOperations 有可能产生更大的利润,但也增加了验证失败的风险。即使验证通过,链上执行失败的风险仍然存在。而打包较少的 UserOperations 则正好相反。Bundlers 需要设置自己的交易 Gas 参数,这会影响区块构建者执行交易的优先级。在不同的市场 Gas 价格和 Gas 波动性条件下,Bundlers 可能会有不同的打包策略。同时,这些验证和策略计算需要消耗本地硬件计算资源和区块链节点资源。Bundlers 还需要确保用户有良好的体验,确保用户在提交 UserOperation 后不会面临过长的延迟。
虽然这些挑战的解决方案仍然不确定,但我们可以确信的是,AA 行业的发展和开发者的共同努力最终会找到解决方案。作为基础设施构建者,BlockPI 希望能在 AA 行业的发展中解决问题,无论是作为开发者,还是为其他开发者提供友好的 AA 基础设施。
基础设施必须适应
AA 对链上交易行为中的各种角色进行了抽象,包括发送者、Bundlers、Gas 支付者、合约钱包、签名者,从而允许用户在使用区块链时有更高的自由度。而且,AA 内的服务可以分别部署。
为了适应 AA 的大规模采用,基础设施提供者首先需要提供至少两个基本服务,即 Bundler 服务和 Paymaster 服务。
在 Bundler 服务中,基础设施提供者可能需要与 Bundlers 一起开发一个私人 mempool,以确保良好的用户体验。具体来说,基础设施提供者需要整合各种 Bundler 客户端,以确保 Bundler 服务的健壮性。这些 Bundler 客户端使用不同的编程语言开发,但它们都提供一套由 ERC-4337 核心团队指定的标准 JSON RPC 方法。目前,可用的方法不多,但未来将会增加更多的方法。基础设施服务提供商应该为这些 API 提供持续、完整的支持。
此外,优化和适应 Bundler API 与原始节点客户端 RPC 之间的关系也非常重要。我们知道,目前的节点客户端对 AA 的响应性适应性优化并不好。某些 Bundler API 方法需要 AA 的数据索引才能使用。例如,通过哈希查找 UserOperation 需要对所有 UserOperations 进行索引。否则,这个单一请求的硬件消耗将会非常高,请求返回也将花费很长的时间。
除此之外,基础设施提供者也需要整合不同的 Paymaster 服务,为客户提供免 Gas 的用户体验,并为他们提供不同的服务选项。这需要与第三方 Paymaster 服务提供商进行良好的沟通和集成工作,同时,根据市场需求,也可以设计基于现有 Paymaster 服务的更方便的集成解决方案。其他服务,如聚合签名,钱包工厂等,也是未来发展和集成的可能方向。
目前,BlockPI 实际上正在努力实现以上所有的目标。不仅如此,我们正在与社区中的几乎所有 Bundler 客户端和 Paymaster 服务提供商进行沟通,并已经把将 AA 服务集成到 BlockPI Network 作为我们的首要任务。我们还正在与 AA 钱包开发者进行深入的讨论,以了解用户需求。因此,在我们前进的道路上,我们真诚欢迎与所有的 Bundlers、Paymasters 和钱包进行合作和交流。我们的总体目标是与其他人共同建设和发展 AA 生态系统,以我们最大的努力推动它的增长和发展。通过共同努力,我们希望为整个 AA 行业做出有意义的贡献,并支持其持续的发展进程。因为毕竟,我们的最终使命是作为行业的先驱,推动 AA 生态系统的发展,从而使 web2 用户可以无障碍地享受他们的区块链体验。
总结
从 AA 的角度看,我们处于一个新的历史时刻。虽然我们在大道上铺好了路,但还没有很多乘客。目前,AA 的应用还处于初级阶段,ERC-4337 为用户和开发者在以太坊平台上使用和构建 AA 提供了强大的框架,然而,仍然有许多挑战和不确定性需要被解决。
AA 的基础设施提供商需要为其用户提供 Bundler 服务和 Paymaster 服务,并且需要整合各种 Bundler 客户端和 Paymaster 服务提供商,以确保服务的健壮性。为了优化 API 和节点客户端之间的响应性,可能需要对 AA 数据进行索引,以减少单个请求的硬件消耗。为了提供更好的用户体验,基础设施提供商还需要为用户提供更多的服务选项。
在未来,随着 AA 生态系统的不断发展和公共 mempool 的出现,选择和打包 UserOperations 的策略将变得更加复杂。每个 Bundler 都会根据自己的利益优先考虑自己的工作,并与其他 Bundler 进行竞争。Bundlers 需要设置自己的交易 Gas 参数,这会影响块构建器执行交易的优先级。在不同的市场 Gas 价格和 Gas 波动性条件下,Bundlers 可能会有不同的打包策略。
虽然这些挑战的解决方案还不确定,但我们可以确信的是,AA 行业的发展和开发者的共同努力最终将找到解决方案。作为基础设施的构建者,BlockPI 希望在 AA 行业的发展中成为解决问题的人,无论是作为开发者,还是通过为其他开发者提供友好的 AA 基础设施。我们的使命是推动 AA 生态系统的发展,使 Web2 的用户可以无障碍地享受他们的区块链体验。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum