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.
- Base L2 Support: Optimized for the Base Layer 2 network.
- Flashblocks RPC: Includes a
flashblocks-rpc
crate for Flashblocks. - Reth Based: Built upon Reth, see version pinned in Cargo.toml.
- Dockerized: Comes with a
Dockerfile
for easy containerization and deployment. - Development Toolkit: Includes a
justfile
for 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-reth
You 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.