diff --git a/README.md b/README.md index 6523e9202..6da6732ad 100644 --- a/README.md +++ b/README.md @@ -29,6 +29,19 @@ If you'd like some background on Sigma Prime, please see the [Lighthouse Update \#00](https://lighthouse.sigmaprime.io/update-00.html) blog post or the [company website](https://sigmaprime.io). +### Directory Structure + +- [`beacon_node/`](beacon_node/): the "Beacon Node" binary and crates exclusively + associated with it. +- [`docs/`](docs/): documentation related to the repository. This includes contributor + guides, etc. (It does not include code documentation, which can be produced with `cargo doc`). +- [`eth2/`](eth2/): Crates containing common logic across the Lighthouse project. For + example: Ethereum 2.0 types ([`BeaconBlock`](eth2/types/src/beacon_block.rs), [`BeaconState`](eth2/types/src/beacon_state.rs), etc) and + SimpleSerialize (SSZ). +- [`protos/`](protos/): protobuf/gRPC definitions that are common across the Lighthouse project. +- [`validator_client/`](validator_client/): the "Validator Client" binary and crates exclusively + associated with it. + ### Components The following list describes some of the components actively under development @@ -79,16 +92,6 @@ In addition to these components we are also working on database schemas, RPC frameworks, specification development, database optimizations (e.g., bloom-filters), and tons of other interesting stuff (at least we think so). -### Directory Structure - -Here we provide an overview of the directory structure: - -- `beacon_chain/`: contains logic derived directly from the specification. - E.g., shuffling algorithms, state transition logic and structs, block -validation, BLS crypto, etc. -- `lighthouse/`: contains logic specific to this client implementation. E.g., - CLI parsing, RPC end-points, databases, etc. - ### Running **NOTE: The cryptography libraries used in this implementation are diff --git a/eth2/README.md b/eth2/README.md new file mode 100644 index 000000000..cf041e987 --- /dev/null +++ b/eth2/README.md @@ -0,0 +1,37 @@ +# Ethereum 2.0 Common Crates + +Rust crates containing logic common across the Lighthouse project. + +## Per-Crate Summary + +- [`attester/`](attester/): Core logic for attesting to beacon and shard blocks. +- [`block_proposer/`](block_proposer/): Core logic for proposing beacon blocks. +- [`fork_choice/`](fork_choice/): A collection of fork-choice algorithms for + the Beacon Chain. +- [`state_processing/`](state_processing/): Provides per-slot, per-block, and + per-epoch state processing. +- [`types/`](types/): Defines base Ethereum 2.0 types (e.g., `BeaconBlock`, + `BeaconState`, etc). +- [`utils/`](utils/): + - [`bls`](utils/bls/): A wrapper for an external BLS encryption library. + - [`boolean-bitfield`](utils/boolean-bitfield/): Provides an expandable vector + of bools, specifically for use in Eth2. + - [`fisher-yates-shuffle`](utils/fisher-yates-shuffle/): shuffles a list + pseudo-randomly. + - [`hashing`](utils/hashing/): A wrapper for external hashing libraries. + - [`honey-badger-split`](utils/honey-badger-split/): Splits a list in `n` + parts without giving AF about the length of the list, `n`, or anything + else. + - [`int-to-bytes`](utils/int-to-bytes/): Simple library which converts ints + into byte-strings of various lengths. + - [`slot_clock`](utils/slot_clock/): translates the system time into Beacon + Chain "slots". (Also provides another slot clock that's useful during + testing.) + - [`ssz`](utils/ssz/): an implementation of the SimpleSerialize + serialization/deserialization protocol used by Eth 2.0. + - [`ssz_derive`](utils/ssz_derive/): provides procedural macros for + deriving SSZ `Encodable`, `Decodable`, and `TreeHash` methods. + - [`swap_or_not_shuffle`](utils/swap_or_not_shuffle/): a list-shuffling + method which is slow, but allows for a subset of indices to be shuffled. + - [`test_random_derive`](utils/test_random_derive/): provides procedural + macros for deriving the `TestRandom` trait defined in `types`.