cast or a general Ethereum RPC client. Those tools answer application-level questions such as account balances, contract call return values, and block contents. Rex focuses on lower-level execution-client questions.
Why it Exists
Ethereum execution clients expose most functionality through standardized JSON-RPC APIs such aseth_getBlockByNumber, eth_call, eth_getLogs, and debug_traceTransaction.
That API boundary is useful for applications, but it hides many of the execution-client systems that decide how a node behaves:
- transaction validation, ordering, replacement, queueing, and propagation
- EVM execution, state transitions, receipts, logs, and gas accounting
- account and storage changes
- provider and storage access backed by MDBX and static files
- payload building and transaction selection
- Engine API communication between the consensus and execution layers
- peer management, gossip, and block propagation
- pruning, database layout, and historical data retention
Current Surface
The current implemented areas are chain inspection, execution tracing and simulation, authenticated Engine API inspection, node networking inspection, transaction-pool inspection, and read-only local database inspection. Chain, execution, network, and txpool commands default tohttp://127.0.0.1:8545
(localhost:8545). Engine commands default to the authenticated Engine API at
http://127.0.0.1:8551 (localhost:8551). Pass the global --rpc <URL> flag
when either endpoint is elsewhere. Database commands use a local --datadir
instead of RPC.
Chain
Execution
Engine
Network
TxPool
Database
Start with the quickstart, then work through the Chain guide, Execution guide, Engine guide, Network guide, TxPool guide, or Database guide.
Architecture
Rex is split into a reusable core crate and a CLI crate:rex-core returns structured Rust types for analysis and integration logic. rex-cli handles arguments, calls the core crate, and formats terminal output.
Conceptually:
