This file provides guidance to LLM agents when working with code in this repository.
- Release build:
just build - Debug build:
just build-dev - Build all workspace members:
just build-all
- Run all tests:
just test - Run tests with output:
just test-verbose - Unit tests only:
just test-unit - Integration tests:
just test-integration - Test specific crate:
just test-node,just test-evolve,just test-common
- Format code:
just fmt - Check formatting:
just fmt-check - Run linter:
just lint - Run all checks:
just check-all
- Run with defaults:
just run - Run with debug logs:
just run-dev - Direct execution:
./target/release/ev-reth node --chain <CHAIN_SPEC> --datadir <DATA_DIR> --http --ws
Ev-reth is a specialized Ethereum execution client built on Reth that integrates with Evolve. The key architectural innovation is accepting transactions directly through the Engine API instead of the traditional mempool.
-
EvolvePayloadBuilder (
crates/node/src/builder.rs)- Accepts transactions from Engine API payload attributes
- Executes transactions and builds blocks
- Manages state transitions
-
EvolveEngineTypes (
bin/ev-reth/src/main.rs)- Custom Engine API types supporting transaction submission
- Handles payload attribute validation and processing
-
EvolveEngineValidator (
bin/ev-reth/src/main.rs)- Modified validator that bypasses certain checks for Evolve compatibility
- Maintains security while allowing flexible block production
- Ev-reth submits transactions via
engine_forkchoiceUpdatedV3with transactions in payload attributes - Transactions are decoded from RLP format and validated
- Payload builder executes transactions against current state
- Block is constructed and returned via Engine API
- Transactions bypass the mempool entirely, submitted directly via Engine API
- Block validation is relaxed for ev-node produced blocks (hash validation bypassed)
- Custom gas limits can be specified per payload
- Modular workspace structure separates concerns between general node logic and Evolve-specific features
- Unit tests for individual components
- Integration tests in
crates/tests/covering:- Engine API interactions
- Payload building with transactions
- State execution validation
- Evolve-specific scenarios