diff --git a/docs/assets/images/Execution-Consensus-Clients-EngineAPI.png b/docs/assets/images/Execution-Consensus-Clients-EngineAPI.png new file mode 100644 index 00000000000..7bc54afd7fb Binary files /dev/null and b/docs/assets/images/Execution-Consensus-Clients-EngineAPI.png differ 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..2507fb78c8d --- /dev/null +++ b/docs/public-networks/concepts/node-clients.md @@ -0,0 +1,76 @@ +--- +title: Node clients +sidebar_position: 1 +description: Learn about execution and consensus clients. +tags: + - public networks +--- + +# Node clients + +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). + +:::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/)). 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-EngineAPI.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 clients + +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). + +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..b16d074b809 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..921b12ecff1 100644 --- a/docs/public-networks/get-started/connect/sync-node.md +++ b/docs/public-networks/get-started/connect/sync-node.md @@ -11,34 +11,38 @@ 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/the-merge.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 +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 +64,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. @@ -82,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": { @@ -119,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) 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 8749e61ef26..038ee536cb2 100644 --- a/docs/public-networks/reference/cli/options.md +++ b/docs/public-networks/reference/cli/options.md @@ -408,6 +408,48 @@ When connecting to Mainnet or public testnets, the default is a predefined list In private networks defined using [`--genesis-file`](#genesis-file) or when using [`--network=dev`](#network), the default is an empty list of bootnodes. +### `cache-last-blocks` + + + + + +```bash +--cache-last-blocks= +``` + + + + + +```bash +--cache-last-blocks=2048 +``` + + + + + +```bash +CACHE_LAST_BLOCKS=2048 +``` + + + + + +```bash +cache-last-blocks=2048 +``` + + + + + +The number of recent blocks to cache. +Using this option can improve the performance of several RPC calls including: [`eth_getBlockByNumber`](../api/index.md#eth_getBlockByNumber), [`eth_getBlockByHash`](../api/index.md#eth_getBlockByHash), [`eth_getTransactionReceipt`](../api/index.md#getTransactionReceipt), and especially [`eth_feeHistory`](../api/index.md#eth_feeHistory). +The default is `0`. + ### `color-enabled` @@ -813,7 +855,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#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` 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..3c022bc501f 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: "/development/public-networks/concepts/the-merge", + to: "/development/public-networks/concepts/node-clients", + }, { from: "/public-networks/how-to/configuration-file", to: "/public-networks/how-to/use-configuration-file",