A modular, Rust-native execution client for Arbitrum, built on reth.
Arbitrum Reth 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 designed for extensibility.
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). This makes Arbitrum Reth usable both as a full node and as an SDK for building Arbitrum-compatible tooling and infrastructure.
Supported networks: Arbitrum Sepolia (421614)
Set PARENT_CHAIN_RPC_URL and PARENT_CHAIN_BEACON_URL in .env first, then start the full node via Compose:
cp .env.example .env
docker compose up -ddocker compose up -d pulls and runs the prebuilt multi-arch image ghcr.io/0xbloctopus/arbitrum-reth (linux/amd64, linux/arm64). To build the image from source instead, run docker compose up -d --build.
To sync from a snapshot instead of from genesis, see Snapshots for the fast first-run path.
Requirements: Rust 1.93+, clang, cmake
The build scripts pull C and contract sources from git submodules, so fetch them first or the build fails:
git submodule update --init --recursive
cargo build --release -p arb-rethRun the node:
./target/release/arb-reth node \
--chain=genesis/arbitrum-sepolia.json \
--datadir=/path/to/data \
--http \
--http.addr=0.0.0.0 \
--http.api=eth,web3,net,debug \
--authrpc.addr=0.0.0.0 \
--authrpc.jwtsecret=/path/to/jwt.hex| Port | Service |
|---|---|
| 8545 | JSON-RPC (HTTP) |
| 8551 | Authenticated RPC (JWT) |
See .env.example for all configuration options.
Arbitrum Reth is organized as a Cargo workspace of focused, independently consumable crates:
crates/
├── arbos/ Core ArbOS state machine, pricing models, retryables
├── arb-evm/ Block executor, custom opcodes, EVM integration
├── arb-precompiles/ Arbitrum precompile contracts (0x64+)
├── arb-stylus/ Stylus WASM runtime and host functions
├── arb-context/ Per-block / per-tx context (BlockCtx, TxCtx) for the EVM and precompiles
├── arb-primitives/ Transaction types, receipts, gas types
├── arb-chainspec/ Chain spec and ArbOS version constants
├── arb-storage/ Storage-backed types over reth's StateProvider
├── arb-node/ Node builder plugin for reth
├── arb-rpc/ Custom JSON-RPC methods
├── arb-payload/ Payload building primitives
└── arb-txpool/ Transaction pool validation
bin/
└── arb-reth/ Node binary
All crates integrate with the reth ecosystem through its standard traits and can be consumed individually as libraries for custom tooling, indexers, or alternative node configurations.
git clone --recurse-submodules https://github.com/0xBloctopus/arbitrum-reth.git
cd arbitrum-reth
cargo check
cargo testPlease open an issue before starting work on larger changes.
Licensed under the Business Source License 1.1, consistent with the Arbitrum Nitro license. See LICENSE.md and NOTICE for full terms and third-party attributions.
Arbitrum Reth builds on the work of several projects:
- reth by Paradigm, the modular Ethereum execution client that provides the node framework, trait system, and database infrastructure that Arbitrum Reth extends.
- Arbitrum Nitro by Offchain Labs, the Arbitrum node implementation that Arbitrum Reth is derived from.
- revm, the Rust EVM that powers transaction execution.
- alloy, Rust types and primitives for the Ethereum ecosystem.