mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
3.9 KiB
3.9 KiB
Project Layout
This repository contains several Rust crates that implement the different building blocks of an Ethereum node. The high-level structure of the repository is as follows:
Documentation
Contributor documentation is in docs and end-user documentation is in book.
Binaries
All binaries are stored in bin.
Primitives
These crates define primitive types or algorithms such as RLP.
primitives: Commonly used types in Reth.common/rlp: An implementation of RLP, forked from an earlier Apache-licensed version offastrlpcommon/rlp-derive: Forked from an earlier Apache licenced version of thefastrlp-derivecrate, before it changed licence to GPL.
Database
These crates are related to the database.
codecs: Different storage codecs.libmdbx-rs: Rust bindings for libmdbx. A fork of an earlier Apache-licensed version of libmdbx-rs.db: Strongly typed database bindings to LibMDBX containing read/write access to Ethereum state and historical data (transactions, blocks etc.)
Networking
These crates are related to networking (p2p and RPC), as well as networking protocols.
P2P
net/network: The main P2P networking crate, handling message egress, message ingress, peer management, and session management.net/eth-wire: Implements theethwire protocol and the RLPx networking stack.net/discv4: An implementation of the discv4 protocolnet/ipc: IPC server and client implementation forjsonrpsee.
RPC
net/rpc-api: RPC traits- Supported transports: HTTP, WS, IPC
- Supported namespaces:
eth_,engine_,debug_
net/rpc: Implementation of all ETH JSON RPC traits defined inrpc-api.net/rpc-types: Types relevant for the RPC endpoints above, grouped by namespace
Downloaders
net/bodies-downloaders: Block body downloading strategies.net/headers-downloaders: Header downloading strategies.
Ethereum
These crates are Ethereum-specific (e.g. EVM, consensus, transaction pools).
executor: Blazing-fast instrumented EVM usingrevm. Used during consensus, syncing & during transaction simulation / gas estimation.consensus: Implementations of consensus protocols.transaction-pool: An in-memory pending transactions pool.
Staged sync
These crates are related to staged sync.
stages: The staged sync pipeline, including implementations of each stage.
Misc
Small utility crates.
interfaces: Traits containing common abstractions across the components used in the system. For ease of unit testing, each crate importing the interface is recommended to create mock/in-memory implementations of each trait.tracing: A small utility crate to install a uniformtracingsubscribercrate-template: Template crate to use when instantiating new crates undercrates/.examples: Example usage of the reth stack as a library.