Warning
This repository is for development purposes. For production deployments, please use the releases referenced in base/node.
Base Reth Node is an implementation of a Reth Ethereum node, specifically tailored for the Base L2 network. It integrates Flashblocks capabilities and leverages Optimism components from Reth (see version pinned in Cargo.toml). This node is designed to provide a robust and efficient solution for interacting with the Base network.
GitHub contributors GitHub commit activity GitHub Stars GitHub repo size GitHub
Website base.org Blog Docs Discord Twitter Base
GitHub pull requests by-label GitHub Issues
- Base L2 Support: Optimized for the Base Layer 2 network.
- Flashblocks RPC: Includes a
flashblocks-rpccrate for Flashblocks. - Reth Based: Built upon Reth, see version pinned in Cargo.toml.
- Dockerized: Comes with a
Dockerfilefor easy containerization and deployment. - Development Toolkit: Includes a
justfilefor streamlined build, test, and linting workflows.
Important
This repository is for development of the client. For docker images and configurations, see the node repository and the
node-reth image. This image bundles vanilla Reth and Base Reth and can be toggled with
NODE_TYPE=base or NODE_TYPE=vanilla
.
├── Cargo.toml # Rust workspace and package definitions
├── Cargo.lock # Dependency lockfile
├── Dockerfile # For building the Docker image
├── LICENSE # MIT License
├── README.md # This file
├── crates/
│ ├── node/ # Main node application logic
│ ├── transaction-tracing/ # Transaction tracing utilities
│ └── flashblocks-rpc/ # RPC server for Flashblocks integration
├── justfile # Command runner for development tasks
└── .github/
└── workflows/
└── ci.yml # GitHub Actions CI configuration
- Rust: Version 1.85 or later (as specified in
Cargo.toml). You can install Rust using rustup. - Just: A command runner. Installation instructions can be found here.
- Docker: (Optional) For building and running the node in a container. See Docker installation guide.
- Build Essentials:
git,libclang-dev,pkg-config,curl,build-essential(these are installed in the Docker build process and may be needed for local builds on some systems).
git clone https://github.com/base/node-reth.git
cd node-rethYou can build the project using the justfile for a release build:
just build
Alternatively, if performance is critical, you can build with all optimizations enabled + jemalloc:
just build-maxperf
Otherwise, you can use Cargo directly:
cargo build --release --bin base-reth-node
The main binary will be located at target/release/base-reth-node.
To ensure everything is set up correctly, run the checks and tests:
just check # Runs cargo fmt --check and cargo clippy just test # Runs cargo test
To automatically fix formatting and clippy warnings:
just fix
To run the compiled node:
./target/release/base-reth-node [OPTIONS]
To see available command-line options and subcommands, run:
./target/release/base-reth-node --help
(Note: Replace [OPTIONS] with the necessary configuration flags for your setup. Refer to the --help output for details.)
docker build -t base-reth-node .docker run -it --rm base-reth-node [OPTIONS]
(Note: You might need to map ports (-p), mount volumes (-v) for data persistence, or pass environment variables (-e) depending on your node's configuration needs.)
(Details about specific configuration files, environment variables, or command-line arguments required for typical operation will be added here as the project evolves. For now, please refer to the --help output of the binary.)
This project is licensed under the MIT License. See the LICENSE file for details.