- Rust toolchain (1.70+)
- Git access for Reth dependencies
Clone the repository and build:
git clone https://github.com/vicnaum/stateless-history-node.git
cd stateless-history-node
# Development build
cargo build --manifest-path node/Cargo.toml
# Production build (recommended)
cargo build --manifest-path node/Cargo.toml --releaseStart syncing from Uniswap V2 deployment (block 10,000,000):
cargo run --release --manifest-path node/Cargo.tomlThe node will:
- Connect to Ethereum mainnet peers via devp2p
- Begin backfilling blocks from 10,000,000 to head
- Start the RPC server on
127.0.0.1:8545 - Switch to follow mode once caught up
Stop with Ctrl+C. The node persists checkpoints and resumes on restart.
cargo run --release --manifest-path node/Cargo.toml -- --start-block 15000000cargo run --release --manifest-path node/Cargo.toml -- \
--start-block 18000000 --end-block 18100000cargo run --release --manifest-path node/Cargo.toml -- \
--data-dir /path/to/datacargo run --release --manifest-path node/Cargo.toml -- \
--rpc-bind 0.0.0.0:9545Once synced, test the RPC:
# Check chain ID
curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_chainId","params":[]}' \
http://127.0.0.1:8545
# Check synced block number
curl -s -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' \
http://127.0.0.1:8545# Info level
cargo run --release --manifest-path node/Cargo.toml -- -v
# Debug level
cargo run --release --manifest-path node/Cargo.toml -- -vv
# Trace level
cargo run --release --manifest-path node/Cargo.toml -- -vvvSend SIGUSR1 to print sync + peer-health status:
kill -USR1 $(pgrep stateless-history)cargo run --release --manifest-path node/Cargo.toml -- \
db stats --data-dir data- See Configuration for all CLI options
- See Architecture for system internals
- See SPEC.md for RPC semantics and error codes