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
This commit is contained in:
Bjerg
2022-10-11 19:15:08 +02:00
committed by GitHub
parent 180c768822
commit 098bfe84b9
5 changed files with 41 additions and 20 deletions

View File

@ -4,24 +4,6 @@
![Github Actions](https://github.com/foundry-rs/reth/workflows/ci/badge.svg) ![Github Actions](https://github.com/foundry-rs/reth/workflows/ci/badge.svg)
## Directory Structure ## Docs
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: Contributor docs can be found [here](./docs).
- `crates/`
- [`db/`](crates/db): Strongly typed database bindings to [LibMDBX](https://github.com/vorot93/libmdbx-rs/) containing read/write access to Ethereum state and historical data (transactions, blocks etc.)
- [`executor/`](crates/executor): Blazing-fast instrumented EVM using [`revm`](https://github.com/bluealloy/revm/). Used during consensus, syncing & during transaction simulation / gas estimation.
- [`interfaces/`](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.
- `net/`
- [`p2p`](crates/net/p2p): Implements the Ethereum P2P protocol.
- [`rpc-api`](crates/net/rpc-api): Traits
- Supported transports: HTTP, WS, IPC
- Supported namespaces: `eth_`, `engine_`, `debug_`
- [`rpc`](crates/net/rpc): Implementation of all ETH JSON RPC traits defined in `rpc-api`.
- [`rpc-types`](crates/net/rpc-types): Types relevant for the RPC endpoints above, grouped by namespace
- [`primitives/`](crates/stages): Commonly used types in Reth.
- [`stages/`](crates/stages): The staged sync pipeline, including implementations of each stage.
- [`transaction-pool/`](crates/transaction-pool): An in-memory pending transactions pool.
- [`crate-template`](crate-template): Template crate to use when instantiating new crates under `crates/`.
- [`bin/`](bin): Where all binaries are stored.
- [`examples/`](examples): Example usage of the reth stack as a library.

6
docs/README.md Normal file
View File

@ -0,0 +1,6 @@
## reth Contributor Documentation
This directory contains documentation for contributors.
- [Repository and project structure](./repo)
- [Design documents](./design)

0
docs/design/.gitkeep Normal file
View File

13
docs/repo/labels.md Normal file
View File

@ -0,0 +1,13 @@
## Labels
Each label in the repository has a description attached that describes what the label means.
There are 7 label categories in the repository:
- **Area labels**: These labels denote the general area of the project an issue or PR affects. These start with `A-`.
- **Category labels**: These labels denote the type of issue or change being made, for example https://github.com/foundry-rs/reth/labels/C-bug or https://github.com/foundry-rs/reth/labels/C-enhancement. These start with `C-`.
- **Difficulty labels**: These are reserved for the very easy or very hard issues. Any issue without one of these labels can be considered to be of "average difficulty". They start with `D-`.
- **Meta labels**: These start with `M-` and convey meaning to the core contributors, usually about the release process.
- **Platform labels**: These describe the platform an issue is present on. They start with `O-`.
- **Priority labels**: These are reserved for issues that require more immediate attention (high priority and critical priority) and they start with `P-`.
- **Status labels**: These labels convey meaning to contributors about an issue or PR's status, e.g. whether they are blocked or need triage. They start with `S-`.

20
docs/repo/layout.md Normal file
View File

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