---
title: "開源 Rundler 🦀"
description: "透過開源 Rundler，我們希望能推動 ERC-4337 生態系統的創新、加速智慧帳戶的轉型，並在 EVM 區塊鏈上實現更進一步的使用者體驗。"
---

# 開源 Rundler 🦀

今天我們很高興宣布 [open source Rundler](https://github.com/alchemyplatform/rundler)（**R**ust B**undler**），這是由 Alchemy 開發、以 Rust 撰寫的 ERC-4337 bundler 實作。透過 Rundler，我們希望加速 smart account 的轉型，在 EVM chains 上實現下一階段的使用者體驗。Bundler 是[支援 Account Abstraction 的基礎設施](https://www.alchemy.com/account-abstraction)中不可或缺的一環。我們將 Rundler 開源，是為了促成一個去中心化且健全的網路，以支撐這項轉型。

## Rundler 是什麼？
Rundler 是一個高效能、高可靠性、模組化的 ERC-4337 bundler。

這樣講太抽象？

我們拆解一下 👇

### ERC-4337

[ERC-4337](https://eips.ethereum.org/EIPS/eip-4337) 是一套標準，能在不改動核心協議的情況下，在所有 EVM chains 上實現 Account Abstraction。它的做法是依賴 Bundler 這類更高層級的 off-chain [基礎設施](https://www.alchemy.com/account-abstraction)。簡單來說，ERC-4337 讓開發者能享有 Account Abstraction 的所有好處，同時不必承擔核心協議開發的風險。

想[了解 ERC-4337 的運作原理](https://www.alchemy.com/overviews/what-is-account-abstraction)，可以閱讀 Alchemy AA 團隊工程師 David Philipson 撰寫的四篇系列文章「You Could Have Invented Account Abstraction」。

若想開始使用 ERC-4337 accounts 進行開發，可以參考我們的[企業級 Embedded Accounts](/smart-wallets)。

### Bundler

前面提到的更高層基礎設施中，核心的 off-chain 元件就是 [Bundler](https://www.alchemy.com/overviews/what-is-a-bundler)。Bundler 的工作是接收使用者提交的類交易物件（[User Operations](https://www.alchemy.com/overviews/user-operations)），將它們打包成單一 EVM transaction，並將該 transaction 送上鏈。作為回報，它會向每位使用者收取一小筆費用。EOA wallet 是將交易提交給節點，而所有 ERC-4337 smart account 則是將 UserOps 提交給 Bundler。

<ImageBlock
  src="https://media.alchemy.com/1704368327-diagram-of-how-a-bundler-handles-user-operations-uos.jpeg"
  alt="bundler 處理 user operations (UOs) 的流程圖。"
  width={1905}
  height={937}
  caption="bundler 處理 user operations (UOs) 的流程圖。"
/>

## Rundler 的目標是什麼？
我們打造 Rundler，是為了協助整個生態系迎接下一個 10 億 web3 使用者。我們相信 Account Abstraction 與 ERC-4337 是讓加密貨幣走向主流使用者的最佳途徑。要達成這種主流體驗，我們需要具備最佳開發者體驗、模組化設計，並支援每一條 EVM chain 的高可靠基礎設施。

### 1. ERC-4337 生態系成長

在打造 Rundler 的過程中，我們深度參與了 ERC-4337 標準的演進，並打算持續在這方面做出貢獻。我們從在正式環境中運行 Rundler 的經驗中[學到](https://www.alchemy.com/blog/erc-4337-gas-estimation)了很多，也持續將這些經驗分享給 4337 社群，協助整體生態系改善。

### 2. 業界頂尖的效能與可靠性

要讓能為十億使用者帶來上鏈體驗的應用能被接受，效能與可靠性至關重要。這個信念是 Rundler 與 Alchemy 相關 API 的核心，我們也持續努力突破極限。

### 3. 可擴充性與 chain 支援

每一條 EVM chain 都值得擁有支援 Account Abstraction 的一流基礎設施。不同協議在處理各種細節（例如 gas 使用、precompiles、交易的供應鏈等）時各有差異。我們希望 Rundler 的邏輯能夠擴充，以支援絕大多數（甚至全部）這類使用情境。

### 4. 模組化

我們不會止步於 Rundler 本身。我們希望 Rundler library 的各個元件都能被擴充並用於打造新的 4337 與 alternative-mempool 基礎設施。

## Rundler 架構的優勢
在 Alchemy，我們相信轉向 smart account 是讓 Ethereum 技術的優勢惠及所有人的必要條件。Rundler 是邁向這個願景的關鍵一步。

### 1. 高效能

Rundler 的設計目標是達到最嚴苛工作負載所需的效能水準。我們選擇 Rust 作為開發語言，正是為了借助其 concurrency primitives 與 zero-cost abstractions 來達成這個目標。我們希望 Rundler 具備高並行性、可水平擴展，並能輕易延展以滿足下一代應用程式對擴展性的需求。

我們[最近測得 Rundler](https://x.com/ProbablyNoam/status/1702847970289569974?s=20) 在 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)的期待。我們運用多年來運行 blockchain 基礎設施所累積的經驗，將 Rundler 打造成這些理念的延伸。在現代雲端化的環境中，Rundler 的表現特別出色——在這種環境下，每個元件都能獨立運行與擴展，且觀測性（observability）與遙測（telemetry）是必要條件。

### 3. 模組化

Rundler 採模組化方式建構，每個元件都以 library（在 Rust 中稱為 crate）的形式建模，能夠獨立於其他元件運行。隨著我們的介面逐漸穩定，我們希望能運用這些元件來打造下一代 write-path 基礎設施。

## 為下一個十億使用者提供動力
自今年四月起，我們便已在正式環境中運行 Rundler，協助支撐這個領域中一些最具潛力的應用，包括 CyberConnect CyberAccounts 與 Circle Programmable Wallets。

**以下是我們頭幾個月的一些數據：**

- 成功上鏈超過 402K 筆 UserOps
- 71% 的 UserOps 是在包含超過 1 個 UO 的 bundle 中上鏈，比其他已知 bundler 實作高出 4.7 倍
- 傳送 UserOps 的獨立活躍開發團隊，季成長率達 430%

## Rundler 目前的狀態如何？
Rundler 目前用於支撐我們的 [Bundler API endpoints](https://www.alchemy.com/docs/wallets/low-level-infra/quickstart)。不過，它仍由 Alchemy 一支強大的開發團隊積極開發中。我們會持續新增功能，協助使用者充分發揮 Account Abstraction 的威力。

除了完整符合 ERC-4337 規範並[支援 v0.6 Entry Point 合約](https://github.com/eth-infinitism/account-abstraction/tree/v0.6.0)之外，Rundler 還有幾項值得一提的特色：

### 整合式或分散式部署

Rundler 可以作為單一 process 中的 full node 運行，各元件透過記憶體內的訊息傳遞方式溝通。也可以將這些元件分拆到獨立的 process 中，透過 gRPC 溝通，以便進行水平擴展與備援部署。

### 精準的 gas 估算

我們開創了[估算 ERC-4337 user operation 各項 gas 欄位](https://www.alchemy.com/blog/erc-4337-gas-estimation)的新方法，運用了一些巧妙的智慧合約技巧與二分搜尋。

### Reorg 處理

我們的 mempool 實作能抵禦 chain [重組（reorganization）](https://www.alchemy.com/overviews/what-is-a-reorg)。我們會追蹤 chain 的進展，偵測 chain 是否發生 reorg，並將可能因此被移出鏈的 User Operations 送回 mempool，使其能再次被納入考慮。

### 大型 bundle 打包與交易可靠性

我們打造的 bundle building 元件旨在達到網路層級的 gas 吞吐量。也就是說，我們致力於讓 bundle 儘可能貼近區塊的 gas limit，並在每一個區塊中都成功上鏈，藉此讓整個網路達到飽和。

### Alternative mempools

我們一直在[嘗試](https://hackmd.io/@dancoombs/BJYRz3h8n)[ERC-4337 alternative mempools](https://eips.ethereum.org/EIPS/eip-4337#alternative-mempools)，並持續推動這方面的討論。目前，這些 alt-mempool 會讓 bundler 暴露在某些 mempool 攻擊之下，但我們希望能運用這些研究成果，未來實作出安全的 alt-mempool。

## Rundler 的路線圖為何？
走到這一步，接下來呢？在我們的近程路線圖中，我們已開始建構 P2P 與安全的 alternative mempools、支援 Entry Point v0.7、signature aggregation，以及與 block builder 的整合。

### P2P mempool

ERC-4337 承諾已久的公開 [P2P mempool](https://github.com/eth-infinitism/bundler-spec/blob/main/p2p-specs/p2p-interface.md) 將於今年秋天推出，我們目前正在建構相關支援。

### 安全的 alternative mempools

如前所述，我們正考慮迭代目前的 alternative mempool 做法，打造一個對 bundler 而言安全的實作。

### Entry Point v0.7 與多版本支援

ERC-4337 團隊正全力開發 Entry Point 合約的下一個版本 v0.7。一旦推出，我們會盡快提供支援，同時持續維持對 v0.6 合約的支援。

### Signature aggregation

[Signature aggregation](https://www.alchemy.com/blog/l2-gas-and-signature-aggregators) 是 ERC-4337 最受矚目的特色之一。然而，要在讓 bundler 維持獲利能力的前提下實作這項功能，一直頗具挑戰。我們正深入研究這個領域，希望能推出首批實用的 signature aggregator。

### Block builder 整合

在我們嘗試提升 User Operations 上鏈速率的過程中，遇到了一些問題，而這些問題只會隨著 P2P mempool 的推出而更加嚴重（這部分我們之後會再詳談）。如果 block builder 能將 bundling 直接整合進自身流程中，這些問題就能大幅緩解。

## 如何為 rundler 做出貢獻
我們希望透過將 Rundler 開源，能持續激發這個領域的創新。使用者可以檢視驅動其 User Operations 背後的邏輯，而貢獻者則可以新增功能、修復錯誤，協助改善並強化 Rundler。

如果你有興趣參與貢獻，歡迎參考我們的貢獻指南並與我們聯繫！

- [Contribution Guide](https://github.com/alchemyplatform/rundler/blob/main/CONTRIBUTING.md)
- [Open Issues](https://github.com/alchemyplatform/rundler/issues)
- [Development Help](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 生態系向前發展，我們感謝他們持續不斷的貢獻。

**（alternative）mempool 見。**

🦀
