Introduction
ArbReth is a ground-up Rust implementation of Arbitrum Nitro's execution layer. It replaces Nitro's embedded Geth fork with reth, delivering the same state-transition logic through a modular crate architecture.
Each component - ArbOS state management, L1/L2 pricing, precompiles, Stylus WASM execution - lives in its own crate and builds on reth's trait system (BlockExecutor, StateProvider, EvmConfig).
Why ArbReth?
- Native Rust performance - no CGo boundary, no garbage collector pauses
- Modular by design - each subsystem is an independent crate, consumable as a library
- reth ecosystem - inherits reth's database layer, networking, RPC framework, and CLI
- SDK-ready - build custom Arbitrum tooling, indexers, or alternative node configurations using individual crates
Supported Networks
| Network | Chain ID | Status |
|---|---|---|
| Arbitrum Sepolia | 421614 | Supported |
| Arbitrum One | 42161 | Planned |
How It Works
ArbReth runs as the execution layer in a two-component architecture:
- Nitro consensus node - handles L1 interaction, sequencer feed, and message ordering
- ArbReth execution node - receives ordered messages via the
nitroexecution_RPC namespace, produces blocks, and manages state
The consensus node drives ArbReth through the Engine API (port 8551), sending L1-to-L2 messages that ArbReth processes into blocks. This is the same split architecture used by Ethereum's beacon chain and execution client separation.
License
ArbReth is licensed under the Business Source License 1.1, consistent with the Arbitrum Nitro license. It converts to Apache 2.0 on December 31, 2030.
