---
title: "开源 Rundler 🦀"
description: "通过开源 Rundler，我们希望推动 ERC-4337 生态系统的创新，加速智能账户转型，并在 EVM 区块链上实现更高水平的用户体验。"
---

# 开源 Rundler 🦀

今天,我们很高兴地宣布[开源 Rundler](https://github.com/alchemyplatform/rundler)（**R**ust B**undler**），这是由 Alchemy 使用 Rust 编写的 ERC-4337 bundler 实现。通过 Rundler,我们致力于加速智能账户的转型,以在 EVM 链上实现下一代用户体验。Bundler 是[支持账户抽象的基础设施](https://www.alchemy.com/account-abstraction)中至关重要的一环。我们将 Rundler 开源,以促进能够支撑这一转型的去中心化、健壮的网络的形成。

## rundler 是什么?
Rundler 是一个高性能、高可靠性、模块化的 ERC-4337 bundler。

这句话信息量太大?

我们来拆解一下 👇

### ERC-4337

[ERC-4337](https://eips.ethereum.org/EIPS/eip-4337) 是一个标准,能够在不对核心协议做任何改动的情况下,在所有 EVM 链上实现账户抽象。它通过依赖 Bundler 等更高层级的链下[基础设施](https://www.alchemy.com/account-abstraction)来实现这一点。简而言之,ERC-4337 让开发者能够获得账户抽象的所有优势,而无需承担核心协议开发的风险。

要[了解 ERC-4337 的工作原理](https://www.alchemy.com/overviews/what-is-account-abstraction),可以查看 Alchemy AA 团队工程师 David Philipson 撰写的四部曲系列文章 "You Could Have Invented Account Abstraction"。

要开始使用 ERC-4337 账户进行开发,请了解我们的[企业级 Embedded Accounts](/smart-wallets)。

### Bundler

上述更高层级基础设施中的核心链下组件是[Bundler](https://www.alchemy.com/overviews/what-is-a-bundler)。Bundler 的工作是接收用户提交的类似交易的对象（[User Operations](https://www.alchemy.com/overviews/user-operations)）,将它们打包成一笔 EVM 交易,并将该交易上链。作为回报,它会从每个用户那里收取一小笔费用。EOA 钱包向节点提交交易,而所有 ERC-4337 智能账户则向 Bundler 提交 UserOp。

<ImageBlock
  src="https://media.alchemy.com/1704368327-diagram-of-how-a-bundler-handles-user-operations-uos.jpeg"
  alt="bundler 处理用户操作(UOs)方式示意图。"
  width={1905}
  height={937}
  caption="bundler 处理用户操作(UOs)方式示意图。"
/>

## rundler 的目标是什么?
我们构建 Rundler 是为了帮助生态系统将下一个 10 亿用户引入 web3。我们相信账户抽象和 ERC-4337 是让加密技术为主流受众所用的最佳途径。为了提供这种主流体验,我们需要高可靠性的基础设施,并具备一流的开发者体验、模块化设计,以及对每条 EVM 链的支持。

### 1. ERC-4337 生态系统的增长

在构建 Rundler 的过程中,我们深度参与了 ERC-4337 标准的演进,并打算继续在这方面做出贡献。我们在生产环境中运行 Rundler 的过程中[学到](https://www.alchemy.com/blog/erc-4337-gas-estimation)了很多经验,并持续将这些经验分享给 4337 社区,以帮助其不断改进。

### 2. 一流的性能和可靠性

性能和可靠性对于引入那些能够带来十亿用户上链的应用类型至关重要。这一理念是 Rundler 及 Alchemy 相关 API 的核心,我们一直致力于不断突破这一极限。

### 3. 可扩展性和链支持

每条 EVM 链都应当获得一流的基础设施来支持账户抽象。不同的协议对一些棘手的细节（例如 gas 使用、预编译合约、交易供应链等）处理方式各不相同。我们希望 Rundler 的逻辑能够被扩展,以支持大多数（甚至全部）此类场景。

### 4. 模块化

我们不会止步于 Rundler。我们致力于让 Rundler 库中的各个组件能够被扩展和使用,以支撑新的 4337 及替代 mempool 基础设施。

## rundler 架构的优势
在 Alchemy,我们相信向智能账户的转型是将 Ethereum 技术的优势带给所有人的必经之路。Rundler 正是实现这一愿景的关键一步。

### 1. 高性能

Rundler 的构建旨在实现最苛刻工作负载所需的性能水平。我们选择 Rust 作为编程语言,借助其并发原语和零成本抽象来实现这一目标。我们希望 Rundler 具备高并发性、可水平扩展性,并能够轻松扩展,以满足下一代应用对可扩展性的需求。

我们[最近测得](https://x.com/ProbablyNoam/status/1702847970289569974?s=20) Rundler 在 Polygon Mainnet 上每秒处理 750 万 gas（在该工作负载下约合 55 TPS）,而借助这一架构,我们能够处理更高的交易量。

<ImageBlock
  src="https://media.alchemy.com/1704368412-sustained-eth_senduseroperation-transactions-per-second-on-polygon.jpeg"
  alt="Polygon 上 eth_sendUserOperation 的持续每秒交易数。"
  width={3328}
  height={1872}
  caption="Polygon 上 eth_sendUserOperation 的持续每秒交易数。"
/>

### 2. 高可靠性

Rundler 的架构设计旨在满足用户对[高可靠性服务](https://www.alchemy.com/blog/reliability)的期望。通过借鉴多年运营区块链基础设施积累的经验,我们将 Rundler 打造为这一理念的延伸。在现代云端环境中,每个组件都能独立运行和扩展,并且可观测性和遥测数据必不可少——Rundler 在这类场景中表现出色。

### 3. 模块化

Rundler 采用模块化方式构建,每个组件都被建模为一个库（在 Rust 中称为 crate）,并能够独立于其他组件运行。随着我们接口的稳定,我们希望能够利用这些组件来支撑下一代写路径基础设施。

## 为下一个十亿用户提供支持
自 4 月以来,我们一直在生产环境中运行 Rundler,它正被用来支撑该领域一些最具前景的应用,包括 CyberConnect CyberAccounts 和 Circle Programmable Wallets。

**以下是我们最初几个月的一些数据:**

- 成功上链的 UserOp 超过 40.2 万个
- 71% 的 UserOp 被打包进包含多个 UO 的 bundle 中,这一比例是其他已知 bundler 实现的 4.7 倍
- 发送 UserOp 的独立活跃开发者团队季度增长率达 430%

## rundler 目前的状态如何?
Rundler 目前正用于支撑我们的 [Bundler API endpoints](https://www.alchemy.com/docs/wallets/low-level-infra/quickstart)。不过,它仍在由 Alchemy 一支强大的开发团队积极开发中。我们将持续添加功能,让用户能够最大限度地利用账户抽象的强大能力。

除了完全兼容 ERC-4337 规范并支持 [v0.6 Entry Point 合约](https://github.com/eth-infinitism/account-abstraction/tree/v0.6.0)外,Rundler 还有一些值得强调的亮点功能:

### 集成式或分布式部署

Rundler 可以作为完整节点在单一进程中运行,此时各组件通过内存消息传递进行通信。此外,这些组件也可以在独立的进程中运行,通过 gRPC 进行通信,从而实现水平扩展和冗余部署。

### 精确的 gas 估算

我们开创了一些新颖的方法,用于[估算 ERC-4337 用户操作中的各类 gas 字段](https://www.alchemy.com/blog/erc-4337-gas-estimation),并借助一些巧妙的智能合约技巧和二分查找来实现。

### 重组处理

我们的 mempool 实现能够抵御链[重组](https://www.alchemy.com/overviews/what-is-a-reorg)。我们会追踪链的进展情况,检测链是否发生了重组,并将任何可能因链重组而被丢弃的 User Operation 重新放回 mempool,使其再次具备被打包上链的资格。

### 大型 bundle 构建与交易可靠性

我们构建 bundle 组装组件的目标是实现网络级别的 gas 吞吐量。也就是说,我们致力于用接近区块 gas limit 的 bundle 完全填满网络,并使其能够被打包进每一个区块。

### 替代 mempool

我们一直在[尝试](https://hackmd.io/@dancoombs/BJYRz3h8n)[ERC-4337 替代 mempool](https://eips.ethereum.org/EIPS/eip-4337#alternative-mempools),并持续推动这方面的讨论向前发展。目前,这些替代 mempool 会使 bundler 面临某些针对 mempool 的攻击,但我们希望借助这方面的研究,在未来实现一个安全的替代 mempool。

## rundler 的路线图是什么?
既然已经走到这一步,接下来该做什么?在近期的路线图中,我们将着手构建 P2P 及安全的替代 mempool、对 Entry Point v0.7 的支持、签名聚合,以及区块构建者集成。

### P2P mempool

期待已久的 ERC-4337 公共 [P2P mempool](https://github.com/eth-infinitism/bundler-spec/blob/main/p2p-specs/p2p-interface.md) 将于今年秋季推出,我们目前正在构建相应的支持。

### 安全的替代 mempool

如上所述,我们正在研究改进我们的替代 mempool 方案,以构建一个对 bundler 安全的实现。

### Entry Point v0.7 及多版本支持

ERC-4337 团队正在加紧开发 Entry Point 合约的下一个版本 v0.7。一旦发布,我们将努力尽快提供支持,同时继续维持对 v0.6 合约的支持。

### 签名聚合

[签名聚合](https://www.alchemy.com/blog/l2-gas-and-signature-aggregators)是 ERC-4337 最受推崇的功能之一。然而,要以一种能让 bundler 保持盈利能力的方式来实现它,已被证明颇具挑战。我们正在深入研究这一方向,并希望能够支撑首批实用的签名聚合器。

### 区块构建者集成

在我们努力实现高比例 User Operation 上链的过程中,我们遇到了一些问题,而 P2P mempool 的引入只会加剧这些问题（这个话题我们将另行详述）。如果/当区块构建者将打包功能直接集成进其流程时,这些问题将大大减少。

## 如何为 rundler 做出贡献
我们希望通过开源 Rundler,能够继续激发这一领域的创新。用户可以探索驱动其 User Operation 的底层逻辑,贡献者也可以添加功能、修复 bug,从而改进和强化 Rundler。

如果你想做出贡献,欢迎查看我们的贡献指南并与我们联系!

- [贡献指南](https://github.com/alchemyplatform/rundler/blob/main/CONTRIBUTING.md)
- [待解决的 Issue](https://github.com/alchemyplatform/rundler/issues)
- [开发帮助](https://github.com/alchemyplatform/rundler#help)

## 致谢
构建 ERC-4337 生态系统是一项团队协作的成果,若没有来自该领域多个团队的领导、指导和支持,我们不可能取得现在的成就。

### ERC-4337 团队

[ERC-4337 团队](https://github.com/eth-infinitism/account-abstraction)开创了这一标准,并在我们的开发过程中解答了无数问题。他们开发了[bundler 参考实现](https://github.com/eth-infinitism/bundler)和[规范测试](https://github.com/eth-infinitism/bundler-spec-tests),这些在我们的开发过程中发挥了重要作用。我们很期待能继续与这支团队合作,共同推动 ERC-4337 向前发展。

### Reth 团队

在此感谢 [Reth 团队](https://github.com/paradigmxyz/reth),我们的许多实践都从中汲取了灵感。他们正以开放的方式推动 Ethereum Rust 生态系统向前发展,我们感谢他们持续做出的贡献。

**（替代）mempool 见。**

🦀
