From 1a3f42f1af609aa0c66fc556b201c6c58cdb4f0a Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Fri, 7 Jun 2024 08:11:27 +0100 Subject: [PATCH 01/17] docs(update):issue 1606 Signed-off-by: m4sterbunny --- .../how-to/configure/consensus/clique.md | 2 +- .../how-to/configure/consensus/ibft.md | 2 +- .../how-to/configure/consensus/qbft.md | 2 +- docs/public-networks/concepts/node-clients.md | 54 ++++++++++++ .../concepts/proof-of-stake/index.md | 12 +-- docs/public-networks/concepts/the-merge.md | 85 ------------------- .../get-started/connect/mainnet.md | 4 +- .../get-started/connect/sync-node.md | 2 +- .../get-started/connect/testnet.md | 2 +- .../get-started/migrate-to-besu.md | 4 +- .../get-started/system-requirements.md | 2 +- docs/public-networks/how-to/use-engine-api.md | 2 +- docs/public-networks/index.md | 2 +- docs/public-networks/reference/cli/options.md | 2 +- .../reference/engine-api/index.md | 2 +- .../tutorials/besu-teku-mainnet.md | 2 +- .../tutorials/besu-teku-testnet.md | 2 +- docusaurus.config.js | 4 + 18 files changed, 80 insertions(+), 107 deletions(-) create mode 100644 docs/public-networks/concepts/node-clients.md delete mode 100644 docs/public-networks/concepts/the-merge.md diff --git a/docs/private-networks/how-to/configure/consensus/clique.md b/docs/private-networks/how-to/configure/consensus/clique.md index c5491680261..cc9ab899393 100644 --- a/docs/private-networks/how-to/configure/consensus/clique.md +++ b/docs/private-networks/how-to/configure/consensus/clique.md @@ -104,7 +104,7 @@ The `extraData` property consists of: ### Post-Merge configuration -After [The Merge](../../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. +After [The Merge](https://ethereum.org/en/upgrades/merge/), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | |------------------|----------------------------------------------------------------------|----------------------------| diff --git a/docs/private-networks/how-to/configure/consensus/ibft.md b/docs/private-networks/how-to/configure/consensus/ibft.md index 792a76bcee0..f771654f208 100644 --- a/docs/private-networks/how-to/configure/consensus/ibft.md +++ b/docs/private-networks/how-to/configure/consensus/ibft.md @@ -172,7 +172,7 @@ Optional configuration options in the genesis file are: ### Post-Merge configuration -After [The Merge](../../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. +After [The Merge](https://ethereum.org/en/upgrades/merge/), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | |------------------|----------------------------------------------------------------------|----------------------------| diff --git a/docs/private-networks/how-to/configure/consensus/qbft.md b/docs/private-networks/how-to/configure/consensus/qbft.md index fae42348628..71c8957b58e 100644 --- a/docs/private-networks/how-to/configure/consensus/qbft.md +++ b/docs/private-networks/how-to/configure/consensus/qbft.md @@ -287,7 +287,7 @@ Optional configuration options in the genesis file are: ### Post-Merge configuration -After [The Merge](../../../../public-networks/concepts/the-merge.md), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. +After [The Merge](https://ethereum.org/en/upgrades/merge/), the following block fields are modified or deprecated. Their fields **must** contain only the constant values from the following chart. | Field | Constant value | Comment | |------------------|----------------------------------------------------------------------|----------------------------| diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md new file mode 100644 index 00000000000..7b443906992 --- /dev/null +++ b/docs/public-networks/concepts/node-clients.md @@ -0,0 +1,54 @@ +--- +title: Node clients +sidebar_position: 1 +description: Learn about execution and consensus clients. +tags: + - public networks +--- + +# Node clients + +Ethereum's Proof of Stake (PoS) consensus layer leverages two separate P2P networks supporting seperate clients. Execution clients gossip transactions over their network, enabling them to manage their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus and chain growth. + +:::info +As as result of [the 2022 Merge](https://ethereum.org/en/upgrades/merge/), Ethereum Mainnet transitioned from Proof of Work (PoW) to [PoS](proof-of-stake/index.md) consensus. +::: + +## Execution and consensus clients + +Under PoS, a full Ethereum Mainnet node is a combination of an execution client (previously called an [Eth1 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and a consensus client (previously called an [Eth2 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)). A [validator node](#validator-nodes) also runs the validator client. + +Execution and consensus clients communicate with each other using the [Engine API](../how-to/use-engine-api.md). + +![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients.png) + +### Execution clients + +Execution clients, such as Besu, manage the execution layer, including executing transactions and updating the world state. Execution clients serve [JSON-RPC API](../reference/engine-api/index.md) requests and communicate with each other P2P. + +Besu is an execution client that you can run with: + +- [Any consensus client on mainnet](../get-started/connect/mainnet.md). +- [Any consensus client on a testnet](../get-started/connect/testnet.md). +- [Teku on mainnet](../tutorials/besu-teku-mainnet.md). +- [Teku on a testnet](../tutorials/besu-teku-testnet.md). + +### Consensus clients + +The consensus client (also known as the Beacon Node, CL client or, formerly, the Eth2 client) implements the PoS consensus algorithm, which enables the network to achieve agreement based on validated data from the execution client. Consensus clients serve [REST API](https://docs.teku.consensys.net/reference/rest) requests and +communicate with each other P2P. + +Consensus clients, such as [Teku](https://docs.teku.consensys.net/en/latest/) contain beacon node implementations. The beacon node is the primary link to the [Beacon Chain] (i.e. the consensus layer). A consensus client can run without the (bundled) validator to keep up with the head of the chain, allowing the node to stay synced. + +#### Validator nodes + +Node operators can operate a validator node by adding a validator to their consensus clients and depositing 32 ETH in the deposit contract. The validator client handles attestations and block proposal — i.e. performs [validator duties](proof-of-stake/index.md) on the consensus layer. The validator client may either be run [in the same process](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process) as the +beacon node or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately). + +Validators earn [rewards](https://www.blocknative.com/ethereum-staking-calculator) for performing [validator duties](proof-of-stake/index.md), and [fee recipients](https://docs.teku.consensys.net/reference/cli#validators-proposer-default-fee-recipient) also earn rewards for the inclusion of execution layer transactions. + + + +[Beacon Chain]: https://ethereum.org/en/upgrades/beacon-chain/ +[Teku]: https://docs.teku.consensys.net/en/stable/ +[Run a node]: https://ethereum.org/en/developers/docs/nodes-and-clients/run-a-node/ diff --git a/docs/public-networks/concepts/proof-of-stake/index.md b/docs/public-networks/concepts/proof-of-stake/index.md index 8fad0be6237..d87694cfdc4 100644 --- a/docs/public-networks/concepts/proof-of-stake/index.md +++ b/docs/public-networks/concepts/proof-of-stake/index.md @@ -6,20 +6,20 @@ tags: # Proof of stake consensus -[The Merge](../the-merge.md) transitioned Ethereum Mainnet to [proof of stake +[The Merge](https://ethereum.org/en/upgrades/merge/) transitioned Ethereum Mainnet to [Proof of Stake (PoS)](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/) consensus. -In Ethereum's PoS, you must run a [full node](../the-merge.md#execution-and-consensus-clients) and +Under Ethereum's PoS, you must run a [full node](../node-clients.md#execution-and-consensus-clients) and [stake 32 ETH](https://ethereum.org/en/staking/) to become a validator. :::note -You must run a beacon node and an execution client to operate a full node on Mainnet. +To operate a full node on Mainnet, you must run a beacon node, i.e. a consensus client and an execution client. To become a validator, you must also run a validator client (either [in the same process as the beacon node](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process) or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately)). ::: -PoS is preferred over proof of work and proof of authority as a consensus mechanism because it is +PoS is preferred over Proof of Work and Proof of Authority as a consensus mechanism because it is more secure, requires less energy, and lowers the barrier to entry. The PoS mechanism randomly chooses validators to propose or validate blocks on the [Beacon @@ -34,7 +34,7 @@ Validators also receive transaction fees for included blocks. Each consensus block contains an execution payload, which contains a list of transactions and other data required to execute and validate the payload. -When a node validates a consensus block, its [consensus client](../the-merge.md#consensus-clients) processes the block and sends the execution payload to the [execution client](../the-merge.md#execution-clients), which: +When a node validates a consensus block, its [consensus client](../node-clients.md#consensus-clients) processes the block and sends the execution payload to the [execution client](../node-clients.md#execution-clients), which: 1. Assembles a block on the execution layer. 2. Verifies pre-conditions. @@ -44,4 +44,4 @@ When a node validates a consensus block, its [consensus client](../the-merge.md# If the block is valid, the execution client includes it in the execution chain and stores the new state in execution state storage. -If a consensus block receives attestations backed by enough staked ETH, the block is included in the Beacon Chain. +If a consensus block receives attestations backed by enough staked ETH, the block is included in the Beacon Chain. In the case of competing chains, the chain with the highest number of validator votes is selected. diff --git a/docs/public-networks/concepts/the-merge.md b/docs/public-networks/concepts/the-merge.md deleted file mode 100644 index a84e7f428ae..00000000000 --- a/docs/public-networks/concepts/the-merge.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -title: The Merge -sidebar_position: 1 -description: Learn about The Merge, and execution and consensus clients. -tags: - - public networks ---- - -# The Merge - -:::info - -The Merge was executed on **September 15, 2022**. - -::: - -[The Merge](https://ethereum.org/en/upgrades/merge/) was an Ethereum upgrade that merged the -[Beacon Chain] into Ethereum Mainnet, turning Mainnet into a combination of an [execution layer and -consensus layer](#execution-and-consensus-clients). -The Merge transitioned Mainnet from proof of work to [proof of stake consensus](proof-of-stake/index.md). - -You can run Besu as an execution client with: - -- [Any consensus client on Mainnet](../get-started/connect/mainnet.md). -- [Any consensus client on a testnet](../get-started/connect/testnet.md). -- [Teku on Mainnet](../tutorials/besu-teku-mainnet.md). -- [Teku on a testnet](../tutorials/besu-teku-testnet.md). - -## Execution and consensus clients - -After The Merge, a full Ethereum Mainnet node is a combination of an execution client (previously -called an [Ethereum 1.0](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and -a consensus client (previously called an [Ethereum -2.0](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client). - -Execution and consensus clients communicate with each other using the [Engine API](../how-to/use-engine-api.md). - -![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients.png) - -### Execution clients - -Execution clients, such as Besu, manage the execution layer, including executing transactions and -updating the world state. -Execution clients serve [JSON-RPC API](../reference/engine-api/index.md) requests and communicate -with each other in a peer-to-peer network. - -### Consensus clients - -Consensus clients, such as [Teku], contain beacon node and validator client implementations. -The beacon node is the primary link to the [Beacon Chain] (consensus layer). -The validator client performs [validator duties](proof-of-stake/index.md) on the consensus layer. -Consensus clients serve [REST API](https://docs.teku.consensys.net/reference/rest) requests and -communicate with each other in a peer-to-peer network. - -## What happened during The Merge - -Before The Merge, the execution and consensus clients' configurations were updated to listen for a -certain total terminal difficulty (TTD) to be reached. - -:::info -The TTD is a specific value for the total difficulty, which is the sum of the proof-of-work mining -difficulty for all blocks up to some point in the blockchain. -::: - -The consensus layer enabled the Merge configuration (Bellatrix) before reaching the TTD. -Once the execution layer blocks reached the TTD, the Beacon Chain merged into Ethereum Mainnet, and -Ethereum transitioned to a proof of stake network. - -:::tip -After The Merge, a Mainnet node operator must run both an execution client and a beacon node at the -same time. -To become a validator, you must also run a validator client (either [in the same process as the -beacon node](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process) -or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately). -::: - -After The Merge, validators earn [rewards](https://www.blocknative.com/ethereum-staking-calculator) -for performing [validator duties](proof-of-stake/index.md), and [fee -recipients](https://docs.teku.consensys.net/reference/cli#validators-proposer-default-fee-recipient) -also earn rewards for the inclusion of execution layer transactions. - - - -[Beacon Chain]: https://ethereum.org/en/upgrades/beacon-chain/ -[Teku]: https://docs.teku.consensys.net/en/stable/ diff --git a/docs/public-networks/get-started/connect/mainnet.md b/docs/public-networks/get-started/connect/mainnet.md index 83c91c1ec30..445aa2ae5ec 100644 --- a/docs/public-networks/get-started/connect/mainnet.md +++ b/docs/public-networks/get-started/connect/mainnet.md @@ -13,11 +13,11 @@ import TabItem from '@theme/TabItem'; :::info -[The Merge](../../concepts/the-merge.md) was executed on **September 15, 2022**. Ethereum is now a [proof of stake](../../concepts/proof-of-stake/index.md) network, and a full Ethereum node requires both [an execution client and a consensus client](../../concepts/the-merge.md#execution-and-consensus-clients). +As a [Proof of Stake network]((../../concepts/proof-of-stake/index.md), running a full Ethereum node requires both [an execution client and a consensus client](../../concepts/node-clients.md#execution-and-consensus-clients). ::: -Run Besu as an [execution client](../../concepts/the-merge.md#execution-clients) with any consensus client on Ethereum Mainnet. +Run Besu as an [execution client](../../concepts/node-clients.md#execution-clients) with any [consensus client](../../concepts/node-clients.md#consensus-clients) on Ethereum Mainnet. If you're using [Teku] as a consensus client, you can follow the [Besu and Teku Mainnet tutorial](../../tutorials/besu-teku-mainnet.md). diff --git a/docs/public-networks/get-started/connect/sync-node.md b/docs/public-networks/get-started/connect/sync-node.md index 41922a43ba7..0e0ceab8a97 100644 --- a/docs/public-networks/get-started/connect/sync-node.md +++ b/docs/public-networks/get-started/connect/sync-node.md @@ -12,7 +12,7 @@ Besu supports two node types, commonly referred to as [full nodes](#run-a-full-n [archive nodes](#run-an-archive-node). A full node consists of an -[execution and consensus client](../../concepts/the-merge.md#execution-and-consensus-clients), and +[execution and consensus client](../../concepts/node-clients.md#execution-and-consensus-clients), and stores a local copy of the blockchain. With a full node, you can check current balances, sign and send transactions, and look at current dapp data. diff --git a/docs/public-networks/get-started/connect/testnet.md b/docs/public-networks/get-started/connect/testnet.md index ced7ede466a..1237ef9c39e 100644 --- a/docs/public-networks/get-started/connect/testnet.md +++ b/docs/public-networks/get-started/connect/testnet.md @@ -11,7 +11,7 @@ import TabItem from '@theme/TabItem'; # Connect to a testnet -Run Besu as an [execution client](../../concepts/the-merge.md#execution-clients) with any consensus client on the [Holesky](https://github.com/eth-clients/holesky) and [Sepolia](https://github.com/eth-clients/sepolia) testnets. +Run Besu as an [execution client](../../concepts/node-clients.md#execution-clients) with any consensus client on the [Holesky](https://github.com/eth-clients/holesky) and [Sepolia](https://github.com/eth-clients/sepolia) testnets. If you're using [Teku](https://docs.teku.consensys.net/en/latest/) as a consensus client, you can follow the [Besu and Teku testnet tutorial](../../tutorials/besu-teku-testnet.md). diff --git a/docs/public-networks/get-started/migrate-to-besu.md b/docs/public-networks/get-started/migrate-to-besu.md index 2693411ced0..e4b721730c5 100644 --- a/docs/public-networks/get-started/migrate-to-besu.md +++ b/docs/public-networks/get-started/migrate-to-besu.md @@ -6,9 +6,9 @@ tags: # Migrate to Besu -Migrate from a different Ethereum [execution client](../concepts/the-merge.md#execution-clients) to Besu to contribute to [client diversity](https://clientdiversity.org/). +Migrate from a different Ethereum [execution client](../concepts/node-clients.md#execution-clients) to Besu to contribute to [client diversity](https://clientdiversity.org/). -To migrate from a different client, [configure Besu as an execution client](connect/mainnet.md#2-start-besu) and connect your [consensus client](../concepts/the-merge.md#consensus-clients) to Besu instead of your original execution client. +To migrate from a different client, [configure Besu as an execution client](connect/mainnet.md#2-start-besu) and connect your [consensus client](../concepts/node-clients.md#consensus-clients) to Besu instead of your original execution client. To minimize downtime while [Besu syncs](connect/sync-node.md) and avoid downtime penalties, you can sync Besu with a new consensus layer instance. Once Besu has fully synced you can connect it to your existing consensus client. diff --git a/docs/public-networks/get-started/system-requirements.md b/docs/public-networks/get-started/system-requirements.md index 29f72f16398..d4a06c98296 100644 --- a/docs/public-networks/get-started/system-requirements.md +++ b/docs/public-networks/get-started/system-requirements.md @@ -28,7 +28,7 @@ We currently recommend two Java distributions, [OpenJDK 21](https://jdk.java.net OpenJDK is the default for many Java users and is balanced in performance and garbage collection. OpenJ9 consumes less memory and system resources, but can have worse performance on some setups. -If you have more than 32GB RAM (for Besu and your [consensus client](../concepts/the-merge.md)), use OpenJDK. +If you have more than 32GB RAM (for Besu and your [consensus client](../concepts/node-clients.md#consensus-clients)), use OpenJDK. If you have less RAM: * If you're on Linux (or Unix-based) and your CPU is x86-64 bit architecture (like Intel), use OpenJ9. diff --git a/docs/public-networks/how-to/use-engine-api.md b/docs/public-networks/how-to/use-engine-api.md index 4700e780cce..9a1cb3b05e4 100644 --- a/docs/public-networks/how-to/use-engine-api.md +++ b/docs/public-networks/how-to/use-engine-api.md @@ -11,7 +11,7 @@ import TabItem from '@theme/TabItem'; # Use the Engine API -[Consensus and execution clients](../concepts/the-merge.md#execution-and-consensus-clients) communicate with each other using the [Engine API](../reference/engine-api/index.md). These API methods are a separate subsection of the [JSON-RPC API](../how-to/use-besu-api/index.md). +[Consensus and execution clients](../concepts/node-clients.md#execution-and-consensus-clients) communicate with each other using the [Engine API](../reference/engine-api/index.md). These API methods are a separate subsection of the [JSON-RPC API](../how-to/use-besu-api/index.md). ## Configure the Engine API diff --git a/docs/public-networks/index.md b/docs/public-networks/index.md index 2ec41a97370..1e8045a210e 100644 --- a/docs/public-networks/index.md +++ b/docs/public-networks/index.md @@ -9,7 +9,7 @@ tags: # Hyperledger Besu for public networks -Besu serves as an [execution client](concepts/the-merge.md#execution-clients) on public proof-of-stake Ethereum networks such as Ethereum Mainnet, Holesky, and Sepolia. +Besu serves as an [execution client](concepts/node-clients.md#execution-clients) on public proof-of-stake Ethereum networks such as Ethereum Mainnet, Holesky, and Sepolia. You can also run Besu using proof of work on [Ethereum Classic (ETC)](how-to/use-pow/mining.md). diff --git a/docs/public-networks/reference/cli/options.md b/docs/public-networks/reference/cli/options.md index bc3e6ea3e22..b3e9e651931 100644 --- a/docs/public-networks/reference/cli/options.md +++ b/docs/public-networks/reference/cli/options.md @@ -813,7 +813,7 @@ engine-jwt-secret="jwt.hex" -Shared secret used to authenticate [consensus clients](../../concepts/the-merge.md) when using the Engine JSON-RPC API (both HTTP and WebSocket). Contents of file must be at least 32 hex-encoded bytes and not begin with `0x`. May be a relative or absolute path. See an [example of how to generate this](../../get-started/connect/mainnet.md#1-generate-the-shared-secret). +Shared secret used to authenticate [consensus clients](../../concepts/node-clients.md) when using the Engine JSON-RPC API (both HTTP and WebSocket). Contents of file must be at least 32 hex-encoded bytes and not begin with `0x`. May be a relative or absolute path. See an [example of how to generate this](../../get-started/connect/mainnet.md#1-generate-the-shared-secret). ### `engine-rpc-enabled` diff --git a/docs/public-networks/reference/engine-api/index.md b/docs/public-networks/reference/engine-api/index.md index 65b72c4140b..7ff03ab380a 100644 --- a/docs/public-networks/reference/engine-api/index.md +++ b/docs/public-networks/reference/engine-api/index.md @@ -11,7 +11,7 @@ import TabItem from '@theme/TabItem'; # Engine API methods -[Consensus and execution clients](../../concepts/the-merge.md#execution-and-consensus-clients) communicate with each other using the Engine API. When running Besu as an execution client, [use these API calls](../../how-to/use-engine-api.md) to communicate with a consensus client. +[Consensus and execution clients](../../concepts/node-clients.md#execution-and-consensus-clients) communicate with each other using the Engine API. When running Besu as an execution client, [use these API calls](../../how-to/use-engine-api.md) to communicate with a consensus client. :::info diff --git a/docs/public-networks/tutorials/besu-teku-mainnet.md b/docs/public-networks/tutorials/besu-teku-mainnet.md index e1c0f670ca4..bc05cb5f48c 100644 --- a/docs/public-networks/tutorials/besu-teku-mainnet.md +++ b/docs/public-networks/tutorials/besu-teku-mainnet.md @@ -11,7 +11,7 @@ import TabItem from '@theme/TabItem'; # Run Besu and Teku on Mainnet -Run Besu as an [execution client](../concepts/the-merge.md#execution-clients) and [Teku](https://docs.teku.consensys.net/) as a [consensus client](../concepts/the-merge.md#consensus-clients) on Ethereum Mainnet. +Run Besu as an [execution client](../concepts/node-clients.md#execution-clients) and [Teku](https://docs.teku.consensys.net/) as a [consensus client](../concepts/node-clients.md#consensus-clients) on Ethereum Mainnet. ## 1. Install Besu and Teku diff --git a/docs/public-networks/tutorials/besu-teku-testnet.md b/docs/public-networks/tutorials/besu-teku-testnet.md index 63e858dfb4c..eea6ea59884 100644 --- a/docs/public-networks/tutorials/besu-teku-testnet.md +++ b/docs/public-networks/tutorials/besu-teku-testnet.md @@ -11,7 +11,7 @@ import TabItem from '@theme/TabItem'; # Run Besu and Teku on a testnet -Run Besu as an [execution client](../concepts/the-merge.md#execution-clients) and [Teku](https://docs.teku.consensys.net/) as a [consensus client](../concepts/the-merge.md#consensus-clients) on the [Holesky](https://github.com/eth-clients/holesky) and [Sepolia](https://github.com/eth-clients/sepolia) Ethereum testnets. +Run Besu as an [execution client](../concepts/node-clients.md#execution-clients) and [Teku](https://docs.teku.consensys.net/) as a [consensus client](../concepts/node-clients.md#consensus-clients) on the [Holesky](https://github.com/eth-clients/holesky) and [Sepolia](https://github.com/eth-clients/sepolia) Ethereum testnets. :::note diff --git a/docusaurus.config.js b/docusaurus.config.js index 76a6044fd92..f193af27d43 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -298,6 +298,10 @@ const config = { from: ["/en/latest", "/en/development", "/latest", "/development"], to: "/development/public-networks", }, + { + from: "/public-networks//concepts/the-merge", + to: "/public-networks//concepts/node-clients", + }, { from: "/public-networks/how-to/configuration-file", to: "/public-networks/how-to/use-configuration-file", From 84d571d6a592b992acf56f5e725a9019803d815b Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Fri, 7 Jun 2024 09:14:52 +0100 Subject: [PATCH 02/17] proofs pages affected by 1606 Signed-off-by: m4sterbunny --- docs/public-networks/concepts/node-clients.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md index 7b443906992..9158e1ce45b 100644 --- a/docs/public-networks/concepts/node-clients.md +++ b/docs/public-networks/concepts/node-clients.md @@ -8,7 +8,7 @@ tags: # Node clients -Ethereum's Proof of Stake (PoS) consensus layer leverages two separate P2P networks supporting seperate clients. Execution clients gossip transactions over their network, enabling them to manage their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus and chain growth. +Ethereum's Proof of Stake (PoS) consensus layer leverages two separate P2P networks supporting separate clients. Execution clients gossip transactions over their network, enabling them to manage their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus and chain growth. :::info As as result of [the 2022 Merge](https://ethereum.org/en/upgrades/merge/), Ethereum Mainnet transitioned from Proof of Work (PoW) to [PoS](proof-of-stake/index.md) consensus. @@ -28,14 +28,14 @@ Execution clients, such as Besu, manage the execution layer, including executing Besu is an execution client that you can run with: -- [Any consensus client on mainnet](../get-started/connect/mainnet.md). +- [Any consensus client on Mainnet](../get-started/connect/mainnet.md). - [Any consensus client on a testnet](../get-started/connect/testnet.md). - [Teku on mainnet](../tutorials/besu-teku-mainnet.md). - [Teku on a testnet](../tutorials/besu-teku-testnet.md). ### Consensus clients -The consensus client (also known as the Beacon Node, CL client or, formerly, the Eth2 client) implements the PoS consensus algorithm, which enables the network to achieve agreement based on validated data from the execution client. Consensus clients serve [REST API](https://docs.teku.consensys.net/reference/rest) requests and +The consensus client (also known as the beacon node, CL client or, formerly, the Eth2 client) implements the PoS consensus algorithm, which enables the network to achieve agreement based on validated data from the execution client. Consensus clients serve [REST API](https://docs.teku.consensys.net/reference/rest) requests and communicate with each other P2P. Consensus clients, such as [Teku](https://docs.teku.consensys.net/en/latest/) contain beacon node implementations. The beacon node is the primary link to the [Beacon Chain] (i.e. the consensus layer). A consensus client can run without the (bundled) validator to keep up with the head of the chain, allowing the node to stay synced. From 761d5a966bacad19c58bd2cf0d52beeb05862cda Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Fri, 7 Jun 2024 09:22:48 +0100 Subject: [PATCH 03/17] proofs pages affected by 1606 Signed-off-by: m4sterbunny --- .../get-started/connect/sync-node.md | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/docs/public-networks/get-started/connect/sync-node.md b/docs/public-networks/get-started/connect/sync-node.md index 0e0ceab8a97..b448c739cc8 100644 --- a/docs/public-networks/get-started/connect/sync-node.md +++ b/docs/public-networks/get-started/connect/sync-node.md @@ -11,34 +11,30 @@ tags: Besu supports two node types, commonly referred to as [full nodes](#run-a-full-node) and [archive nodes](#run-an-archive-node). -A full node consists of an -[execution and consensus client](../../concepts/node-clients.md#execution-and-consensus-clients), and -stores a local copy of the blockchain. +A full node consists of an [execution and consensus client](../../concepts/node-clients.md#execution-and-consensus-clients), and stores a local copy of the blockchain. With a full node, you can check current balances, sign and send transactions, and look at current dapp data. -Full nodes can guarantee the latest state of the blockchain (and some older states). -However, they can't serve the network with all data requests (for example, the balance of an account -at an old block). + +Full nodes can guarantee the latest state of the blockchain (and some older states). However, they can't serve the network with all data requests (for example, the balance of an account at an old block). An archive node is a node that also stores the intermediary state of every account and contract -for every block since the genesis block. -Archive nodes can do everything full nodes do, and they can also access historical state data. -However, archive nodes require more disk space than full nodes. +for every block since the genesis block. + +Archive nodes can do everything full nodes do, and they can also access historical state data. This means that archive nodes require more disk space than full nodes. -Besu must connect with other peers to sync with the network. -If your node is having trouble peering, try [troubleshooting peering](../../how-to/troubleshoot/peering.md). +Besu must connect with other peers to sync with the network. If your node is having trouble peering, try [troubleshooting peering](../../how-to/troubleshoot/peering.md). ## Sync times To sync with a public network, Besu runs two processes in parallel: the world state sync and the blockchain download. + While the world state syncs, Besu downloads and imports the blockchain in the background. The blockchain download time depends on CPU, the network, Besu's peers, and disk speed. -The blockchain download generally takes longer than the world state sync. -Besu must catch up to the current chain head and sync the world state to participate on Mainnet. +The blockchain download generally takes longer than the world state sync. Besu must catch up to the current chain head and sync the world state to participate on Mainnet. + +The following table shows the average world state sync time, and blockchain download time, for each sync mode on Mainnet. -The following table shows the average world state sync time, and blockchain download time, for each -sync mode on Mainnet. All times are hardware dependent; this table is based on running AWS instances m6gd.2xlarge. Each sync mode also has its own world state database size. @@ -60,6 +56,7 @@ Each sync mode also has its own world state database size. You can store the world state using [Forest of Tries](../../concepts/data-storage-formats.md#forest-of-tries) or [Bonsai Tries](../../concepts/data-storage-formats.md#bonsai-tries). + If you're [running a full node](#run-a-full-node), we recommend using Bonsai Tries for the lowest storage requirements. From 92084e88d6b933113f7ddc88480eb0f4aaae3991 Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Fri, 7 Jun 2024 10:01:41 +0100 Subject: [PATCH 04/17] proofs pages affected by 1606 Signed-off-by: m4sterbunny --- docs/public-networks/get-started/connect/mainnet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/public-networks/get-started/connect/mainnet.md b/docs/public-networks/get-started/connect/mainnet.md index 445aa2ae5ec..b16d074b809 100644 --- a/docs/public-networks/get-started/connect/mainnet.md +++ b/docs/public-networks/get-started/connect/mainnet.md @@ -13,7 +13,7 @@ import TabItem from '@theme/TabItem'; :::info -As a [Proof of Stake network]((../../concepts/proof-of-stake/index.md), running a full Ethereum node requires both [an execution client and a consensus client](../../concepts/node-clients.md#execution-and-consensus-clients). +As a [Proof of Stake network](../../concepts/proof-of-stake/index.md), running a full Ethereum node requires both [an execution client and a consensus client](../../concepts/node-clients.md#execution-and-consensus-clients). ::: From 876ff6952f794828f1535651a061aa7db1a8924d Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Fri, 7 Jun 2024 10:40:11 +0100 Subject: [PATCH 05/17] proofs pages affected by 1606 Signed-off-by: m4sterbunny --- docs/public-networks/reference/cli/options.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/public-networks/reference/cli/options.md b/docs/public-networks/reference/cli/options.md index b3e9e651931..0b37c515cef 100644 --- a/docs/public-networks/reference/cli/options.md +++ b/docs/public-networks/reference/cli/options.md @@ -813,7 +813,7 @@ engine-jwt-secret="jwt.hex" -Shared secret used to authenticate [consensus clients](../../concepts/node-clients.md) when using the Engine JSON-RPC API (both HTTP and WebSocket). Contents of file must be at least 32 hex-encoded bytes and not begin with `0x`. May be a relative or absolute path. See an [example of how to generate this](../../get-started/connect/mainnet.md#1-generate-the-shared-secret). +Shared secret used to authenticate [consensus clients](../../concepts/node-clients.md#consensus-clients) when using the Engine JSON-RPC API (both HTTP and WebSocket). Contents of file must be at least 32 hex-encoded bytes and not begin with `0x`. May be a relative or absolute path. See an [example of how to generate this](../../get-started/connect/mainnet.md#1-generate-the-shared-secret). ### `engine-rpc-enabled` From 4c532a0b08d9d63121dee675e251f87beb7f653a Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Fri, 7 Jun 2024 14:15:52 +0100 Subject: [PATCH 06/17] fixes flawed redirect for 1606 Signed-off-by: m4sterbunny --- docusaurus.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index f193af27d43..30d68a3da71 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -299,8 +299,8 @@ const config = { to: "/development/public-networks", }, { - from: "/public-networks//concepts/the-merge", - to: "/public-networks//concepts/node-clients", + from: "/public-networks/concepts/the-merge", + to: "/public-networks/concepts/node-clients", }, { from: "/public-networks/how-to/configuration-file", From bcdbdbdb7439aa69fba4b00846f771d594f8e6aa Mon Sep 17 00:00:00 2001 From: Joan E <153745173+joaniefromtheblock@users.noreply.github.com> Date: Fri, 7 Jun 2024 07:39:04 -0700 Subject: [PATCH 07/17] test redirect Signed-off-by: Joan E <153745173+joaniefromtheblock@users.noreply.github.com> --- docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 30d68a3da71..3297f596f2a 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -300,7 +300,7 @@ const config = { }, { from: "/public-networks/concepts/the-merge", - to: "/public-networks/concepts/node-clients", + to: "/public-networks/concepts", }, { from: "/public-networks/how-to/configuration-file", From bd319096fbe278c1e4b642699bd5e593655c5830 Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Fri, 7 Jun 2024 17:46:19 +0100 Subject: [PATCH 08/17] temp fix to allow redirect verification Signed-off-by: m4sterbunny --- docusaurus.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 3297f596f2a..3c022bc501f 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -299,8 +299,8 @@ const config = { to: "/development/public-networks", }, { - from: "/public-networks/concepts/the-merge", - to: "/public-networks/concepts", + from: "/development/public-networks/concepts/the-merge", + to: "/development/public-networks/concepts/node-clients", }, { from: "/public-networks/how-to/configuration-file", From 1f8c380d2bf0c836d75b3f608cf9e84d7ad808eb Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Mon, 10 Jun 2024 09:52:39 +0100 Subject: [PATCH 09/17] better (not total) character limit adherence Signed-off-by: m4sterbunny --- docs/public-networks/concepts/node-clients.md | 46 ++++++++++++++----- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md index 9158e1ce45b..8995de6fb9b 100644 --- a/docs/public-networks/concepts/node-clients.md +++ b/docs/public-networks/concepts/node-clients.md @@ -8,23 +8,34 @@ tags: # Node clients -Ethereum's Proof of Stake (PoS) consensus layer leverages two separate P2P networks supporting separate clients. Execution clients gossip transactions over their network, enabling them to manage their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus and chain growth. +Ethereum's Proof of Stake (PoS) consensus layer leverages two separate P2P networks supporting +separate clients. Execution clients gossip transactions over their network, enabling them to manage +their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus +and chain growth. :::info -As as result of [the 2022 Merge](https://ethereum.org/en/upgrades/merge/), Ethereum Mainnet transitioned from Proof of Work (PoW) to [PoS](proof-of-stake/index.md) consensus. +As as result of [the 2022 Merge](https://ethereum.org/en/upgrades/merge/), Ethereum Mainnet +transitioned from Proof of Work (PoW) to [PoS](proof-of-stake/index.md) consensus. ::: ## Execution and consensus clients -Under PoS, a full Ethereum Mainnet node is a combination of an execution client (previously called an [Eth1 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and a consensus client (previously called an [Eth2 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)). A [validator node](#validator-nodes) also runs the validator client. +Under PoS, a full Ethereum Mainnet node is a combination of an execution client (previously called +an [Eth1 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and a +consensus client (previously called an +[Eth2 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)). A +[validator node](#validator-nodes) also runs the validator client. -Execution and consensus clients communicate with each other using the [Engine API](../how-to/use-engine-api.md). +Execution and consensus clients communicate with each other using the +[Engine API](../how-to/use-engine-api.md). ![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients.png) ### Execution clients -Execution clients, such as Besu, manage the execution layer, including executing transactions and updating the world state. Execution clients serve [JSON-RPC API](../reference/engine-api/index.md) requests and communicate with each other P2P. +Execution clients, such as Besu, manage the execution layer, including executing transactions and +updating the world state. Execution clients serve [JSON-RPC API](../reference/engine-api/index.md) +requests and communicate with each other P2P. Besu is an execution client that you can run with: @@ -35,17 +46,30 @@ Besu is an execution client that you can run with: ### Consensus clients -The consensus client (also known as the beacon node, CL client or, formerly, the Eth2 client) implements the PoS consensus algorithm, which enables the network to achieve agreement based on validated data from the execution client. Consensus clients serve [REST API](https://docs.teku.consensys.net/reference/rest) requests and +The consensus client (also known as the beacon node, CL client or, formerly, the Eth2 client) +implements the PoS consensus algorithm, which enables the network to achieve agreement based on +validated data from the execution client. Consensus clients serve +[REST API](https://docs.teku.consensys.net/reference/rest) requests and communicate with each other P2P. -Consensus clients, such as [Teku](https://docs.teku.consensys.net/en/latest/) contain beacon node implementations. The beacon node is the primary link to the [Beacon Chain] (i.e. the consensus layer). A consensus client can run without the (bundled) validator to keep up with the head of the chain, allowing the node to stay synced. +Consensus clients, such as [Teku](https://docs.teku.consensys.net/en/latest/) contain beacon node +implementations. The beacon node is the primary link to the [Beacon Chain] (i.e. the consensus layer). +A consensus client can run without the (bundled) validator to keep up with the head of the chain, +allowing the node to stay synced. #### Validator nodes -Node operators can operate a validator node by adding a validator to their consensus clients and depositing 32 ETH in the deposit contract. The validator client handles attestations and block proposal — i.e. performs [validator duties](proof-of-stake/index.md) on the consensus layer. The validator client may either be run [in the same process](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process) as the -beacon node or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately). - -Validators earn [rewards](https://www.blocknative.com/ethereum-staking-calculator) for performing [validator duties](proof-of-stake/index.md), and [fee recipients](https://docs.teku.consensys.net/reference/cli#validators-proposer-default-fee-recipient) also earn rewards for the inclusion of execution layer transactions. +Node operators can operate a validator node by adding a validator to their consensus clients and +depositing 32 ETH in the deposit contract. The validator client handles attestations and block +proposal — i.e. performs [validator duties](proof-of-stake/index.md) on the consensus layer. +The validator client may either be run +[in the same process](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process) +as the beacon node or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately). + +Validators earn [rewards](https://www.blocknative.com/ethereum-staking-calculator) for performing + [validator duties](proof-of-stake/index.md), and + [fee recipients](https://docs.teku.consensys.net/reference/cli#validators-proposer-default-fee-recipient) + also earn rewards for the inclusion of execution layer transactions. From e9a2c7faec0ae9e95b10e295f7153440367235a4 Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Mon, 10 Jun 2024 09:58:13 +0100 Subject: [PATCH 10/17] better (not total) character limit adherence Signed-off-by: m4sterbunny --- .../get-started/connect/sync-node.md | 107 +++++++++++++----- 1 file changed, 76 insertions(+), 31 deletions(-) diff --git a/docs/public-networks/get-started/connect/sync-node.md b/docs/public-networks/get-started/connect/sync-node.md index b448c739cc8..921b12ecff1 100644 --- a/docs/public-networks/get-started/connect/sync-node.md +++ b/docs/public-networks/get-started/connect/sync-node.md @@ -11,18 +11,24 @@ tags: Besu supports two node types, commonly referred to as [full nodes](#run-a-full-node) and [archive nodes](#run-an-archive-node). -A full node consists of an [execution and consensus client](../../concepts/node-clients.md#execution-and-consensus-clients), and stores a local copy of the blockchain. +A full node consists of an +[execution and consensus client](../../concepts/node-clients.md#execution-and-consensus-clients), +and stores a local copy of the blockchain. With a full node, you can check current balances, sign and send transactions, and look at current dapp data. -Full nodes can guarantee the latest state of the blockchain (and some older states). However, they can't serve the network with all data requests (for example, the balance of an account at an old block). +Full nodes can guarantee the latest state of the blockchain (and some older states). However, they +can't serve the network with all data requests (for example, the balance of an account at an old +block). An archive node is a node that also stores the intermediary state of every account and contract for every block since the genesis block. -Archive nodes can do everything full nodes do, and they can also access historical state data. This means that archive nodes require more disk space than full nodes. +Archive nodes can do everything full nodes do, and they can also access historical state data. +This means that archive nodes require more disk space than full nodes. -Besu must connect with other peers to sync with the network. If your node is having trouble peering, try [troubleshooting peering](../../how-to/troubleshoot/peering.md). +Besu must connect with other peers to sync with the network. If your node is having trouble peering, +try [troubleshooting peering](../../how-to/troubleshoot/peering.md). ## Sync times @@ -31,9 +37,11 @@ blockchain download. While the world state syncs, Besu downloads and imports the blockchain in the background. The blockchain download time depends on CPU, the network, Besu's peers, and disk speed. -The blockchain download generally takes longer than the world state sync. Besu must catch up to the current chain head and sync the world state to participate on Mainnet. +The blockchain download generally takes longer than the world state sync. Besu must catch up to the +current chain head and sync the world state to participate on Mainnet. -The following table shows the average world state sync time, and blockchain download time, for each sync mode on Mainnet. +The following table shows the average world state sync time, and blockchain download time, for each +sync mode on Mainnet. All times are hardware dependent; this table is based on running AWS instances m6gd.2xlarge. Each sync mode also has its own world state database size. @@ -79,32 +87,44 @@ Snap sync and checkpoint sync are not supported for :::tip -We recommend using snap sync over fast sync because snap sync can be faster than fast sync by several days (for Mainnet). +We recommend using snap sync over fast sync because snap sync can be faster than fast sync by +several days (for Mainnet). We recommend using snap sync with the [Bonsai](../../concepts/data-storage-formats.md#bonsai-tries) data storage format for the fastest sync and lowest storage requirements. ::: -Enable snap sync using [`--sync-mode=SNAP`](../../reference/cli/options.md#sync-mode). You need Besu version 22.4.0 or later to use snap sync. +Enable snap sync using [`--sync-mode=SNAP`](../../reference/cli/options.md#sync-mode). You need Besu +version 22.4.0 or later to use snap sync. -Instead of downloading the [state trie](../../concepts/data-storage-formats.md) node by node, snap sync downloads as many leaves of the trie as possible, and reconstructs the trie locally. +Instead of downloading the [state trie](../../concepts/data-storage-formats.md) node by node, snap +sync downloads as many leaves of the trie as possible, and reconstructs the trie locally. -You can't switch from fast sync to snap sync. If your node is blocked in the middle of a fast sync, you can start over using snap sync instead by stopping the node, deleting the data directory, and starting over using `--sync-mode=SNAP`. +You can't switch from fast sync to snap sync. If your node is blocked in the middle of a fast sync, +you can start over using snap sync instead by stopping the node, deleting the data directory, and +starting over using `--sync-mode=SNAP`. -You can restart Besu during a snap sync in case of hardware or software problems. The sync resumes from the last valid world state and continues to download blocks starting from the last downloaded block. +You can restart Besu during a snap sync in case of hardware or software problems. The sync resumes +from the last valid world state and continues to download blocks starting from the last downloaded +block. -See [how to read the Besu metrics charts](../../how-to/monitor/understand-metrics.md) when using snap sync. +See [how to read the Besu metrics charts](../../how-to/monitor/understand-metrics.md) when using +snap sync. ### Checkpoint synchronization -Enable checkpoint sync using [`--sync-mode=CHECKPOINT`](../../reference/cli/options.md#sync-mode). You need Besu version 22.4.3 or later to use checkpoint sync. +Enable checkpoint sync using [`--sync-mode=CHECKPOINT`](../../reference/cli/options.md#sync-mode). +You need Besu version 22.4.3 or later to use checkpoint sync. -Checkpoint sync behaves like [snap sync](#snap-synchronization), but instead of syncing from the genesis block, it syncs from a specific checkpoint block configured in the [Besu genesis file](../../concepts/genesis-file.md). +Checkpoint sync behaves like [snap sync](#snap-synchronization), but instead of syncing from the +genesis block, it syncs from a specific checkpoint block configured in the [Besu genesis file](../../concepts/genesis-file.md). -Ethereum Mainnet and the Holesky testnet configurations already define default checkpoints, so you don't have to add this yourself. +Ethereum Mainnet and the Holesky testnet configurations already define default checkpoints, so you +don't have to add this yourself. -For other networks, you can configure a checkpoint in the genesis file by specifying the block hash, number, and total difficulty as in the following example. +For other networks, you can configure a checkpoint in the genesis file by specifying the block hash, +number, and total difficulty as in the following example. ```json title="Checkpoint configuration example" "checkpoint": { @@ -116,60 +136,85 @@ For other networks, you can configure a checkpoint in the genesis file by specif :::note -If using [Clique](../../../private-networks/how-to/configure/consensus/clique.md) consensus, the checkpoint must be the beginning of an epoch. +If using [Clique](../../../private-networks/how-to/configure/consensus/clique.md) consensus, the +checkpoint must be the beginning of an epoch. ::: -If you enable checkpoint sync without a checkpoint configuration in the genesis file, Besu snap syncs from the genesis block. +If you enable checkpoint sync without a checkpoint configuration in the genesis file, Besu snap +syncs from the genesis block. -You can restart Besu during a checkpoint sync in case of hardware or software problems. The sync resumes from the last valid world state and continues to download blocks starting from the last downloaded block. +You can restart Besu during a checkpoint sync in case of hardware or software problems. The sync +resumes from the last valid world state and continues to download blocks starting from the last +downloaded block. ### Fast synchronization :::caution -It might become impossible to sync Ethereum Mainnet using fast sync in the future. If you sync for the first time or ever need to re-sync, update Besu to a version that supports newer sync methods. +It might become impossible to sync Ethereum Mainnet using fast sync in the future. If you sync for +the first time or ever need to re-sync, update Besu to a version that supports newer sync methods. ::: Enable fast sync using [`--sync-mode=FAST`](../../reference/cli/options.md#sync-mode). -Fast sync downloads the block headers and transaction receipts, and verifies the chain of block headers from the genesis block. +Fast sync downloads the block headers and transaction receipts, and verifies the chain of block +headers from the genesis block. -When starting fast sync, Besu first downloads the world state for a recent block verified by its peers (referred to as a pivot block), and then begins fast sync from the genesis block. +When starting fast sync, Besu first downloads the world state for a recent block verified by its +peers (referred to as a pivot block), and then begins fast sync from the genesis block. -Fast sync is the default for named networks specified using the [`--network`](../../reference/cli/options.md#network) option, except for the `dev` development network. It's also the default if connecting to Ethereum Mainnet by not specifying the [`--network`](../../reference/cli/options.md#network) or [`--genesis-file`](../../reference/cli/options.md#genesis-file) options. +Fast sync is the default for named networks specified using the +[`--network`](../../reference/cli/options.md#network) option, except for the `dev` development +network. It's also the default if connecting to Ethereum Mainnet by not specifying the +[`--network`](../../reference/cli/options.md#network) or +[`--genesis-file`](../../reference/cli/options.md#genesis-file) options. -Using fast sync with [private transactions](../../../private-networks/concepts/privacy/index.md) isn't supported. +Using fast sync with [private transactions](../../../private-networks/concepts/privacy/index.md) +isn't supported. -You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world_state_*` [metrics](../../how-to/monitor/metrics.md#metrics-list) to monitor fast sync. +You can observe the `besu_synchronizer_fast_sync_*` and `besu_synchronizer_world_state_*` +[metrics](../../how-to/monitor/metrics.md#metrics-list) to monitor fast sync. :::note -When fast syncing, block numbers increase until close to the head block, then the process pauses while the world state download completes. This may take a significant amount of time depending on world state size, during which the current head block doesn't increase. For example, Mainnet may take several days or more to fast sync. Fast sync time may increase because Besu picks new pivot blocks, or because peers prune the world state before it completes downloading. +When fast syncing, block numbers increase until close to the head block, then the process pauses +while the world state download completes. This may take a significant amount of time depending on +world state size, during which the current head block doesn't increase. For example, Mainnet may +take several days or more to fast sync. Fast sync time may increase because Besu picks new pivot +blocks, or because peers prune the world state before it completes downloading. ::: :::caution RocksDB error on AWS -When running Besu on some cloud providers, a known [RocksDB](https://github.com/facebook/rocksdb/issues/6435) issue causes fast sync to fail occasionally. The following error is displayed repeatedly: +When running Besu on some cloud providers, a known +[RocksDB](https://github.com/facebook/rocksdb/issues/6435) issue causes fast sync to fail occasionally. +The following error is displayed repeatedly: ``` -EthScheduler-Services-1 (importBlock) | ERROR | PipelineChainDownloader | Chain download failed. Restarting after short delay. +EthScheduler-Services-1 (importBlock) | ERROR | PipelineChainDownloader | Chain download failed. +Restarting after short delay. java.util.concurrent.CompletionException: org.hyperledger.besu.plugin.services.exception.StorageException: org.rocksdb.RocksDBException: block checksum mismatch: ``` -The failure has been seen on AWS and Digital Ocean. On AWS, A full restart of the VM is required to restart the fast sync. Fast sync isn't [currently supported on Digital Ocean](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#143). +The failure has been seen on AWS and Digital Ocean. On AWS, A full restart of the VM is required to +restart the fast sync. Fast sync isn't +[currently supported on Digital Ocean](https://github.com/hyperledger/besu/blob/750580dcca349d22d024cc14a8171b2fa74b505a/CHANGELOG.md#143). ::: :::caution Pending state nodes stays constant -When fast syncing, the pending state nodes count is the number of nodes yet to be downloaded, and it should change constantly. Pending state nodes trend to 0 during fast sync and then goes to 0. +When fast syncing, the pending state nodes count is the number of nodes yet to be downloaded, and it +should change constantly. Pending state nodes trend to 0 during fast sync and then goes to 0. If the number stays constant, this could mean your node isn't syncing against any peers. -In the following example, the pivot block is 0 and the pending state nodes value is constant. This means the node isn't syncing against any peers. The fact that state nodes have been downloaded means at some stage it was syncing. +In the following example, the pivot block is 0 and the pending state nodes value is constant. This +means the node isn't syncing against any peers. The fact that state nodes have been downloaded means +at some stage it was syncing. ![Fast synchronization](../../../assets/images/fastsync.png) From fcdb2d560f6535b02dac1d75301d2c7f1436d1ca Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Tue, 11 Jun 2024 10:01:11 +0100 Subject: [PATCH 11/17] Update node-clients.md proof Signed-off-by: m4sterbunny --- docs/public-networks/concepts/node-clients.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md index 8995de6fb9b..0de3f03c102 100644 --- a/docs/public-networks/concepts/node-clients.md +++ b/docs/public-networks/concepts/node-clients.md @@ -41,7 +41,7 @@ Besu is an execution client that you can run with: - [Any consensus client on Mainnet](../get-started/connect/mainnet.md). - [Any consensus client on a testnet](../get-started/connect/testnet.md). -- [Teku on mainnet](../tutorials/besu-teku-mainnet.md). +- [Teku on Mainnet](../tutorials/besu-teku-mainnet.md). - [Teku on a testnet](../tutorials/besu-teku-testnet.md). ### Consensus clients From e0380ca58fbf5b8cd4b0dc4bcfe169edd52e346d Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Tue, 11 Jun 2024 10:56:48 +0100 Subject: [PATCH 12/17] Update node-clients.md as per discussion with Fabio Signed-off-by: m4sterbunny --- docs/public-networks/concepts/node-clients.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md index 0de3f03c102..f5401132023 100644 --- a/docs/public-networks/concepts/node-clients.md +++ b/docs/public-networks/concepts/node-clients.md @@ -8,7 +8,7 @@ tags: # Node clients -Ethereum's Proof of Stake (PoS) consensus layer leverages two separate P2P networks supporting +Ethereum's Proof of Stake (PoS) protocol leverages two separate P2P networks supporting separate clients. Execution clients gossip transactions over their network, enabling them to manage their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus and chain growth. From d36263e9c55149db70d87cfa595dae3e14b09bde Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Tue, 11 Jun 2024 15:58:40 +0100 Subject: [PATCH 13/17] Update node-clients.md responds to tech review Signed-off-by: m4sterbunny --- docs/public-networks/concepts/node-clients.md | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md index f5401132023..fb84e64965b 100644 --- a/docs/public-networks/concepts/node-clients.md +++ b/docs/public-networks/concepts/node-clients.md @@ -11,7 +11,7 @@ tags: Ethereum's Proof of Stake (PoS) protocol leverages two separate P2P networks supporting separate clients. Execution clients gossip transactions over their network, enabling them to manage their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus -and chain growth. +and chain growth. A validator node also runs the [validator client]((#validator-clients). :::info As as result of [the 2022 Merge](https://ethereum.org/en/upgrades/merge/), Ethereum Mainnet @@ -23,11 +23,8 @@ transitioned from Proof of Work (PoW) to [PoS](proof-of-stake/index.md) consensu Under PoS, a full Ethereum Mainnet node is a combination of an execution client (previously called an [Eth1 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and a consensus client (previously called an -[Eth2 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)). A -[validator node](#validator-nodes) also runs the validator client. - -Execution and consensus clients communicate with each other using the -[Engine API](../how-to/use-engine-api.md). +[Eth2 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)). The consensus client +communicates with the execution client via the [Engine API](../how-to/use-engine-api.md). ![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients.png) @@ -57,11 +54,12 @@ implementations. The beacon node is the primary link to the [Beacon Chain] (i.e. A consensus client can run without the (bundled) validator to keep up with the head of the chain, allowing the node to stay synced. -#### Validator nodes +#### Validator clients -Node operators can operate a validator node by adding a validator to their consensus clients and -depositing 32 ETH in the deposit contract. The validator client handles attestations and block -proposal — i.e. performs [validator duties](proof-of-stake/index.md) on the consensus layer. +To operate a validator node, node operators must also run a validator client and deposit the +[required ETH](https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/#validators) into the +deposit contract. The validator client handles attestations and block proposal — i.e. performs +[validator duties](proof-of-stake/index.md) on the consensus layer. The validator client may either be run [in the same process](https://docs.teku.consensys.net/get-started/start-teku#start-the-clients-in-a-single-process) as the beacon node or [separately](https://docs.teku.consensys.net/get-started/start-teku#run-the-clients-separately). From a62f5be3a2ae11f35f4bca423a736f6cee90048a Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Wed, 12 Jun 2024 09:06:50 +0100 Subject: [PATCH 14/17] responds to review Signed-off-by: m4sterbunny --- docs/public-networks/concepts/node-clients.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md index fb84e64965b..abbd906d222 100644 --- a/docs/public-networks/concepts/node-clients.md +++ b/docs/public-networks/concepts/node-clients.md @@ -11,7 +11,7 @@ tags: Ethereum's Proof of Stake (PoS) protocol leverages two separate P2P networks supporting separate clients. Execution clients gossip transactions over their network, enabling them to manage their local transaction pool. Consensus clients gossip blocks over their network, enabling consensus -and chain growth. A validator node also runs the [validator client]((#validator-clients). +and chain growth. A validator node also runs the [validator client](#validator-clients). :::info As as result of [the 2022 Merge](https://ethereum.org/en/upgrades/merge/), Ethereum Mainnet @@ -24,7 +24,7 @@ Under PoS, a full Ethereum Mainnet node is a combination of an execution client an [Eth1 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/) client) and a consensus client (previously called an [Eth2 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)). The consensus client -communicates with the execution client via the [Engine API](../how-to/use-engine-api.md). +uses the [Engine API](../how-to/use-engine-api.md) to communicate with the execution client. ![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients.png) From a771b95b4745cdb1696a1f058d9941e00854e376 Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Wed, 12 Jun 2024 09:08:39 +0100 Subject: [PATCH 15/17] Add files via upload Signed-off-by: m4sterbunny --- .../Execution-Consensus-Client-EngineAPI.png | Bin 0 -> 161072 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/assets/images/Execution-Consensus-Client-EngineAPI.png diff --git a/docs/assets/images/Execution-Consensus-Client-EngineAPI.png b/docs/assets/images/Execution-Consensus-Client-EngineAPI.png new file mode 100644 index 0000000000000000000000000000000000000000..7bc54afd7fbfd428d22a3de5c499f9d9b55277e2 GIT binary patch literal 161072 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 r5hTwcE#mv+iXw<&5^b7|01 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 F{{d*(njQcE literal 0 HcmV?d00001 From 15a0989e44e8099b5a3cac57917ce1735e3782e3 Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Wed, 12 Jun 2024 09:10:08 +0100 Subject: [PATCH 16/17] updates image to rmv bi direction Signed-off-by: m4sterbunny --- docs/public-networks/concepts/node-clients.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/public-networks/concepts/node-clients.md b/docs/public-networks/concepts/node-clients.md index abbd906d222..2507fb78c8d 100644 --- a/docs/public-networks/concepts/node-clients.md +++ b/docs/public-networks/concepts/node-clients.md @@ -26,7 +26,7 @@ consensus client (previously called an [Eth2 client](https://blog.ethereum.org/2022/01/24/the-great-eth2-renaming/)). The consensus client uses the [Engine API](../how-to/use-engine-api.md) to communicate with the execution client. -![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients.png) +![Ethereum Merge node](../../assets/images/Execution-Consensus-Clients-EngineAPI.png) ### Execution clients From f94af06a00a7288dc03b9fef8ba6d5670766ad2f Mon Sep 17 00:00:00 2001 From: m4sterbunny Date: Wed, 12 Jun 2024 09:21:36 +0100 Subject: [PATCH 17/17] Rename Execution-Consensus-Client-EngineAPI.png to Execution-Consensus-Clients-EngineAPI.png Signed-off-by: m4sterbunny --- ...ng => Execution-Consensus-Clients-EngineAPI.png} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/assets/images/{Execution-Consensus-Client-EngineAPI.png => Execution-Consensus-Clients-EngineAPI.png} (100%) diff --git a/docs/assets/images/Execution-Consensus-Client-EngineAPI.png b/docs/assets/images/Execution-Consensus-Clients-EngineAPI.png similarity index 100% rename from docs/assets/images/Execution-Consensus-Client-EngineAPI.png rename to docs/assets/images/Execution-Consensus-Clients-EngineAPI.png