From 3115cdac85e63d6af5290eed6fbd0c5c7a9893c6 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Fri, 26 Jul 2024 13:38:49 -0400 Subject: [PATCH 01/29] add external dependencies --- docs/pages/contribution/depgraph.md | 79 +++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 21 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index c0e3d232660f..f07a20b366f9 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -2,12 +2,12 @@ title: Dependency Graph --- -## Lodestar monorepo dependency graph +## Lodestar Dependency Graph -This is a diagram of the various `lodestar-*` packages in the Lodestar monorepo and how they fit together: +This is a diagram of the various Lodestar packages in the monorepo, how they fit together and interact with major external dependencies: :::info -note: this dependency graph only applies to dependencies as they are used in the `src/` folders of each package, not in `test/` +Note: this dependency graph only applies to dependencies as they are used in the `src/` folders of each package, not in `test/` ::: ```mermaid @@ -72,48 +72,85 @@ graph TD classDef nodemodule fill:grey,stroke-width:2px,stroke:black,color:white; linkStyle default stroke:grey, fill:none,stroke-width:1.5px; ``` +# Lodestar Monorepo +For a list of all the packages in the monorepo and a description for each, click [here](https://github.com/ChainSafe/lodestar#architecture-overview). +Below is a brief summary of each package in alphabetical order. -For a list of all the packages in the monorepo and a description for each, click [here](https://github.com/ChainSafe/lodestar#packages). +## `@chainsafe/lodestar` -Let's talk about how each package fits together in finer detail, from top to bottom, following the chart. +[@chainsafe/lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/cli) combines everything together for CLI usage and configuration of the beacon node and validator. -## `@lodestar/params` +## `@lodestar/api` -[@lodestar/params](https://github.com/ChainSafe/lodestar/tree/unstable/packages/params) contains the parameters for configuring an Ethereum Consensus network. For example, the [mainnet params](https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/beacon-chain.md#configuration) +[@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains the TypeScript REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). -## `@lodestar/types` +## `@lodestar/beacon-node` -[@lodestar/types](https://github.com/ChainSafe/lodestar/tree/unstable/packages/types) contains Ethereum Consensus ssz types and data structures. +[@lodestar/beacon-node](https://github.com/ChainSafe/lodestar/tree/unstable/packages/beacon-node) contains the actual beacon node process itself, which is the aggregate of all the above packages and the "brain" of the Lodestar beacon chain implementation. All of the node modules live in this package as well. ## `@lodestar/config` [@lodestar/config](https://github.com/ChainSafe/lodestar/tree/unstable/packages/config) combines `@lodestar/params` and `@lodestar/types` together to be used as a single config object across the other Lodestar packages. -## `@lodestar/utils` +## `@lodestar/db` -[@lodestar/utils](https://github.com/ChainSafe/lodestar/tree/unstable/packages/utils) contains various utilities that are common among the various Lodestar monorepo packages. +[@lodestar/db](https://github.com/ChainSafe/lodestar/tree/unstable/packages/db) is where all persistent data about the beacon node is stored. Any package that needs to read or write persistent beacon node data depends on `lodestar-db`. + +## `@lodestar/fork-choice` + +[@lodestar/fork-choice](https://github.com/ChainSafe/lodestar/tree/unstable/packages/fork-choice) holds the methods for reading/writing the fork choice DAG. The `@lodestar/beacon-node` package is the sole consumer of this package because the beacon node itself is what controls when the fork choice DAG is updated. +For a good explanation on how the fork choice itself works, see the [annotated fork choice spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/fork-choice.md). This is an annotated version of the [Ethereum Consensus fork choice spec](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/fork-choice.md) which `lodestar-fork-choice` is based on. + +## `@lodestar/light-client` + +[@lodestar/light-client](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) is our light client designed to interact with the Ethereum blockchain in a trust-minimized matter via the sync committee and the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair/light-client). + +## `@lodestar/params` + +[@lodestar/params](https://github.com/ChainSafe/lodestar/tree/unstable/packages/params) contains the parameters for configuring an Ethereum Consensus network. For example, the [mainnet params](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#configuration). + +## `@lodestar/spec-test-util` + +[@lodestar/spec-test-util](https://github.com/ChainSafe/lodestar/tree/unstable/packages/spec-test-util) is a Vitest test utility harness used for adhering to the [Ethereum Consensus specification tests](https://github.com/ethereum/consensus-specs/tree/v1.4.0/tests). ## `@lodestar/state-transition` -[@lodestar/state-transition](https://github.com/ChainSafe/lodestar/tree/unstable/packages/state-transition) contains the Lodestar implementation of the [beacon state transition function](https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/beacon-chain.md#beacon-chain-state-transition-function), which is used by `@lodestar/beacon-node` to perform the actual beacon state transition. This package also contains various functions used to calculate info about the beacon chain (such as `computeEpochAtSlot`) which are used by `@lodestar/fork-choice` and `@lodestar/validator` +[@lodestar/state-transition](https://github.com/ChainSafe/lodestar/tree/unstable/packages/state-transition) contains the Lodestar implementation of the [beacon state transition function](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#beacon-chain-state-transition-function), which is used by `@lodestar/beacon-node` to perform the actual beacon state transition. This package also contains various functions used to calculate info about the beacon chain (such as `computeEpochAtSlot`) which are used by `@lodestar/fork-choice` and `@lodestar/validator` -## `@lodestar/db` +## `@lodestar/types` -[@lodestar/db](https://github.com/ChainSafe/lodestar/tree/unstable/packages/db) is where all persistent data about the beacon node is stored. Any package that needs to read or write persistent beacon node data depends on `lodestar-db`. +[@lodestar/types](https://github.com/ChainSafe/lodestar/tree/unstable/packages/types) contains Ethereum Consensus ssz types and data structures. -## `@lodestar/fork-choice` +## `@lodestar/utils` -[@lodestar/fork-choice](https://github.com/ChainSafe/lodestar/tree/unstable/packages/fork-choice) holds the methods for reading/writing the fork choice DAG. The `@lodestar/beacon-node` package is the sole consumer of this package because the beacon node itself is what controls when the fork choice DAG is updated. -For a good explanation on how the fork choice itself works, see the [annotated fork choice spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/fork-choice.md). This is an annotated version of the [Ethereum Consensus fork choice spec](https://github.com/ethereum/consensus-specs/blob/v1.1.10/specs/phase0/fork-choice.md) which `lodestar-fork-choice` is based on. +[@lodestar/utils](https://github.com/ChainSafe/lodestar/tree/unstable/packages/utils) contains various utilities that are common among the various Lodestar monorepo packages. ## `@lodestar/validator` [@lodestar/validator](https://github.com/ChainSafe/lodestar/tree/unstable/packages/validator) contains the validator client. The sole consumer of this package is `@chainsafe/lodestar`, which provides CLI access to run and configure the validator client. However, the validator client communicates to a REST API that is contained in `@lodestar/beacon-node` (specifically in the `api` module) to perform the validator duties. -## `@lodestar/beacon-node` +--- -[@lodestar/beacon-node](https://github.com/ChainSafe/lodestar/tree/unstable/packages/beacon-node) contains the actual beacon node process itself, which is the aggregate of all the above packages and the "brain" of the Lodestar beacon chain implementation. All of the node modules live in this package as well. +# External Dependencies +Below is a brief summary, listed alphabetically, of each of our main external dependencies managed externally from our monorepository. -## `@chainsafe/lodestar` +## `@chainsafe/blst-ts` +[@chainsafe/blst-ts`](https://github.com/ChainSafe/blst-ts) is our TypeScript wrapper for [@supranational/blst](https://github.com/supranational/blst) native bindings, a highly performant BLS12-381 signature library. -[@chainsafe/lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/cli) combines everything together for CLI usage and configuration of the beacon node and validator. +## `@chainsafe/discv5` +[@chainsafe/discv5](https://github.com/ChainSafe/discv5) is our monorepo containing our TypeScript implementation of the [discv5 Node Discovery Protocol v5](https://github.com/ethereum/devp2p/blob/master/discv5/discv5.md). + +## `@chainsafe/js-libp2p-gossipsub` +[@chainsafe/js-libp2p-gossipsub](https://github.com/ChainSafe/js-libp2p-gossipsub) is an implementation of pubsub based on mmeshsub and floodsub. Specified under [@libp2p/specs/pubsub/gossipsub](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub). + +## `@chainsafe/js-libp2p-noise` +[@chainsafe/js-libp2p-noise](https://github.com/ChainSafe/js-libp2p-noise) contains the TypeScript implementation of the Noise protocol, an encryption protocol used in [@libp2p/specs/noise](https://github.com/libp2p/specs/blob/master/noise). + +## `@chainsafe/js-libp2p-yamux` +[@chainsafe/js-libp2p-yamux](https://github.com/ChainSafe/js-libp2p-yamux) contains the JavaScript implementation of the [Yamux multiplexer from Hashicorp](https://github.com/hashicorp/yamux/blob/master/spec.md) designed for usage with js-libp2p. + +## `@chainsafe/ssz` +[@chainsafe/ssz](https://github.com/ChainSafe/ssz) contains the packages as a monorepo related to the [Simple Serialize](https://github.com/ethereum/consensus-specs/blob/v1.4.0/ssz/simple-serialize.md). + +## `@libp2p/js-libp2p` +[@libp2p/js-libp2p](https://github.com/libp2p/js-libp2p) is the JavaScript implementation of the libp2p networking stack used in Ethereum's networking stack. From 197e87e11fec3f8957e601e815ba0108a5add684 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Fri, 26 Jul 2024 13:49:07 -0400 Subject: [PATCH 02/29] add lodestar prover --- docs/pages/contribution/depgraph.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index f07a20b366f9..f05a67fe6c91 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -103,12 +103,15 @@ For a good explanation on how the fork choice itself works, see the [annotated f ## `@lodestar/light-client` -[@lodestar/light-client](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) is our light client designed to interact with the Ethereum blockchain in a trust-minimized matter via the sync committee and the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/dev/specs/altair/light-client). +[@lodestar/light-client](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) is our light client designed to interact with the Ethereum blockchain in a trust-minimized matter via the sync committee and the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). ## `@lodestar/params` [@lodestar/params](https://github.com/ChainSafe/lodestar/tree/unstable/packages/params) contains the parameters for configuring an Ethereum Consensus network. For example, the [mainnet params](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#configuration). +## `@lodestar/prover` +[@lodestar/prover](https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover) is a web3 provider and a proxy to enable verification of JSON-RPC calls to the execution client using the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). + ## `@lodestar/spec-test-util` [@lodestar/spec-test-util](https://github.com/ChainSafe/lodestar/tree/unstable/packages/spec-test-util) is a Vitest test utility harness used for adhering to the [Ethereum Consensus specification tests](https://github.com/ethereum/consensus-specs/tree/v1.4.0/tests). From 6aefeb9906e73208639e920ba512b733bd6820d1 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Fri, 26 Jul 2024 13:53:24 -0400 Subject: [PATCH 03/29] add flare --- docs/pages/contribution/depgraph.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index f05a67fe6c91..2fb10146e4e5 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -96,6 +96,10 @@ Below is a brief summary of each package in alphabetical order. [@lodestar/db](https://github.com/ChainSafe/lodestar/tree/unstable/packages/db) is where all persistent data about the beacon node is stored. Any package that needs to read or write persistent beacon node data depends on `lodestar-db`. +## `@lodestar/flare` + +[@lodestar/flare](https://github.com/ChainSafe/lodestar/tree/unstable/packages/flare) is a command tool used for easily triggering non-standard actions and debugging for researchers, developers and testers. Use with care. + ## `@lodestar/fork-choice` [@lodestar/fork-choice](https://github.com/ChainSafe/lodestar/tree/unstable/packages/fork-choice) holds the methods for reading/writing the fork choice DAG. The `@lodestar/beacon-node` package is the sole consumer of this package because the beacon node itself is what controls when the fork choice DAG is updated. From f429289429c29a30c48f1cd001d46485c8fbf13d Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Fri, 26 Jul 2024 13:55:44 -0400 Subject: [PATCH 04/29] add lodestar-logger --- docs/pages/contribution/depgraph.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index 2fb10146e4e5..95ed205234e4 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -109,6 +109,10 @@ For a good explanation on how the fork choice itself works, see the [annotated f [@lodestar/light-client](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) is our light client designed to interact with the Ethereum blockchain in a trust-minimized matter via the sync committee and the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). +## `@lodestar/lodestar-logger` + +[@lodestar/lodestar-logger](https://github.com/ChainSafe/lodestar/tree/unstable/packages/logger) is a common NodeJS logger for Lodestar binaries, which is required for worker threads to instantiate new loggers with consistent settings. + ## `@lodestar/params` [@lodestar/params](https://github.com/ChainSafe/lodestar/tree/unstable/packages/params) contains the parameters for configuring an Ethereum Consensus network. For example, the [mainnet params](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#configuration). From 41ad7f24e97d1427fb77fd838594bf42464c8cb3 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Fri, 26 Jul 2024 13:58:56 -0400 Subject: [PATCH 05/29] add reqresp --- docs/pages/contribution/depgraph.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index 95ed205234e4..58cc3fd1a104 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -120,6 +120,9 @@ For a good explanation on how the fork choice itself works, see the [annotated f ## `@lodestar/prover` [@lodestar/prover](https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover) is a web3 provider and a proxy to enable verification of JSON-RPC calls to the execution client using the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). +## `@lodestar/reqresp` +[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) is used as a TypeScript REST client for the [Ethereum Consensus Beacon APIs](https://github.com/ethereum/beacon-APIs/tree/v2.5.0). + ## `@lodestar/spec-test-util` [@lodestar/spec-test-util](https://github.com/ChainSafe/lodestar/tree/unstable/packages/spec-test-util) is a Vitest test utility harness used for adhering to the [Ethereum Consensus specification tests](https://github.com/ethereum/consensus-specs/tree/v1.4.0/tests). From f8dfe70f4444de413e6c323072fa39f63c593cf1 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 11:37:40 +0100 Subject: [PATCH 06/29] Update reqresp description --- docs/pages/contribution/depgraph.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index 58cc3fd1a104..f185415f1aaa 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -121,7 +121,8 @@ For a good explanation on how the fork choice itself works, see the [annotated f [@lodestar/prover](https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover) is a web3 provider and a proxy to enable verification of JSON-RPC calls to the execution client using the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). ## `@lodestar/reqresp` -[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) is used as a TypeScript REST client for the [Ethereum Consensus Beacon APIs](https://github.com/ethereum/beacon-APIs/tree/v2.5.0). + +[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the implementation of the [Ethereum Consensus ReqResp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp) ## `@lodestar/spec-test-util` From b5e076eaa3f0ad1c2ad05fbecb90e847eb6a2caf Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 11:38:43 +0100 Subject: [PATCH 07/29] Lint --- docs/pages/contribution/depgraph.md | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index f185415f1aaa..c46835753324 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -72,7 +72,9 @@ graph TD classDef nodemodule fill:grey,stroke-width:2px,stroke:black,color:white; linkStyle default stroke:grey, fill:none,stroke-width:1.5px; ``` + # Lodestar Monorepo + For a list of all the packages in the monorepo and a description for each, click [here](https://github.com/ChainSafe/lodestar#architecture-overview). Below is a brief summary of each package in alphabetical order. @@ -82,7 +84,7 @@ Below is a brief summary of each package in alphabetical order. ## `@lodestar/api` -[@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains the TypeScript REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). +[@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains the REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). ## `@lodestar/beacon-node` @@ -118,6 +120,7 @@ For a good explanation on how the fork choice itself works, see the [annotated f [@lodestar/params](https://github.com/ChainSafe/lodestar/tree/unstable/packages/params) contains the parameters for configuring an Ethereum Consensus network. For example, the [mainnet params](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#configuration). ## `@lodestar/prover` + [@lodestar/prover](https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover) is a web3 provider and a proxy to enable verification of JSON-RPC calls to the execution client using the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). ## `@lodestar/reqresp` @@ -147,25 +150,33 @@ For a good explanation on how the fork choice itself works, see the [annotated f --- # External Dependencies -Below is a brief summary, listed alphabetically, of each of our main external dependencies managed externally from our monorepository. + +Below is a brief summary, listed alphabetically, of each of our main external dependencies managed externally from our monorepo. ## `@chainsafe/blst-ts` + [@chainsafe/blst-ts`](https://github.com/ChainSafe/blst-ts) is our TypeScript wrapper for [@supranational/blst](https://github.com/supranational/blst) native bindings, a highly performant BLS12-381 signature library. ## `@chainsafe/discv5` + [@chainsafe/discv5](https://github.com/ChainSafe/discv5) is our monorepo containing our TypeScript implementation of the [discv5 Node Discovery Protocol v5](https://github.com/ethereum/devp2p/blob/master/discv5/discv5.md). ## `@chainsafe/js-libp2p-gossipsub` + [@chainsafe/js-libp2p-gossipsub](https://github.com/ChainSafe/js-libp2p-gossipsub) is an implementation of pubsub based on mmeshsub and floodsub. Specified under [@libp2p/specs/pubsub/gossipsub](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub). ## `@chainsafe/js-libp2p-noise` + [@chainsafe/js-libp2p-noise](https://github.com/ChainSafe/js-libp2p-noise) contains the TypeScript implementation of the Noise protocol, an encryption protocol used in [@libp2p/specs/noise](https://github.com/libp2p/specs/blob/master/noise). ## `@chainsafe/js-libp2p-yamux` + [@chainsafe/js-libp2p-yamux](https://github.com/ChainSafe/js-libp2p-yamux) contains the JavaScript implementation of the [Yamux multiplexer from Hashicorp](https://github.com/hashicorp/yamux/blob/master/spec.md) designed for usage with js-libp2p. ## `@chainsafe/ssz` + [@chainsafe/ssz](https://github.com/ChainSafe/ssz) contains the packages as a monorepo related to the [Simple Serialize](https://github.com/ethereum/consensus-specs/blob/v1.4.0/ssz/simple-serialize.md). ## `@libp2p/js-libp2p` + [@libp2p/js-libp2p](https://github.com/libp2p/js-libp2p) is the JavaScript implementation of the libp2p networking stack used in Ethereum's networking stack. From b8e4755f580463363482be6e3af8ce576980a3c4 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 11:39:28 +0100 Subject: [PATCH 08/29] Add light-client and prover to liraries that are useful individually --- docs/pages/supporting-libraries/libraries.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/pages/supporting-libraries/libraries.md b/docs/pages/supporting-libraries/libraries.md index e1576ba542f3..8cc79a4e493c 100644 --- a/docs/pages/supporting-libraries/libraries.md +++ b/docs/pages/supporting-libraries/libraries.md @@ -11,6 +11,8 @@ Several useful Ethereum consensus libraries are developed as part of the [Lodest - [`config`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/config) - Ethereum consensus run-time network configuration - [`api`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) - Ethereum consensus REST API client - [`flare`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/flare) - Beacon chain multi-purpose and debugging tool +- [`light-client`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) - Ethereum consensus light client +- [`prover`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover) - A set of tools allowing to verify EL client JSON-RPC calls ## Other libraries From a41649292af86a9994e776855e6e763ab9101b92 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 11:45:36 +0100 Subject: [PATCH 09/29] Consistently use Req/Resp (as per CL spec) in docs --- docs/pages/contribution/depgraph.md | 2 +- docs/pages/run/beacon-management/networking.md | 10 +++++----- packages/reqresp/README.md | 2 +- packages/reqresp/package.json | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index c46835753324..b8f4ac571588 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -125,7 +125,7 @@ For a good explanation on how the fork choice itself works, see the [annotated f ## `@lodestar/reqresp` -[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the implementation of the [Ethereum Consensus ReqResp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp) +[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the implementation of the [Ethereum Consensus Req/Resp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp) ## `@lodestar/spec-test-util` diff --git a/docs/pages/run/beacon-management/networking.md b/docs/pages/run/beacon-management/networking.md index 75f463a9b8f7..aaa202dc0af3 100644 --- a/docs/pages/run/beacon-management/networking.md +++ b/docs/pages/run/beacon-management/networking.md @@ -51,9 +51,9 @@ Alternatively, the ENR can also be retrieved from the beacon node API by queryin [ENR Viewer](https://enr-viewer.com/) provides a simple and convenient option to decode and inspect ENRs. -## Peer Communication (gossipsub and ReqResp) +## Peer Communication (gossipsub and Req/Resp) -Gossipsub and ReqResp are the two mechanisms that beacon nodes use to exchange chain data. Gossipsub is used disseminate the most recent relevant data proactively throughout the network. ReqResp is used to directly ask specific peers for specific information (eg: during syncing). +Gossipsub and Req/Resp are the two mechanisms that beacon nodes use to exchange chain data. Gossipsub is used disseminate the most recent relevant data proactively throughout the network. Req/Resp is used to directly ask specific peers for specific information (eg: during syncing). ### Gossipsub @@ -63,13 +63,13 @@ In GossipSub, nodes can subscribe to topics, effectively joining the correspondi Messages are propagated through a blend of eager-push and lazy-pull models. Specifically, the protocol employs "mesh links" to carry full messages actively and "gossip links" to carry only message identifiers (lazy-pull propagation model). This hybrid approach allows for both active message propagation and reactive message retrieval​ which is an extension of the traditional hub-and-spoke pub/sub model. -### ReqResp +### Req/Resp -ReqResp is the domain of protocols that establish a flexible, on-demand mechanism to retrieve historical data and data missed by gossip. This family of methods, implemented as separate libp2p protocols, operate between a single requester and responder. A method is initiated via a libp2p protocol ID, with the initiator sending a request message and the responder sending a response message. Every method defines a specific request and response message type, and a specific protocol ID. This framework also facilitates streaming responses and robust error handling. +Req/Resp is the domain of protocols that establish a flexible, on-demand mechanism to retrieve historical data and data missed by gossip. This family of methods, implemented as separate libp2p protocols, operate between a single requester and responder. A method is initiated via a libp2p protocol ID, with the initiator sending a request message and the responder sending a response message. Every method defines a specific request and response message type, and a specific protocol ID. This framework also facilitates streaming responses and robust error handling. ## Data Transport (libp2p) -Libp2p is a modular and extensible network stack that serves as the data transport layer below both gossipsub and ReqResp and facilitates the lower-level peer-to-peer communications. It provides a suite of protocols for various networking functionalities including network transports, connection encryption and protocol multiplexing. Its modular design allows for the easy addition, replacement, or upgrading of protocols, ensuring an adaptable and evolving networking stack. +Libp2p is a modular and extensible network stack that serves as the data transport layer below both gossipsub and Req/Resp and facilitates the lower-level peer-to-peer communications. It provides a suite of protocols for various networking functionalities including network transports, connection encryption and protocol multiplexing. Its modular design allows for the easy addition, replacement, or upgrading of protocols, ensuring an adaptable and evolving networking stack. Libp2p operates at the lower levels of the OSI model, particularly at the Transport and Network layers. Libp2p supports both TCP and UDP protocols for establishing connections and data transmission. Combined with libp2p's modular design it can integrate with various networking technologies to facilitating both routing and addressing. diff --git a/packages/reqresp/README.md b/packages/reqresp/README.md index 38a6fbe39653..84205a5589c8 100644 --- a/packages/reqresp/README.md +++ b/packages/reqresp/README.md @@ -7,7 +7,7 @@ > This package is part of [ChainSafe's Lodestar](https://lodestar.chainsafe.io) project -Typescript REST client for the [Ethereum Consensus API spec](https://github.com/ethereum/beacon-apis) +Typescript implementation of the [Ethereum Consensus Req/Resp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp) ## Usage diff --git a/packages/reqresp/package.json b/packages/reqresp/package.json index 37c16318c5b3..5f72d47e4efb 100644 --- a/packages/reqresp/package.json +++ b/packages/reqresp/package.json @@ -1,6 +1,6 @@ { "name": "@lodestar/reqresp", - "description": "A Typescript implementation of the Ethereum Consensus ReqResp protocol", + "description": "A Typescript implementation of the Ethereum Consensus Req/Resp protocol", "license": "Apache-2.0", "author": "ChainSafe Systems", "homepage": "https://github.com/ChainSafe/lodestar#readme", From 96a51da72528983baaa15ca7ef57dce4b90ee66e Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 11:49:37 +0100 Subject: [PATCH 10/29] Add Hashicorp to wordlist --- .wordlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.wordlist.txt b/.wordlist.txt index 46ca81441348..3a50ae295e47 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -141,6 +141,7 @@ flamegraph flamegraphs getNetworkIdentity gnosis +Hashicorp heapdump heaptrack holesky From 8ed6e6252423513dda0667ea4ffe79a41e321747 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 11:55:35 +0100 Subject: [PATCH 11/29] Sort wordlist --- .wordlist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.wordlist.txt b/.wordlist.txt index 3a50ae295e47..10cfff38c6d3 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -45,6 +45,7 @@ Grafana Grandine HTTPS HackMD +Hashicorp Homebrew IPFS IPv @@ -141,7 +142,6 @@ flamegraph flamegraphs getNetworkIdentity gnosis -Hashicorp heapdump heaptrack holesky From dfeaf065ac8c69fc108e35e3ab0fa97d44bea3fc Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 12:03:18 +0100 Subject: [PATCH 12/29] Update wordlist --- .wordlist.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.wordlist.txt b/.wordlist.txt index 10cfff38c6d3..dc79ccf4d925 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -105,6 +105,7 @@ blockRoot blockchain bootnode bootnodes +blst bundlers chainConfig chainsafe @@ -140,6 +141,7 @@ ephemery ethers flamegraph flamegraphs +floodsub getNetworkIdentity gnosis heapdump @@ -161,6 +163,7 @@ malloc mdns merkle merkleization +mmeshsub monorepo multiaddr multifork @@ -172,6 +175,7 @@ orchestrator osx overriden params +performant pid plaintext pre @@ -179,6 +183,7 @@ premined produceBlockV protolambda prover +pubsub repo repos req From 77adc19ae3a497346acac64c08403ff5bcd59e81 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 12:11:20 +0100 Subject: [PATCH 13/29] Sort --- .wordlist.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.wordlist.txt b/.wordlist.txt index dc79ccf4d925..974e7085a360 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -103,9 +103,9 @@ backfill beaconcha blockRoot blockchain +blst bootnode bootnodes -blst bundlers chainConfig chainsafe From 19ccdeb1e25abaa3b097e447b6ad46bd737f5484 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 12:15:33 +0100 Subject: [PATCH 14/29] Fix header size of packages --- docs/pages/contribution/depgraph.md | 52 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index b8f4ac571588..ee54bf60caff 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -73,110 +73,110 @@ graph TD linkStyle default stroke:grey, fill:none,stroke-width:1.5px; ``` -# Lodestar Monorepo +## Lodestar Monorepo For a list of all the packages in the monorepo and a description for each, click [here](https://github.com/ChainSafe/lodestar#architecture-overview). Below is a brief summary of each package in alphabetical order. -## `@chainsafe/lodestar` +### `@chainsafe/lodestar` [@chainsafe/lodestar](https://github.com/ChainSafe/lodestar/tree/unstable/packages/cli) combines everything together for CLI usage and configuration of the beacon node and validator. -## `@lodestar/api` +### `@lodestar/api` [@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains the REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). -## `@lodestar/beacon-node` +### `@lodestar/beacon-node` [@lodestar/beacon-node](https://github.com/ChainSafe/lodestar/tree/unstable/packages/beacon-node) contains the actual beacon node process itself, which is the aggregate of all the above packages and the "brain" of the Lodestar beacon chain implementation. All of the node modules live in this package as well. -## `@lodestar/config` +### `@lodestar/config` [@lodestar/config](https://github.com/ChainSafe/lodestar/tree/unstable/packages/config) combines `@lodestar/params` and `@lodestar/types` together to be used as a single config object across the other Lodestar packages. -## `@lodestar/db` +### `@lodestar/db` [@lodestar/db](https://github.com/ChainSafe/lodestar/tree/unstable/packages/db) is where all persistent data about the beacon node is stored. Any package that needs to read or write persistent beacon node data depends on `lodestar-db`. -## `@lodestar/flare` +### `@lodestar/flare` [@lodestar/flare](https://github.com/ChainSafe/lodestar/tree/unstable/packages/flare) is a command tool used for easily triggering non-standard actions and debugging for researchers, developers and testers. Use with care. -## `@lodestar/fork-choice` +### `@lodestar/fork-choice` [@lodestar/fork-choice](https://github.com/ChainSafe/lodestar/tree/unstable/packages/fork-choice) holds the methods for reading/writing the fork choice DAG. The `@lodestar/beacon-node` package is the sole consumer of this package because the beacon node itself is what controls when the fork choice DAG is updated. For a good explanation on how the fork choice itself works, see the [annotated fork choice spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/fork-choice.md). This is an annotated version of the [Ethereum Consensus fork choice spec](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/fork-choice.md) which `lodestar-fork-choice` is based on. -## `@lodestar/light-client` +### `@lodestar/light-client` [@lodestar/light-client](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) is our light client designed to interact with the Ethereum blockchain in a trust-minimized matter via the sync committee and the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). -## `@lodestar/lodestar-logger` +### `@lodestar/lodestar-logger` [@lodestar/lodestar-logger](https://github.com/ChainSafe/lodestar/tree/unstable/packages/logger) is a common NodeJS logger for Lodestar binaries, which is required for worker threads to instantiate new loggers with consistent settings. -## `@lodestar/params` +### `@lodestar/params` [@lodestar/params](https://github.com/ChainSafe/lodestar/tree/unstable/packages/params) contains the parameters for configuring an Ethereum Consensus network. For example, the [mainnet params](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#configuration). -## `@lodestar/prover` +### `@lodestar/prover` [@lodestar/prover](https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover) is a web3 provider and a proxy to enable verification of JSON-RPC calls to the execution client using the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). -## `@lodestar/reqresp` +### `@lodestar/reqresp` [@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the implementation of the [Ethereum Consensus Req/Resp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp) -## `@lodestar/spec-test-util` +### `@lodestar/spec-test-util` [@lodestar/spec-test-util](https://github.com/ChainSafe/lodestar/tree/unstable/packages/spec-test-util) is a Vitest test utility harness used for adhering to the [Ethereum Consensus specification tests](https://github.com/ethereum/consensus-specs/tree/v1.4.0/tests). -## `@lodestar/state-transition` +### `@lodestar/state-transition` [@lodestar/state-transition](https://github.com/ChainSafe/lodestar/tree/unstable/packages/state-transition) contains the Lodestar implementation of the [beacon state transition function](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/beacon-chain.md#beacon-chain-state-transition-function), which is used by `@lodestar/beacon-node` to perform the actual beacon state transition. This package also contains various functions used to calculate info about the beacon chain (such as `computeEpochAtSlot`) which are used by `@lodestar/fork-choice` and `@lodestar/validator` -## `@lodestar/types` +### `@lodestar/types` [@lodestar/types](https://github.com/ChainSafe/lodestar/tree/unstable/packages/types) contains Ethereum Consensus ssz types and data structures. -## `@lodestar/utils` +### `@lodestar/utils` [@lodestar/utils](https://github.com/ChainSafe/lodestar/tree/unstable/packages/utils) contains various utilities that are common among the various Lodestar monorepo packages. -## `@lodestar/validator` +### `@lodestar/validator` [@lodestar/validator](https://github.com/ChainSafe/lodestar/tree/unstable/packages/validator) contains the validator client. The sole consumer of this package is `@chainsafe/lodestar`, which provides CLI access to run and configure the validator client. However, the validator client communicates to a REST API that is contained in `@lodestar/beacon-node` (specifically in the `api` module) to perform the validator duties. --- -# External Dependencies +## External Dependencies Below is a brief summary, listed alphabetically, of each of our main external dependencies managed externally from our monorepo. -## `@chainsafe/blst-ts` +### `@chainsafe/blst-ts` [@chainsafe/blst-ts`](https://github.com/ChainSafe/blst-ts) is our TypeScript wrapper for [@supranational/blst](https://github.com/supranational/blst) native bindings, a highly performant BLS12-381 signature library. -## `@chainsafe/discv5` +### `@chainsafe/discv5` [@chainsafe/discv5](https://github.com/ChainSafe/discv5) is our monorepo containing our TypeScript implementation of the [discv5 Node Discovery Protocol v5](https://github.com/ethereum/devp2p/blob/master/discv5/discv5.md). -## `@chainsafe/js-libp2p-gossipsub` +### `@chainsafe/js-libp2p-gossipsub` [@chainsafe/js-libp2p-gossipsub](https://github.com/ChainSafe/js-libp2p-gossipsub) is an implementation of pubsub based on mmeshsub and floodsub. Specified under [@libp2p/specs/pubsub/gossipsub](https://github.com/libp2p/specs/tree/master/pubsub/gossipsub). -## `@chainsafe/js-libp2p-noise` +### `@chainsafe/js-libp2p-noise` [@chainsafe/js-libp2p-noise](https://github.com/ChainSafe/js-libp2p-noise) contains the TypeScript implementation of the Noise protocol, an encryption protocol used in [@libp2p/specs/noise](https://github.com/libp2p/specs/blob/master/noise). -## `@chainsafe/js-libp2p-yamux` +### `@chainsafe/js-libp2p-yamux` [@chainsafe/js-libp2p-yamux](https://github.com/ChainSafe/js-libp2p-yamux) contains the JavaScript implementation of the [Yamux multiplexer from Hashicorp](https://github.com/hashicorp/yamux/blob/master/spec.md) designed for usage with js-libp2p. -## `@chainsafe/ssz` +### `@chainsafe/ssz` [@chainsafe/ssz](https://github.com/ChainSafe/ssz) contains the packages as a monorepo related to the [Simple Serialize](https://github.com/ethereum/consensus-specs/blob/v1.4.0/ssz/simple-serialize.md). -## `@libp2p/js-libp2p` +### `@libp2p/js-libp2p` [@libp2p/js-libp2p](https://github.com/libp2p/js-libp2p) is the JavaScript implementation of the libp2p networking stack used in Ethereum's networking stack. From 29d08d761677fa0d5a9a08ee11a3bba1691160fc Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 12:26:00 +0100 Subject: [PATCH 15/29] Consistent with readme text --- docs/pages/contribution/depgraph.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index ee54bf60caff..d7600530b756 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -84,7 +84,7 @@ Below is a brief summary of each package in alphabetical order. ### `@lodestar/api` -[@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains the REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). +[@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains a Typescript REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). ### `@lodestar/beacon-node` @@ -125,7 +125,7 @@ For a good explanation on how the fork choice itself works, see the [annotated f ### `@lodestar/reqresp` -[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the implementation of the [Ethereum Consensus Req/Resp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp) +[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the Typescript implementation of the [Ethereum Consensus Req/Resp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp). ### `@lodestar/spec-test-util` From caf52fbb868412b29d7d108e43b0ffe946dea79b Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 12:33:09 +0100 Subject: [PATCH 16/29] Consistent spelling of TypeScript in depgraph page --- docs/pages/contribution/depgraph.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index d7600530b756..2c599ee1a266 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -84,7 +84,7 @@ Below is a brief summary of each package in alphabetical order. ### `@lodestar/api` -[@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains a Typescript REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). +[@lodestar/api](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) contains a TypeScript REST client for the [Ethereum Consensus API](https://github.com/ethereum/beacon-apis). ### `@lodestar/beacon-node` @@ -125,7 +125,7 @@ For a good explanation on how the fork choice itself works, see the [annotated f ### `@lodestar/reqresp` -[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the Typescript implementation of the [Ethereum Consensus Req/Resp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp). +[@lodestar/reqresp](https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp) contains the TypeScript implementation of the [Ethereum Consensus Req/Resp protocol](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/p2p-interface.md#reqresp). ### `@lodestar/spec-test-util` From 349976949d32483332172068a3c3888c756b93d9 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sat, 27 Jul 2024 12:49:33 +0100 Subject: [PATCH 17/29] Fix package names --- docs/pages/contribution/depgraph.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index 2c599ee1a266..2d05d3ca7609 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -96,7 +96,7 @@ Below is a brief summary of each package in alphabetical order. ### `@lodestar/db` -[@lodestar/db](https://github.com/ChainSafe/lodestar/tree/unstable/packages/db) is where all persistent data about the beacon node is stored. Any package that needs to read or write persistent beacon node data depends on `lodestar-db`. +[@lodestar/db](https://github.com/ChainSafe/lodestar/tree/unstable/packages/db) is where all persistent data about the beacon node is stored. Any package that needs to read or write persistent beacon node data depends on `@lodestar/db`. ### `@lodestar/flare` @@ -105,15 +105,15 @@ Below is a brief summary of each package in alphabetical order. ### `@lodestar/fork-choice` [@lodestar/fork-choice](https://github.com/ChainSafe/lodestar/tree/unstable/packages/fork-choice) holds the methods for reading/writing the fork choice DAG. The `@lodestar/beacon-node` package is the sole consumer of this package because the beacon node itself is what controls when the fork choice DAG is updated. -For a good explanation on how the fork choice itself works, see the [annotated fork choice spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/fork-choice.md). This is an annotated version of the [Ethereum Consensus fork choice spec](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/fork-choice.md) which `lodestar-fork-choice` is based on. +For a good explanation on how the fork choice itself works, see the [annotated fork choice spec](https://github.com/ethereum/annotated-spec/blob/master/phase0/fork-choice.md). This is an annotated version of the [Ethereum Consensus fork choice spec](https://github.com/ethereum/consensus-specs/blob/v1.4.0/specs/phase0/fork-choice.md) which `@lodestar/fork-choice` is based on. ### `@lodestar/light-client` [@lodestar/light-client](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) is our light client designed to interact with the Ethereum blockchain in a trust-minimized matter via the sync committee and the [light-client protocol](https://github.com/ethereum/consensus-specs/tree/v1.4.0/specs/altair/light-client). -### `@lodestar/lodestar-logger` +### `@lodestar/logger` -[@lodestar/lodestar-logger](https://github.com/ChainSafe/lodestar/tree/unstable/packages/logger) is a common NodeJS logger for Lodestar binaries, which is required for worker threads to instantiate new loggers with consistent settings. +[@lodestar/logger](https://github.com/ChainSafe/lodestar/tree/unstable/packages/logger) is a common NodeJS logger for Lodestar binaries, which is required for worker threads to instantiate new loggers with consistent settings. ### `@lodestar/params` From 2906fc9aa3a439422a61c9265bf134b2af54aa42 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jul 2024 21:19:36 +0100 Subject: [PATCH 18/29] Update diagram --- docs/pages/contribution/depgraph.md | 129 ++++++++++++++++++++++------ 1 file changed, 102 insertions(+), 27 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index 2d05d3ca7609..df6c823f14e4 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -12,65 +12,136 @@ Note: this dependency graph only applies to dependencies as they are used in the ```mermaid graph TD - lodestar["lodestar"]:::nodemodule - cli["lodestar-cli"]:::nodemodule - config["lodestar-config"]:::nodemodule - db["lodestar-db"]:::nodemodule - fork-choice["lodestar-fork-choice"]:::nodemodule - params["lodestar-params"]:::nodemodule - types["lodestar-types"]:::nodemodule - utils["lodestar-utils"]:::nodemodule - validator["lodestar-validator"]:::nodemodule - state-trans["lodestar-state-transition"]:::nodemodule - + api["api"]:::nodemodule + light-client["light-client"]:::nodemodule + prover["prover"]:::nodemodule + logger["logger"]:::nodemodule + reqresp["reqresp"]:::nodemodule + beacon-node["beacon-node"]:::nodemodule + cli["cli"]:::nodemodule + config["config"]:::nodemodule + db["db"]:::nodemodule + fork-choice["fork-choice"]:::nodemodule + params["params"]:::nodemodule + types["types"]:::nodemodule + utils["utils"]:::nodemodule + validator["validator"]:::nodemodule + state-transition["state-transition"]:::nodemodule + ssz["ssz"]:::nodemodule + blst["blst"]:::nodemodule + discv5["discv5"]:::nodemodule + libp2p["libp2p"]:::nodemodule + libp2p-gossipsub["libp2p-gossipsub"]:::nodemodule + libp2p-noise["libp2p-noise"]:::nodemodule + libp2p-yamux["libp2p-yamux"]:::nodemodule + + ssz-->api + ssz-->config + ssz-->types + ssz-->beacon-node + ssz-->validator + ssz-->light-client + ssz-->state-transition + + blst-->beacon-node + blst-->state-transition + + discv5-->beacon-node + + libp2p-->beacon-node + + libp2p-gossipsub-->libp2p + libp2p-noise-->libp2p + libp2p-yamux-->libp2p + + api-->beacon-node + api-->validator + api-->light-client + + light-client-->prover + + params-->api params-->config params-->types + params-->beacon-node + params-->validator + params-->light-client + params-->prover - types-->lodestar + types-->api + types-->beacon-node types-->cli types-->config types-->validator types-->fork-choice + types-->light-client + types-->prover - config-->lodestar + config-->api + config-->beacon-node config-->cli config-->validator config-->fork-choice - config-->state-trans + config-->state-transition config-->db + config-->light-client + config-->prover - utils-->lodestar + utils-->api + utils-->beacon-node utils-->db utils-->cli utils-->validator utils-->fork-choice - utils-->state-trans + utils-->state-transition + utils-->light-client + + logger-->beacon-node + logger-->validator + logger-->light-client + logger-->prover + logger-->cli - state-trans-->lodestar - state-trans-->validator - state-trans-->fork-choice + reqresp-->beacon-node - db-->lodestar + state-transition-->beacon-node + state-transition-->validator + state-transition-->fork-choice + + db-->beacon-node db-->validator - fork-choice-->lodestar + fork-choice-->beacon-node - lodestar-->cli + beacon-node-->cli validator-->cli + light-client-->cli + click api "https://github.com/ChainSafe/lodestar/tree/unstable/packages/api" + click light-client "https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client" + click prover "https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover" + click logger "https://github.com/ChainSafe/lodestar/tree/unstable/packages/logger" + click reqresp "https://github.com/ChainSafe/lodestar/tree/unstable/packages/reqresp" click cli "https://github.com/ChainSafe/lodestar/tree/unstable/packages/cli" - click lodestar "https://github.com/ChainSafe/lodestar/tree/unstable/packages/beacon-node" + click beacon-node "https://github.com/ChainSafe/lodestar/tree/unstable/packages/beacon-node" click validator "https://github.com/ChainSafe/lodestar/tree/unstable/packages/validator" click db "https://github.com/ChainSafe/lodestar/tree/unstable/packages/db" click params "https://github.com/ChainSafe/lodestar/tree/unstable/packages/params" - click state-trans "https://github.com/ChainSafe/lodestar/tree/unstable/packages/state-transition" + click state-transition "https://github.com/ChainSafe/lodestar/tree/unstable/packages/state-transition" click fork-choice "https://github.com/ChainSafe/lodestar/tree/unstable/packages/fork-choice" click types "https://github.com/ChainSafe/lodestar/tree/unstable/packages/types" click utils "https://github.com/ChainSafe/lodestar/tree/unstable/packages/utils" click config "https://github.com/ChainSafe/lodestar/tree/unstable/packages/config" - - classDef nodemodule fill:grey,stroke-width:2px,stroke:black,color:white; - linkStyle default stroke:grey, fill:none,stroke-width:1.5px; + click ssz "https://github.com/ChainSafe/ssz" + click blst "https://github.com/ChainSafe/blst-ts" + click discv5 "https://github.com/ChainSafe/discv5" + click libp2p "https://github.com/libp2p/js-libp2p" + click libp2p-gossipsub "https://github.com/ChainSafe/js-libp2p-gossipsub" + click libp2p-noise "https://github.com/ChainSafe/js-libp2p-noise" + click libp2p-yamux "https://github.com/ChainSafe/js-libp2p-yamux" + + classDef nodemodule fill:grey,stroke-width:3px,font-size:48px,stroke:black,color:white; + linkStyle default stroke:grey,fill:none,stroke-width:2px; ``` ## Lodestar Monorepo @@ -180,3 +251,7 @@ Below is a brief summary, listed alphabetically, of each of our main external de ### `@libp2p/js-libp2p` [@libp2p/js-libp2p](https://github.com/libp2p/js-libp2p) is the JavaScript implementation of the libp2p networking stack used in Ethereum's networking stack. + +``` + +``` From 68cc1a1bcf4657357a84e012c0bad0cbf5627347 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jul 2024 21:22:48 +0100 Subject: [PATCH 19/29] Remove extra lines --- docs/pages/contribution/depgraph.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index df6c823f14e4..c099a35c2ca7 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -251,7 +251,3 @@ Below is a brief summary, listed alphabetically, of each of our main external de ### `@libp2p/js-libp2p` [@libp2p/js-libp2p](https://github.com/libp2p/js-libp2p) is the JavaScript implementation of the libp2p networking stack used in Ethereum's networking stack. - -``` - -``` From c550dcefced1b9dcfe7780785a575b866b8f97f0 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Sun, 28 Jul 2024 21:40:02 +0100 Subject: [PATCH 20/29] More visible arrows --- docs/pages/contribution/depgraph.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index c099a35c2ca7..4cf74abe84fb 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -140,8 +140,8 @@ graph TD click libp2p-noise "https://github.com/ChainSafe/js-libp2p-noise" click libp2p-yamux "https://github.com/ChainSafe/js-libp2p-yamux" - classDef nodemodule fill:grey,stroke-width:3px,font-size:48px,stroke:black,color:white; - linkStyle default stroke:grey,fill:none,stroke-width:2px; + classDef nodemodule fill:grey,stroke-width:4px,font-size:48px,stroke:black,color:white; + linkStyle default stroke:grey,fill:none,stroke-width:4px; ``` ## Lodestar Monorepo From 27e6f8dbd14485a467f2afa333c958763643771d Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jul 2024 13:24:52 +0100 Subject: [PATCH 21/29] Use note instead of info label --- docs/pages/contribution/depgraph.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/pages/contribution/depgraph.md b/docs/pages/contribution/depgraph.md index 4cf74abe84fb..17675cf47ff0 100644 --- a/docs/pages/contribution/depgraph.md +++ b/docs/pages/contribution/depgraph.md @@ -6,8 +6,8 @@ title: Dependency Graph This is a diagram of the various Lodestar packages in the monorepo, how they fit together and interact with major external dependencies: -:::info -Note: this dependency graph only applies to dependencies as they are used in the `src/` folders of each package, not in `test/` +:::note +This dependency graph only applies to dependencies as they are used in the `src/` folders of each package, not in `test/` ::: ```mermaid From 394cd8d2a4ced1bb6bc6e35344d55f2956b0b3b9 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Mon, 29 Jul 2024 14:16:48 -0400 Subject: [PATCH 22/29] update readme.md --- README.md | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 4afb92d4e92d..50cad549498f 100644 --- a/README.md +++ b/README.md @@ -44,21 +44,25 @@ yarn build - :package: This mono-repository contains a suite of Ethereum Consensus packages. - :balance_scale: The mono-repository is released under [LGPLv3 license](./LICENSE). Note, that the packages contain their own licenses. -| Package | Version | License | Docs | Description | -| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------- | -| [`@lodestar/beacon-node`](./packages/beacon-node) | [![npm](https://img.shields.io/npm/v/@lodestar/beacon-node)](https://www.npmjs.com/package/@lodestar/beacon-node) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/beacon-node) | :rotating_light: Beacon-chain client | -| [`@lodestar/validator`](./packages/validator) | [![npm](https://img.shields.io/npm/v/@lodestar/validator)](https://www.npmjs.com/package/@lodestar/validator) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/validator) | :bank: Validator client | -| [`@lodestar/light-client`](./packages/light-client) | [![npm](https://img.shields.io/npm/v/@lodestar/light-client)](https://www.npmjs.com/package/@lodestar/light-client) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/light-client) | :bird: Ethereum Light client | -| [`@lodestar/api`](./packages/api) | [![npm](https://img.shields.io/npm/v/@lodestar/api)](https://www.npmjs.com/package/@lodestar/api) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/api) | :clipboard: REST Client for the Ethereum Beacon API | -| [`@chainsafe/lodestar`](./packages/cli) | [![npm](https://img.shields.io/npm/v/@chainsafe/lodestar)](https://www.npmjs.com/package/@chainsafe/lodestar) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/cli/) | :computer: Command-line tool for Lodestar | -| [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | -| [`@lodestar/types`](./packages/types) | [![npm](https://img.shields.io/npm/v/@lodestar/types)](https://www.npmjs.com/package/@lodestar/types) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/types) | :spiral_notepad: Eth Consensus TypeScript and SSZ types | -| [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | -| [`@lodestar/utils`](./packages/utils) | [![npm](https://img.shields.io/npm/v/@lodestar/utils)](https://www.npmjs.com/package/@lodestar/utils) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/utils) | :toolbox: Miscellaneous utility functions used across Lodestar | -| [`@lodestar/config`](./packages/config) | [![npm](https://img.shields.io/npm/v/@lodestar/config)](https://www.npmjs.com/package/@lodestar/config) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/config) | :spiral_notepad: Eth Consensus types and params bundled together | -| [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | -| [`@lodestar/db`](./packages/db) | [![npm](https://img.shields.io/npm/v/@lodestar/db)](https://www.npmjs.com/package/@lodestar/db) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/db) | :floppy_disk: Read/write persistent Eth Consensus data | -| [`@lodestar/fork-choice`](./packages/fork-choice) | [![npm](https://img.shields.io/npm/v/@lodestar/fork-choice)](https://www.npmjs.com/package/@lodestar/fork-choice) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/fork-choice) | :fork_and_knife: Beacon-chain fork choice | +| Package | Version | License | Docs | Description | +| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| [`@chainsafe/lodestar`](./packages/cli) | [![npm](https://img.shields.io/npm/v/@chainsafe/lodestar)](https://www.npmjs.com/package/@chainsafe/lodestar) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/cli/) | :computer: Command-line tool for Lodestar | +| [`@lodestar/api`](./packages/api) | [![npm](https://img.shields.io/npm/v/@lodestar/api)](https://www.npmjs.com/package/@lodestar/api) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/api) | :clipboard: REST Client for the Ethereum Beacon API | +| [`@lodestar/beacon-node`](./packages/beacon-node) | [![npm](https://img.shields.io/npm/v/@lodestar/beacon-node)](https://www.npmjs.com/package/@lodestar/beacon-node) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/beacon-node) | :rotating_light: Beacon-chain client | +| [`@lodestar/config`](./packages/config) | [![npm](https://img.shields.io/npm/v/@lodestar/config)](https://www.npmjs.com/package/@lodestar/config) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/config) | :spiral_notepad: Eth Consensus types and params bundled together | +| [`@lodestar/db`](./packages/db) | [![npm](https://img.shields.io/npm/v/@lodestar/db)](https://www.npmjs.com/package/@lodestar/db) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/db) | :floppy_disk: Read/write persistent Eth Consensus data | +| [`@lodestar/flare`](./packages/flare) | [![npm](https://img.shields.io/npm/v/@lodestar/flare)](https://www.npmjs.com/package/@lodestar/flare) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/flare) | :boom: Command tool for triggering non-standard actions | +| [`@lodestar/fork-choice`](./packages/fork-choice) | [![npm](https://img.shields.io/npm/v/@lodestar/fork-choice)](https://www.npmjs.com/package/@lodestar/fork-choice) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/fork-choice) | :fork_and_knife: Beacon-chain fork choice | +| [`@lodestar/light-client`](./packages/light-client) | [![npm](https://img.shields.io/npm/v/@lodestar/light-client)](https://www.npmjs.com/package/@lodestar/light-client) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/light-client) | :bird: Ethereum Light client | +| [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | +| [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | +| [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Eth Consensus light client verifier for execution JSON-RPC calls | +| [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: TS implementation of Eth Consensus Req/Resp protocol | +| [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | +| [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | +| [`@lodestar/types`](./packages/types) | [![npm](https://img.shields.io/npm/v/@lodestar/types)](https://www.npmjs.com/package/@lodestar/types) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/types) | :spiral_notepad: Eth Consensus TypeScript and SSZ types | +| [`@lodestar/utils`](./packages/utils) | [![npm](https://img.shields.io/npm/v/@lodestar/utils)](https://www.npmjs.com/package/@lodestar/utils) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/utils) | :toolbox: Miscellaneous utility functions used across Lodestar | +| [`@lodestar/validator`](./packages/validator) | [![npm](https://img.shields.io/npm/v/@lodestar/validator)](https://www.npmjs.com/package/@lodestar/validator) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/validator) | :bank: Validator client | ## Contributors From 63500142b1b0306b35faf6ee85b6c82f22bee193 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jul 2024 19:33:11 +0100 Subject: [PATCH 23/29] Fix formatting --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 50cad549498f..f04221b3f759 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ yarn build | [`@lodestar/beacon-node`](./packages/beacon-node) | [![npm](https://img.shields.io/npm/v/@lodestar/beacon-node)](https://www.npmjs.com/package/@lodestar/beacon-node) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/beacon-node) | :rotating_light: Beacon-chain client | | [`@lodestar/config`](./packages/config) | [![npm](https://img.shields.io/npm/v/@lodestar/config)](https://www.npmjs.com/package/@lodestar/config) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/config) | :spiral_notepad: Eth Consensus types and params bundled together | | [`@lodestar/db`](./packages/db) | [![npm](https://img.shields.io/npm/v/@lodestar/db)](https://www.npmjs.com/package/@lodestar/db) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/db) | :floppy_disk: Read/write persistent Eth Consensus data | -| [`@lodestar/flare`](./packages/flare) | [![npm](https://img.shields.io/npm/v/@lodestar/flare)](https://www.npmjs.com/package/@lodestar/flare) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/flare) | :boom: Command tool for triggering non-standard actions | +| [`@lodestar/flare`](./packages/flare) | [![npm](https://img.shields.io/npm/v/@lodestar/flare)](https://www.npmjs.com/package/@lodestar/flare) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/flare) | :boom: Command tool for triggering non-standard actions | | [`@lodestar/fork-choice`](./packages/fork-choice) | [![npm](https://img.shields.io/npm/v/@lodestar/fork-choice)](https://www.npmjs.com/package/@lodestar/fork-choice) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/fork-choice) | :fork_and_knife: Beacon-chain fork choice | | [`@lodestar/light-client`](./packages/light-client) | [![npm](https://img.shields.io/npm/v/@lodestar/light-client)](https://www.npmjs.com/package/@lodestar/light-client) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/light-client) | :bird: Ethereum Light client | | [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | From 3698b01da5fe1ad764931e70956e2c98989819f6 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Mon, 29 Jul 2024 14:53:19 -0400 Subject: [PATCH 24/29] update wordlist.txt --- .wordlist.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/.wordlist.txt b/.wordlist.txt index 974e7085a360..e1eac2a37494 100644 --- a/.wordlist.txt +++ b/.wordlist.txt @@ -210,6 +210,7 @@ util utils validator validators +verifier vite vitest webpack From 810e87f0b516389c028a3c92dbcce70fd90c958f Mon Sep 17 00:00:00 2001 From: Phil Ngo <58080811+philknows@users.noreply.github.com> Date: Mon, 29 Jul 2024 14:58:49 -0400 Subject: [PATCH 25/29] update description of reqresp on readme.md Co-authored-by: Nico Flaig --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f04221b3f759..edecd62dbe98 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ yarn build | [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | | [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | | [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Eth Consensus light client verifier for execution JSON-RPC calls | -| [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: TS implementation of Eth Consensus Req/Resp protocol | +| [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: Eth Consensus Req/Resp protocol | | [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | | [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | | [`@lodestar/types`](./packages/types) | [![npm](https://img.shields.io/npm/v/@lodestar/types)](https://www.npmjs.com/package/@lodestar/types) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/types) | :spiral_notepad: Eth Consensus TypeScript and SSZ types | From 52a7f4ee39a22f694d5db05bf7539390147aaa88 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Mon, 29 Jul 2024 20:12:22 +0100 Subject: [PATCH 26/29] Remove extra whiespace --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index edecd62dbe98..be0b3cca200a 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ yarn build | [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | | [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | | [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Eth Consensus light client verifier for execution JSON-RPC calls | -| [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: Eth Consensus Req/Resp protocol | +| [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: Eth Consensus Req/Resp protocol | | [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | | [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | | [`@lodestar/types`](./packages/types) | [![npm](https://img.shields.io/npm/v/@lodestar/types)](https://www.npmjs.com/package/@lodestar/types) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/types) | :spiral_notepad: Eth Consensus TypeScript and SSZ types | From 56c10c31ee002bb0a0631f3315f4847b3ee0f578 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Tue, 30 Jul 2024 08:32:29 -0400 Subject: [PATCH 27/29] alignment --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index be0b3cca200a..ebffa9b9f9e0 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ yarn build | [`@lodestar/light-client`](./packages/light-client) | [![npm](https://img.shields.io/npm/v/@lodestar/light-client)](https://www.npmjs.com/package/@lodestar/light-client) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/light-client) | :bird: Ethereum Light client | | [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | | [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | -| [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Eth Consensus light client verifier for execution JSON-RPC calls | +| [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Eth Consensus Light client verifier for execution JSON-RPC calls | | [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: Eth Consensus Req/Resp protocol | | [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | | [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | From 021b16b9bec204fc1b7d0bb5b243e4c69666b7d3 Mon Sep 17 00:00:00 2001 From: Phil Ngo Date: Tue, 30 Jul 2024 09:50:26 -0400 Subject: [PATCH 28/29] light client alignment --- README.md | 2 +- docs/pages/supporting-libraries/libraries.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ebffa9b9f9e0..a174721ed4d3 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ yarn build | [`@lodestar/light-client`](./packages/light-client) | [![npm](https://img.shields.io/npm/v/@lodestar/light-client)](https://www.npmjs.com/package/@lodestar/light-client) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/light-client) | :bird: Ethereum Light client | | [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | | [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | -| [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Eth Consensus Light client verifier for execution JSON-RPC calls | +| [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Ethereum Light client verifier for execution JSON-RPC calls | | [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: Eth Consensus Req/Resp protocol | | [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | | [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | diff --git a/docs/pages/supporting-libraries/libraries.md b/docs/pages/supporting-libraries/libraries.md index 8cc79a4e493c..e76ccc2f9ec7 100644 --- a/docs/pages/supporting-libraries/libraries.md +++ b/docs/pages/supporting-libraries/libraries.md @@ -11,7 +11,7 @@ Several useful Ethereum consensus libraries are developed as part of the [Lodest - [`config`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/config) - Ethereum consensus run-time network configuration - [`api`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/api) - Ethereum consensus REST API client - [`flare`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/flare) - Beacon chain multi-purpose and debugging tool -- [`light-client`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) - Ethereum consensus light client +- [`light-client`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/light-client) - Ethereum light client - [`prover`](https://github.com/ChainSafe/lodestar/tree/unstable/packages/prover) - A set of tools allowing to verify EL client JSON-RPC calls ## Other libraries From 9f53ffc11729d470de9167a0c3b2c1186b4609a6 Mon Sep 17 00:00:00 2001 From: Nico Flaig Date: Tue, 30 Jul 2024 15:53:26 +0100 Subject: [PATCH 29/29] Lint README.md --- README.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a174721ed4d3..e03de683a9de 100644 --- a/README.md +++ b/README.md @@ -44,25 +44,25 @@ yarn build - :package: This mono-repository contains a suite of Ethereum Consensus packages. - :balance_scale: The mono-repository is released under [LGPLv3 license](./LICENSE). Note, that the packages contain their own licenses. -| Package | Version | License | Docs | Description | -| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | -| [`@chainsafe/lodestar`](./packages/cli) | [![npm](https://img.shields.io/npm/v/@chainsafe/lodestar)](https://www.npmjs.com/package/@chainsafe/lodestar) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/cli/) | :computer: Command-line tool for Lodestar | -| [`@lodestar/api`](./packages/api) | [![npm](https://img.shields.io/npm/v/@lodestar/api)](https://www.npmjs.com/package/@lodestar/api) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/api) | :clipboard: REST Client for the Ethereum Beacon API | -| [`@lodestar/beacon-node`](./packages/beacon-node) | [![npm](https://img.shields.io/npm/v/@lodestar/beacon-node)](https://www.npmjs.com/package/@lodestar/beacon-node) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/beacon-node) | :rotating_light: Beacon-chain client | -| [`@lodestar/config`](./packages/config) | [![npm](https://img.shields.io/npm/v/@lodestar/config)](https://www.npmjs.com/package/@lodestar/config) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/config) | :spiral_notepad: Eth Consensus types and params bundled together | -| [`@lodestar/db`](./packages/db) | [![npm](https://img.shields.io/npm/v/@lodestar/db)](https://www.npmjs.com/package/@lodestar/db) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/db) | :floppy_disk: Read/write persistent Eth Consensus data | -| [`@lodestar/flare`](./packages/flare) | [![npm](https://img.shields.io/npm/v/@lodestar/flare)](https://www.npmjs.com/package/@lodestar/flare) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/flare) | :boom: Command tool for triggering non-standard actions | -| [`@lodestar/fork-choice`](./packages/fork-choice) | [![npm](https://img.shields.io/npm/v/@lodestar/fork-choice)](https://www.npmjs.com/package/@lodestar/fork-choice) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/fork-choice) | :fork_and_knife: Beacon-chain fork choice | -| [`@lodestar/light-client`](./packages/light-client) | [![npm](https://img.shields.io/npm/v/@lodestar/light-client)](https://www.npmjs.com/package/@lodestar/light-client) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/light-client) | :bird: Ethereum Light client | -| [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | -| [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | +| Package | Version | License | Docs | Description | +| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------ | +| [`@chainsafe/lodestar`](./packages/cli) | [![npm](https://img.shields.io/npm/v/@chainsafe/lodestar)](https://www.npmjs.com/package/@chainsafe/lodestar) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/cli/) | :computer: Command-line tool for Lodestar | +| [`@lodestar/api`](./packages/api) | [![npm](https://img.shields.io/npm/v/@lodestar/api)](https://www.npmjs.com/package/@lodestar/api) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/api) | :clipboard: REST Client for the Ethereum Beacon API | +| [`@lodestar/beacon-node`](./packages/beacon-node) | [![npm](https://img.shields.io/npm/v/@lodestar/beacon-node)](https://www.npmjs.com/package/@lodestar/beacon-node) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/beacon-node) | :rotating_light: Beacon-chain client | +| [`@lodestar/config`](./packages/config) | [![npm](https://img.shields.io/npm/v/@lodestar/config)](https://www.npmjs.com/package/@lodestar/config) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/config) | :spiral_notepad: Eth Consensus types and params bundled together | +| [`@lodestar/db`](./packages/db) | [![npm](https://img.shields.io/npm/v/@lodestar/db)](https://www.npmjs.com/package/@lodestar/db) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/db) | :floppy_disk: Read/write persistent Eth Consensus data | +| [`@lodestar/flare`](./packages/flare) | [![npm](https://img.shields.io/npm/v/@lodestar/flare)](https://www.npmjs.com/package/@lodestar/flare) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/flare) | :boom: Command tool for triggering non-standard actions | +| [`@lodestar/fork-choice`](./packages/fork-choice) | [![npm](https://img.shields.io/npm/v/@lodestar/fork-choice)](https://www.npmjs.com/package/@lodestar/fork-choice) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/fork-choice) | :fork_and_knife: Beacon-chain fork choice | +| [`@lodestar/light-client`](./packages/light-client) | [![npm](https://img.shields.io/npm/v/@lodestar/light-client)](https://www.npmjs.com/package/@lodestar/light-client) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/light-client) | :bird: Ethereum Light client | +| [`@lodestar/logger`](./packages/logger) | [![npm](https://img.shields.io/npm/v/@lodestar/logger)](https://www.npmjs.com/package/@lodestar/logger) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/logger) | :memo: NodeJS logger for Lodestar binaries | +| [`@lodestar/params`](./packages/params) | [![npm](https://img.shields.io/npm/v/@lodestar/params)](https://www.npmjs.com/package/@lodestar/params) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/params) | :spider_web: Eth Consensus network parameters | | [`@lodestar/prover`](./packages/prover) | [![npm](https://img.shields.io/npm/v/@lodestar/prover)](https://www.npmjs.com/package/@lodestar/prover) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/prover) | :white_check_mark: Ethereum Light client verifier for execution JSON-RPC calls | -| [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: Eth Consensus Req/Resp protocol | -| [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | -| [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | -| [`@lodestar/types`](./packages/types) | [![npm](https://img.shields.io/npm/v/@lodestar/types)](https://www.npmjs.com/package/@lodestar/types) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/types) | :spiral_notepad: Eth Consensus TypeScript and SSZ types | -| [`@lodestar/utils`](./packages/utils) | [![npm](https://img.shields.io/npm/v/@lodestar/utils)](https://www.npmjs.com/package/@lodestar/utils) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/utils) | :toolbox: Miscellaneous utility functions used across Lodestar | -| [`@lodestar/validator`](./packages/validator) | [![npm](https://img.shields.io/npm/v/@lodestar/validator)](https://www.npmjs.com/package/@lodestar/validator) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/validator) | :bank: Validator client | +| [`@lodestar/reqresp`](./packages/reqresp) | [![npm](https://img.shields.io/npm/v/@lodestar/reqresp)](https://www.npmjs.com/package/@lodestar/reqresp) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/reqresp) | :telephone_receiver: Eth Consensus Req/Resp protocol | +| [`@lodestar/spec-test-util`](./packages/spec-test-util) | [![npm](https://img.shields.io/npm/v/@lodestar/spec-test-util)](https://www.npmjs.com/package/@lodestar/spec-test-util) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/spec-test-util) | :test_tube: Test harness for Eth Consensus spec tests | +| [`@lodestar/state-transition`](./packages/state-transition) | [![npm](https://img.shields.io/npm/v/@lodestar/state-transition)](https://www.npmjs.com/package/@lodestar/state-transition) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/state-transition) | :mag_right: Eth Consensus beacon-state transition | +| [`@lodestar/types`](./packages/types) | [![npm](https://img.shields.io/npm/v/@lodestar/types)](https://www.npmjs.com/package/@lodestar/types) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/types) | :spiral_notepad: Eth Consensus TypeScript and SSZ types | +| [`@lodestar/utils`](./packages/utils) | [![npm](https://img.shields.io/npm/v/@lodestar/utils)](https://www.npmjs.com/package/@lodestar/utils) | [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/utils) | :toolbox: Miscellaneous utility functions used across Lodestar | +| [`@lodestar/validator`](./packages/validator) | [![npm](https://img.shields.io/npm/v/@lodestar/validator)](https://www.npmjs.com/package/@lodestar/validator) | [![License: LGPL v3](https://img.shields.io/badge/License-LGPL%20v3-blue.svg)](https://www.gnu.org/licenses/lgpl-3.0) | [![documentation](https://img.shields.io/badge/readme-blue)](./packages/validator) | :bank: Validator client | ## Contributors