Files
nanoreth/docs/repo/layout.md
Bjerg 098bfe84b9 docs: add contributor docs (#41)
* docs: add contributor docs

* docs: nit

* docs: move project layout to docs folder

* chore: slash the slashes

* docs: re-add ci badge (whoops)

* docs: index
2022-10-11 10:15:08 -07:00

1.8 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:

  • crates/
    • db: Strongly typed database bindings to LibMDBX containing read/write access to Ethereum state and historical data (transactions, blocks etc.)
    • executor: Blazing-fast instrumented EVM using revm. Used during consensus, syncing & during transaction simulation / gas estimation.
    • 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.
    • net/p2p: Implements the Ethereum P2P protocol.
    • net/rpc-api: Traits
      • Supported transports: HTTP, WS, IPC
      • Supported namespaces: eth_, engine_, debug_
    • net/rpc: Implementation of all ETH JSON RPC traits defined in rpc-api.
    • net/rpc-types: Types relevant for the RPC endpoints above, grouped by namespace
    • primitives: Commonly used types in Reth.
    • stages: The staged sync pipeline, including implementations of each stage.
    • transaction-pool: An in-memory pending transactions pool.
  • crate-template: Template crate to use when instantiating new crates under crates/.
  • bin: Where all binaries are stored.
  • examples: Example usage of the reth stack as a library.