From a66cfd832dfb73bd367d375ed2a519bb2cfcb1dc Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 26 Sep 2022 10:57:51 +0100 Subject: [PATCH 01/15] add docs landing page, update sync-modes --- src/pages/docs/fundamentals/sync-modes.md | 108 +++++++++++++++++++--- src/pages/docs/index.md | 30 ++++++ 2 files changed, 125 insertions(+), 13 deletions(-) create mode 100644 src/pages/docs/index.md diff --git a/src/pages/docs/fundamentals/sync-modes.md b/src/pages/docs/fundamentals/sync-modes.md index 77d41a0545..360bede806 100644 --- a/src/pages/docs/fundamentals/sync-modes.md +++ b/src/pages/docs/fundamentals/sync-modes.md @@ -1,4 +1,6 @@ -Syncing is the process by which Geth catches up to the latest Ethereum block and current global state. There are several ways to sync a Geth node that differ in their speed, storage requirements and trust assumptions. This page outlines three sync configurations for full nodes and one for light nodes. +Syncing is the process by which Geth catches up to the latest Ethereum block and current global state. +There are several ways to sync a Geth node that differ in their speed, storage requirements and trust +assumptions. This page outlines three sync configurations for full nodes and one for light nodes. ## Full nodes @@ -6,44 +8,124 @@ There are two types of full node that use different mechanisms to sync up to the ### Snap (default) -A snap sync'd node holds the most recent 128 blocks in memory, so transactions in that range are always accessible. However, snap-sync only starts processing from a relatively recent block (as opposed to genesis for a full node). Between the initial sync block and the 128 most recent blocks, the node stores occasional checkpoints that can be used to rebuild the state on-the-fly. This means transactions can be traced back as far as the block that was used for the initial sync. Tracing a single transaction requires reexecuting all preceding transactions in the same block **and** all preceding blocks until the previous stored snapshot. Snap-sync'd nodes are therefore functionally equal to full nodes, but the initial synchronization required a checkpoint block to sync from instead of independently verifying the chain all the way from genesis. Snap sync then only verifies the proof-of-work and ancestor-child block progression and assumes that the state transitions are correct rather than re-executing the transactions in each block to verify the state changes. Snap sync is much faster than full sync. To start a node with snap sync pass `--syncmode snap` at startup. +A snap sync'd node holds the most recent 128 block states in memory, so transactions in that range are always quickly +accessible. However, snap-sync only starts processing from a relatively recent block (as opposed to genesis +for a full node). Between the initial sync block and the 128 most recent blocks, the node stores occasional +checkpoints that can be used to rebuild the state on-the-fly. This means transactions can be traced back as +far as the block that was used for the initial sync. Tracing a single transaction requires reexecuting all +preceding transactions in the same block **and** all preceding blocks until the previous stored snapshot. +Snap-sync'd nodes are therefore functionally equal to full nodes, but the initial synchronization required +a checkpoint block to sync from instead of independently verifying the chain all the way from genesis. +Snap sync then only verifies the proof-of-work and ancestor-child block progression and assumes that the +state transitions are correct rather than re-executing the transactions in each block to verify the state +changes. Snap sync is much faster than full sync. To start a node with snap sync pass `--syncmode snap` at +startup. -Snap sync starts by downloading the blocks between the head of the chain and the previous checkpoint. Then it downloads the leaves of the state trie for each block without the intermediate nodes. The state trie is then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of the state heal because the extent of the errors cannot be known until the current state has already been regenerated. The healing has to outpace the growth of the blockchain, otherwise the node will never catch up to the current state. There are some hardware factors that determine the speed of the state healing (speed of disk read/write and internet connection) and also the total gas used in each block (more gas means more changes to the state that have to be handled). +Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block +bodies and receipts for those blocks are downloaded. Next, state sync begins. In state-sync, Geth first downloads the +leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is +then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete +and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also +progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary +to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of +the state heal because the extent of the errors cannot be known until the current state has already been regenerated. +The healing has to outpace the growth of the blockchain, otherwise the node will never catch up to the current state. +There are some hardware factors that determine the speed of the state healing (speed of disk read/write and internet +connection) and also the total gas used in each block (more gas means more changes to the state that have to be +handled). -**Note** Snap sync is the default behaviour, so if the `--syncmode` value is not passed to Geth at startup, Geth will use snap sync. A node that is started using `snap` will switch to block-by-block sync once it has caught up to the head of the chain. +In summary, snap sync progresses in the following sequence: + +- download and verify headers +- download block bodies and receipts +- download raw state data +- regenerate state trie +- heal state trie to account for newly arriving data + +**Note** Snap sync is the default behaviour, so if the `--syncmode` value is not passed to Geth at startup, +Geth will use snap sync. A node that is started using `snap` will switch to block-by-block sync once it has +caught up to the head of the chain. ### Full -A full sync generates the current state by executing every block starting from the genesis block. A full sync indendently verifies proof-of-work and block provenance as well as all state transitions by re-executing the transactions in the entire historical sequence of blocks. Only the most recent 128 blocks are stored in a full node - older blocks are pruned periodically and represented as a series of checkpoints from which any previous state can be regenerated on request. 128 blocks is about 25.6 minutes of history with a block time of 12 seconds. To create a full node pass `--syncmode full` at startup. +A full sync generates the current state by executing every block starting from the genesis block. A full sync +indendently verifies proof-of-work and block provenance as well as all state transitions by re-executing the +transactions in the entire historical sequence of blocks. Only the most recent 128 block states are stored in a full +node - older block states are pruned periodically and represented as a series of checkpoints from which any previous +state can be regenerated on request. 128 blocks is about 25.6 minutes of history with a block time of 12 seconds. +To create a full node pass `--syncmode full` at startup. ## Archive nodes -An archive node is a node that retains all historical data right back to genesis. There is no need to regenerate any data from checkpoints because all data is directly available in the node's own storage. Archive nodes are therefore ideal for making fast queries about historical states. At the time of writing (September 2022) a full archive node that stores all data since genesis occupies nearly 12 TB of disk space (keep up with the current size on [Etherscan](https://etherscan.io/chartsync/chainarchive)). Archive nodes are created by configuring Geth's garbage collection so that old data is never deleted: `geth --syncmode full --gcmode archive`. +An archive node is a node that retains all historical data right back to genesis. There is no need to regenerate +any data from checkpoints because all data is directly available in the node's own storage. Archive nodes are +therefore ideal for making fast queries about historical states. At the time of writing (September 2022) a full +archive node that stores all data since genesis occupies nearly 12 TB of disk space (keep up with the current +size on [Etherscan](https://etherscan.io/chartsync/chainarchive)). Archive nodes are created by configuring Geth's +garbage collection so that old data is never deleted: `geth --syncmode full --gcmode archive`. -It is also possible to create a partial/recent archive node where the node was synced using `snap` but the state is never pruned. This creates an archive node that saves all state data from the point that the node first syncs. This is configured by starting Geth with `--syncmode snap gcmode archive`. +It is also possible to create a partial/recent archive node where the node was synced using `snap` but the state +is never pruned. This creates an archive node that saves all state data from the point that the node first syncs. +This is configured by starting Geth with `--syncmode snap gcmode archive`. ## Light nodes -A light node syncs very quickly and stores the bare minimum of blockchain data. Light nodes only process block headers, not entire blocks. This greatly reduces the computation time, storage and bandwidth required relative to a full node. This means light nodes are suitable for resource-constrained devices and can catch up to the head of the chain much faster when they are new or have been offline for a while. The trade-off is that light nodes rely heavily on data served by altruistic full nodes. A light client can be used to query data from Ethereum and submit transactions, acting as a locally-hosted Ethereum wallet. However, because they don't keep local copies of the Ethereum state, light nodes can't validate blocks in the same way as full nodes - they have to trust that the data they receive is honest. To start a node in light mode, pass `--syncmode light`. Be aware that full nodes serving light data are relative scarce so light nodes can struggle to find peers. +A light node syncs very quickly and stores the bare minimum of blockchain data. Light nodes only process block +headers, not entire blocks. This greatly reduces the computation time, storage and bandwidth required relative to a +full node. This means light nodes are suitable for resource-constrained devices and can catch up to the head of the +chain much faster when they are new or have been offline for a while. The trade-off is that light nodes rely heavily +on data served by altruistic full nodes. A light client can be used to query data from Ethereum and submit transactions, +acting as a locally-hosted Ethereum wallet. However, because they don't keep local copies of the Ethereum state, light +nodes can't validate blocks in the same way as full nodes - they receive a proof from the full node and verify it against their local header chain. +To start a node in light mode, pass `--syncmode light`. Be aware that full nodes serving light data are relative scarce +so light nodes can struggle to find peers. -Read more about light nodes on our [LES page](/content/docs/fundamentals/les.md). +Read more about light nodes on our [LES page](/docs/interface/les.md). ## Consensus layer syncing -At the transition to proof-of-stake, all consensus logic and block propagation is handed over to consensus clients. This means that syncing the blockchain is a process shared between the consensus and execution clients. Blocks are downloaded by the consensus client and verified by the execution client. There are two ways to sync a consensus client: optimistic sync and checkpoint sync. +Now that Ethereum has switched to proof-of-stake, all consensus logic and block propagation is handled by consensus clients. +This means that syncing the blockchain is a process shared between the consensus and execution clients. Blocks are +downloaded by the consensus client and verified by the execution client. In order for Geth to sync, it requires a header from +its connected consensus client. Geth does not import any data until it is instructed to by the consensus client. + +Once a header is available to use as a syncing target, Geth retrieves all headers between that target header and the +local header chain in reverse chronological order. These headers show that the sequence of blocks is correct because +the parenthashes link one block to the next right up to the target block. Eventually, the sync will reach a block held +in the local database, at which point the local data and the target data are considered 'linked' and there is a very high +chance the node is syncing the correct chain. The block bodies are then downloaded and then the state data. The consensus +client can update the target header - as long as the syncing outpaces the growth of the blockchain then the node will eventually +get in sync. + +There are two ways for the consensus client to find a block header that Geth can use as a sync target: optimistic syncing and +checkpoint syncing: ### Optimistic sync -Optimistic sync downloads blocks before the execution client has validated them. This means the execution client can constantly be fed with up-to-date states to snap-sync to. Assuming the blocks are valid, eventually the sync catches up to the optimistically downloaded head and the blockchain is in sync. From this point, verification is done block-by-block (i.e. the sync mode switches to `full`). In optimistic sync the node assumes the data it receives from its peers is correct during the downloading phase but then retroactively verifies each downloaded block. Nodes are not allowed to attest or propose blocks while they are still 'optimistic' because they can't yet guarantee their view of the ehad of the chain is correct. +Optimistic sync downloads blocks before the execution client has validated them. In optimistic sync the node assumes +the data it receives from its peers is correct during the downloading phase but then retroactively verifies each +downloaded block. Nodes are not allowed to attest or propose blocks while they are still 'optimistic' because they +can't yet guarantee their view of the head of the chain is correct. Read more in the [optimistic sync specs](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md). ### Checkpoint sync -Alternatively, the consensus client can grab a checkpoint from a trusted source which provides a target state to sync up to, before switching to full sync and verifying each block in turn. In this mode, the node trusts that the checkpoint is correct. There are many possible sources for this checkpoint - the gold standard would be to get it out-of-band from another trusted friend, but it could also come from block explorers or public APIs/web apps. +Alternatively, the consensus client can grab a checkpoint from a trusted source which provides a target state to sync +up to, before switching to full sync and verifying each block in turn. In this mode, the node trusts that the checkpoint +is correct. There are many possible sources for this checkpoint - the gold standard would be to get it out-of-band +from another trusted friend, but it could also come from block explorers or public APIs/web apps. **Note** it is not currently possible to use a Geth light node as an execution client on proof-of-stake Ethereum. ## Summary -There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all blocks starting at a recent checkpoint. A trust-minimized alternative is full-sync, which verifies every block since genesis. These modes prune the blockchain data older than 128 blocks, keeping only checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, `--syncmode` should be `full` and `--gcmode` should be set to `archive`. At the transition to proof-of-stake, light-sync will no longer work (until new light client protocols are shipped). +There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all +blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative +is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only +checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node +is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. +The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. +These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, +`--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, +light-sync dot not work (new light client protocols are being developed). \ No newline at end of file diff --git a/src/pages/docs/index.md b/src/pages/docs/index.md new file mode 100644 index 0000000000..e9b49ab811 --- /dev/null +++ b/src/pages/docs/index.md @@ -0,0 +1,30 @@ +--- +title: Welcome to go-ethereum documentation +description: Documentation for the go-ethereum client +--- + +## Welcome to go-ethereum + +Go-ethereum (aka Geth) is anEthereum client built in Golang. It is one of the original and most popular Ethereum clients. +These documentation pages are intended to help users download, install and use Geth. + + +## Where to go from here + +First, [download](/pages/downloads) and [install](/pages/docs/getting-started/installing-geth.md) Geth. + +If you are just starting out with Geth, head to the [Getting started](src/pages/docs/getting-started/getting-started.md) page. That page guides a new user through some basic functions of Geth such as creating and securing accounts and making a transaction using Geth's built-in account tools. + +A more secure but slightly more complicated setup is to use an external signer instead of Geth's built-in account manager. We have a [getting started](src/pages/docs/getting-started/getting-started-with-clef.md) guide for that too. + +Then, it is recommended to read the material in the [Fundamentals](src/pages/docs/fundamentals) section - these pages will help build a foundational understanding of how Geth works from a user perspective and under the hood. + +More advanced topics are also available - explore using the sidebar! + +## Developers and contributors + +If you want to help develop Geth or build decentralized apps on top of it, head to our [Developers](src/pages/docs/developers) documentation. + +## More resources + +We have a library of videos and articles on our [Resources](/pages/docs/resources.md) page and answers to common questions on the [FAQs](/pages/docs/faq.md) page. \ No newline at end of file From ed473a6f5276923fa35852896edb3c8fa3d0f4d7 Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 26 Sep 2022 11:12:31 +0100 Subject: [PATCH 02/15] update sync-modes page again --- src/pages/docs/fundamentals/sync-modes.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/pages/docs/fundamentals/sync-modes.md b/src/pages/docs/fundamentals/sync-modes.md index 360bede806..18dcff6c9a 100644 --- a/src/pages/docs/fundamentals/sync-modes.md +++ b/src/pages/docs/fundamentals/sync-modes.md @@ -14,15 +14,15 @@ for a full node). Between the initial sync block and the 128 most recent blocks, checkpoints that can be used to rebuild the state on-the-fly. This means transactions can be traced back as far as the block that was used for the initial sync. Tracing a single transaction requires reexecuting all preceding transactions in the same block **and** all preceding blocks until the previous stored snapshot. -Snap-sync'd nodes are therefore functionally equal to full nodes, but the initial synchronization required +Snap-sync'd nodes are therefore full nodes, with the only difference being the initial synchronization required a checkpoint block to sync from instead of independently verifying the chain all the way from genesis. Snap sync then only verifies the proof-of-work and ancestor-child block progression and assumes that the state transitions are correct rather than re-executing the transactions in each block to verify the state -changes. Snap sync is much faster than full sync. To start a node with snap sync pass `--syncmode snap` at +changes. Snap sync is much faster than block-by-block sync. To start a node with snap sync pass `--syncmode snap` at startup. Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block -bodies and receipts for those blocks are downloaded. Next, state sync begins. In state-sync, Geth first downloads the +bodies and receipts for those blocks are downloaded. In parallel, Geth also sync begins state-sync. In state-sync, Geth first downloads the leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also @@ -34,12 +34,9 @@ There are some hardware factors that determine the speed of the state healing (s connection) and also the total gas used in each block (more gas means more changes to the state that have to be handled). -In summary, snap sync progresses in the following sequence: - +To summarize, snap sync progresses in the following sequence: - download and verify headers -- download block bodies and receipts -- download raw state data -- regenerate state trie +- download block bodies and receipts.In parallel, download raw state data and build state trie - heal state trie to account for newly arriving data **Note** Snap sync is the default behaviour, so if the `--syncmode` value is not passed to Geth at startup, @@ -66,7 +63,7 @@ garbage collection so that old data is never deleted: `geth --syncmode full --gc It is also possible to create a partial/recent archive node where the node was synced using `snap` but the state is never pruned. This creates an archive node that saves all state data from the point that the node first syncs. -This is configured by starting Geth with `--syncmode snap gcmode archive`. +This is configured by starting Geth with `--syncmode snap --gcmode archive`. ## Light nodes From b7ba7520f0830475d48ad7aac67863bbf74e6e61 Mon Sep 17 00:00:00 2001 From: Joe Date: Mon, 26 Sep 2022 13:14:33 +0100 Subject: [PATCH 03/15] update peer-to-peer page for post-merge --- src/pages/docs/fundamentals/peer-to-peer.md | 43 +++++++-------------- 1 file changed, 15 insertions(+), 28 deletions(-) diff --git a/src/pages/docs/fundamentals/peer-to-peer.md b/src/pages/docs/fundamentals/peer-to-peer.md index af8d4bf659..b5a18919ab 100644 --- a/src/pages/docs/fundamentals/peer-to-peer.md +++ b/src/pages/docs/fundamentals/peer-to-peer.md @@ -3,37 +3,31 @@ title: Connecting To The Network description: Guide to connecting Geth to a peer-to-peer network --- -The default behaviour for Geth is to connect to Ethereum Mainnet. However, Geth can also connect to public testnets, [private networks](/docs/getting-started/private-net) and [local testnets](/docs/getting-started/dev-mode). Command line flags are provided for connecting to the popular public testnets: +The default behaviour for Geth is to connect to Ethereum Mainnet. However, Geth can also connect to public testnets, [private networks](/docs/getting-started/private-net) and [local testnets](/docs/getting-started/dev-mode). For convenience, the two public testnets with long term support, Goerli and Sepolia, have their own command line flag. Geth can connect to these testnets simpyl by passing: -- `--ropsten`, Ropsten proof-of-work test network -- `--rinkeby`, Rinkeby proof-of-authority test network - `--goerli`, Goerli proof-of-authority test network - `--sepolia` Sepolia proof-of-work test network -Providing these flags at startup instructs Geth to connect to the specific public testnet instead of Ethereum Mainnet. Because these are public testnets that have been running for several years, Geth has to download the historical blockchain data from genesis, just the same as for Ethereum Mainnet. +These testnets started as proof-of-work and proof-of-authority testnets, but they were transitioned to proof-of-stake in 2022 in preparation for doing the same to Ethereum Mainnet. This means that to run a node on Goerli or Sepolia it is now necessary to run a consensus client connected to Geth. This is also true for Ethereum Mainnet. **Geth does not work on proof-of-stake networks without a consensus client**! The remainder of this page will assume that Geth is connected to a consensus client that is synced to the desired network. For instructions on how to set up a consensus client please see the [Consensus Clients](/docs/interface/consensus-clients.md) page. -**Note:** network selection is not persisted in the config file. To connect to a pre-defined network you must always enable it explicitly, even when using the `--config` flag to load other configuration values. For example: - -```shell +**Note:** Network selection is not persisted from a config file. To connect to a pre-defined network you must always enable it explicitly, even when using the `--config` flag to load other configuration values. For example: +```shell # Generate desired config file. You must specify testnet here. geth --goerli --syncmode "full" ... dumpconfig > goerli.toml # Start geth with given config file. Here too the testnet must be specified. geth --goerli --config goerli.toml - ``` ## Finding peers -Geth continuously attempts to connect to other nodes on the network until it has enough peers. If UPnP (Universal Plug and Play) is enabled at the router or Ethereum is run on an Internet-facing server, it will also accept connections from other nodes. Geth finds peers using the [discovery protocol](https://ethereum.org/en/developers/docs/networking-layer/#discovery). In the discovery protocol, nodes exchange connectivity details and then establish sessions ([RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md)). If the nodes support compatible sub-protocols they can start exchanging Ethereum data [on the wire](https://ethereum.org/en/developers/docs/networking-layer/#wire-protocol). +Geth continuously attempts to connect to other nodes on the network until it has enough peers. If UPnP (Universal Plug and Play) is enabled at the router or Ethereum is run on an Internet-facing server, it will also accept connections from other nodes. Geth finds peers using the [discovery protocol](https://ethereum.org/en/developers/docs/networking-layer/#discovery). In the discovery protocol, nodes exchange connectivity details and then establish sessions ([RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md)). If the nodes support compatible sub-protocols they can start exchanging Ethereum data [on the wire](https://ethereum.org/en/developers/docs/networking-layer/#wire-protocol). A new node entering the network for the first time gets introduced to a set of peers by a bootstrap node ("bootnode") whose sole purpose is to connect new nodes to peers. The endpoints for these bootnodes are hardcoded into Geth, but they can also be specified by providing the `--bootnode` flag along with comma-separated bootnode addresses in the form of [enodes](https://ethereum.org/en/developers/docs/networking-layer/network-addresses/#enode) on startup. For example: ```shell - geth --bootnodes enode://pubkey1@ip1:port1,enode://pubkey2@ip2:port2,enode://pubkey3@ip3:port3 - ``` There are scenarios where disabling the discovery process is useful, for example for running a local test node or an experimental test network with known, fixed nodes. This can be achieved by passing the `--nodiscover` flag to Geth at startup. @@ -46,22 +40,22 @@ There are occasions when Geth simply fails to connect to peers. The common reaso - Some firewall configurations can prohibit UDP traffic. The static nodes feature or `admin.addPeer()` on the console can be used to configure connections manually. -- Running Geth in [light mode](/docs/interface/les) often leads to connectivity issues because there are few nodes running light servers. There is no easy fix for this except to switch Geth out of light mode. +- Running Geth in [light mode](/docs/interface/les) often leads to connectivity issues because there are few nodes running light servers. There is no easy fix for this except to switch Geth out of light mode. **Note that light mode does not curently work on proof-of-stake networks**. - The public test network Geth is connecting to might be deprecated or have a low number of active nodes that are hard to find. In this case, the best action is to switch to an alternative test network. + ## Checking Connectivity The `net` module has two attributes that enable checking node connectivity from the [interactive Javascript console](/docs/interface/javascript-console). These are `net.listening` which reports whether the Geth node is listening for inbound requests, and `peerCount` which returns the number of active peers the node is connected to. -```javascript +```javascript > net.listening true > net.peerCount 4 - ``` Functions in the `admin` module provide more information about the connected peers, including their IP address, port number, supported protocols etc. Calling `admin.peers` returns this information for all connected peers. @@ -116,17 +110,16 @@ The `admin` module also includes functions for gathering information about the l It is often useful for developers to connect to private test networks rather than public testnets or Etheruem mainnet. These sandbox environments allow block creation without competing against other miners, easy minting of test ether and give freedom to break things without real-world consequences. A private network is started by providing a value to `--networkid` that is not used by any other existing public network ([Chainlist](https://chainlist.org)) and creating a custom `genesis.json` file. Detailed instructions for this are available on the [Private Networks page](/docs/interface/private-network). + ## Static nodes Geth also supports static nodes. Static nodes are specific peers that are always connected to. Geth reconnects to these peers automatically when it is restarted. Specific nodes are defined to be static nodes by adding their enode addresses to a config file. The easiest way to create this config file is to run: ``` -geth --datadir dumpconfig > datadir/config.toml +geth --datadir dumpconfig > config.toml ``` -Remember also that for public testnets (`goerli`, `sepolia` etc) the network name must be passed explicitly as a command line flag. - -This will create `config.toml` in the `datadir`. The enode addresses for static nodes can then be added in square brackets to the `StaticNodes` field in the `Node.P2P` section in `config.toml`. When Geth is started, pass `--config datadir/config.toml`. The relevant line in `config.toml` looks as follows: +This will create `config.toml` in the current directory. The enode addresses for static nodes can then be added as a list to the `StaticNodes` field of the `Node.P2P` section in `config.toml`. When Geth is started, pass `--config config.toml`. The relevant line in `config.toml` looks as follows: ```toml StaticNodes = ["enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303"] @@ -137,9 +130,7 @@ Ensure the other lines in `config.toml` are also set correctly before starting G Static nodes can also be added at runtime in the Javascript console by passing an enode address to `admin.addPeer()`: ```javascript -admin.addPeer( - 'enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303' -); +admin.addPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303") ``` ## Peer limit @@ -147,23 +138,19 @@ admin.addPeer( It is sometimes desirable to cap the number of peers Geth will connect to in order to limit on the computational and bandwidth cost associated with running a node. By default, the limit is 50 peers, however, this can be updated by passing a value to `--maxpeers`: ```shell - geth --maxpeers 15 - ``` ## Trusted nodes -Trusted nodes can be added to `config.toml` in the same way as for static nodes. Add the trusted node's enode address to the `TrustedNodes` field in `config.toml` before starting Geth with `--config datadir/config.toml`. +Trusted nodes can be added to `config.toml` in the same way as for static nodes. Add the trusted node's enode address to the `TrustedNodes` field in `config.toml` before starting Geth with `--config config.toml`. Nodes can be added using the `admin.addTrustedPeer()` call in the Javascript console and removed using `admin.removeTrustedPeer()` call. ```javascript -admin.addTrustedPeer( - 'enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303' -); +admin.addTrustedPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303") ``` ## Summary -Geth connects to Ethereum Mainnet by default. However, this behaviour can be changed using combinations of command line flags and files. This page has described the various options available for connecting a Geth node to Ethereum, public testnets and private networks. +Geth connects to Ethereum Mainnet by default. However, this behaviour can be changed using combinations of command line flags and files. This page has described the various options available for connecting a Geth node to Ethereum, public testnets and private networks. Remember that to connect to a proof-of-stake network (e.g. Ethereum Mainnet, Goerli, Sepolia) a consensus client is also required. From 7faf259994d2e9ea3f3c9e2f352a1f6c7c559e80 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 27 Sep 2022 14:14:24 +0100 Subject: [PATCH 04/15] hardware requirements page --- src/pages/docs/getting-started/hardware-requirements.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/pages/docs/getting-started/hardware-requirements.md b/src/pages/docs/getting-started/hardware-requirements.md index 615049cb7c..39e787a277 100644 --- a/src/pages/docs/getting-started/hardware-requirements.md +++ b/src/pages/docs/getting-started/hardware-requirements.md @@ -3,7 +3,7 @@ title: Hardware requirements description: Overview of the hardware needed to run an Ethereum node --- -The hardware requirements for running an Ethereum node depend upon the node configuration and can change over time as upgrades to the network are implemented. Ethereum nodes can be run on low power, resource-constrained devices such as Raspberry Pi's. Prebuilt, dedicated staking machines are available from several companies - these might be good choices for users who want plug-and-play hardware specifically designed for Ethereum. However, many users will choose to run nodes on laptop or desktop computers. Those users need to know the basic minimum requirements. +The hardware requirements for running a Geth node depend upon the node configuration and can change over time as upgrades to the network are implemented. Ethereum nodes can be run on low power, resource-constrained devices such as Raspberry Pi's. Prebuilt, dedicated staking machines are available from several companies - these might be good choices for users who want plug-and-play hardware specifically designed for Ethereum. However, many users will choose to run nodes on laptop or desktop computers. ## Processor @@ -18,11 +18,10 @@ It is recommended to use at least 16GB RAM. Disk space is usually the primary bottleneck for node operators. At the time of writing (September 2022) a 2TB SSD is recommended for a full node running Geth and a consensus client. Geth itself requires >650GB of disk space for a snap-synced full node and, with the default cache size, grows about 14GB/week. Pruning brings the total storage back down to the original 650GB. Archive nodes require additional space. A "full" archive node that keeps all state back to genesis requires more than 12TB of space. Partial archive nodes can also be created by turning off the garbage collector after some initial sync - the storage requirement depends how much state is saved. -There are future updates to Ethereum that will reduce the amount of disk space required to run a node. In particular, [EIP-4444](https://eips.ethereum.org/EIPS/eip-4444#preserving-historical-data) aims to bound the historical state stored by nodes and instead make it available from offchain storage (e.g. torrents or IPFS). -As well as storage capacity, Geth nodes rely on fast read and write operations. This means HDDs and cheaper HDDS struggle to sync the blockchain. There is a list of SSD models that can and cannot sync Geth in this [Github Gist](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038). +As well as storage capacity, Geth nodes rely on fast read and write operations. This means HDDs and cheaper HDDS can sometimes struggle to sync the blockchain. A list of SSD models that users report being able and unable to sync Geth is available in this [Github Gist](https://gist.github.com/yorickdowne/f3a3e79a573bf35767cd002cc977b038). Please note that the list has *not* been verified by the Geth team. ## Bandwidth -It is important to have a stable and reliable internet connection, especially for running a validator because downtime can result in missed rewards or penalties. It is recommended to have at least 25Mbps download speed to run a node. Running a node also requires a lot of data to be uploaded and downloaded so it is better to use a ISP that does not have a capped data allowance. \ No newline at end of file +It is important to have a stable and reliable internet connection, especially for running a validator because downtime can result in missed rewards or penalties. It is recommended to have at least 25Mbps download speed to run a node. Running a node also requires a lot of data to be uploaded and downloaded so it is better to use an ISP that does not have a capped data allowance. \ No newline at end of file From 92f61d90cad0abd038866b3bc0f44f26fc9ddbb2 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 27 Sep 2022 14:42:28 +0100 Subject: [PATCH 05/15] update resources and landing page --- src/pages/docs/index.md | 3 +-- src/pages/docs/resources.md | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/pages/docs/index.md b/src/pages/docs/index.md index e9b49ab811..9ebf9ab741 100644 --- a/src/pages/docs/index.md +++ b/src/pages/docs/index.md @@ -5,10 +5,9 @@ description: Documentation for the go-ethereum client ## Welcome to go-ethereum -Go-ethereum (aka Geth) is anEthereum client built in Golang. It is one of the original and most popular Ethereum clients. +Go-ethereum (aka Geth) is an Ethereum client built in [Golang](https://go.dev). It is one of the original and most popular Ethereum clients. These documentation pages are intended to help users download, install and use Geth. - ## Where to go from here First, [download](/pages/downloads) and [install](/pages/docs/getting-started/installing-geth.md) Geth. diff --git a/src/pages/docs/resources.md b/src/pages/docs/resources.md index 4b2367ab80..76fa404a0a 100644 --- a/src/pages/docs/resources.md +++ b/src/pages/docs/resources.md @@ -42,7 +42,3 @@ Here are more resources for a deeper understanding of Geth and related topics. [Péter at DevCon 2: Import Geth in Go](https://www.youtube.com/watch?v=R0Ia1U9Gxjg) [Péter at dotGo 2016: Immutability in Go](https://www.youtube.com/watch?v=fNUx4jHTaIc) - -## Listen - -Podcasts relating to Geth will be posted here! From b3f694c72aec38f9f7bfeabaea65daff46a715f7 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 27 Sep 2022 15:01:00 +0100 Subject: [PATCH 06/15] update sync modes post-review --- src/pages/docs/fundamentals/sync-modes.md | 106 +++++----------------- 1 file changed, 22 insertions(+), 84 deletions(-) diff --git a/src/pages/docs/fundamentals/sync-modes.md b/src/pages/docs/fundamentals/sync-modes.md index 18dcff6c9a..10bbf20d42 100644 --- a/src/pages/docs/fundamentals/sync-modes.md +++ b/src/pages/docs/fundamentals/sync-modes.md @@ -1,6 +1,9 @@ -Syncing is the process by which Geth catches up to the latest Ethereum block and current global state. -There are several ways to sync a Geth node that differ in their speed, storage requirements and trust -assumptions. This page outlines three sync configurations for full nodes and one for light nodes. +--- +title: Sync modes +description: Introduction to Geth's sync modes +--- + +Syncing is the process by which Geth catches up to the latest Ethereum block and current global state. There are several ways to sync a Geth node that differ in their speed, storage requirements and trust assumptions. This page outlines three sync configurations for full nodes and one for light nodes. ## Full nodes @@ -8,121 +11,56 @@ There are two types of full node that use different mechanisms to sync up to the ### Snap (default) -A snap sync'd node holds the most recent 128 block states in memory, so transactions in that range are always quickly -accessible. However, snap-sync only starts processing from a relatively recent block (as opposed to genesis -for a full node). Between the initial sync block and the 128 most recent blocks, the node stores occasional -checkpoints that can be used to rebuild the state on-the-fly. This means transactions can be traced back as -far as the block that was used for the initial sync. Tracing a single transaction requires reexecuting all -preceding transactions in the same block **and** all preceding blocks until the previous stored snapshot. -Snap-sync'd nodes are therefore full nodes, with the only difference being the initial synchronization required -a checkpoint block to sync from instead of independently verifying the chain all the way from genesis. -Snap sync then only verifies the proof-of-work and ancestor-child block progression and assumes that the -state transitions are correct rather than re-executing the transactions in each block to verify the state -changes. Snap sync is much faster than block-by-block sync. To start a node with snap sync pass `--syncmode snap` at -startup. +A snap sync'd node holds the most recent 128 block states in memory, so transactions in that range are always quickly accessible. However, snap-sync only starts processing from a relatively recent block (as opposed to genesis for a full node). Between the initial sync block and the 128 most recent blocks, the node stores occasional checkpoints that can be used to rebuild the state on-the-fly. This means transactions can be traced back as far as the block that was used for the initial sync. Tracing a single transaction requires reexecuting all preceding transactions in the same block **and** all preceding blocks until the previous stored snapshot. Snap-sync'd nodes are therefore full nodes, with the only difference being the initial synchronization required a checkpoint block to sync from instead of independently verifying the chain all the way from genesis. Snap sync then only verifies the proof-of-work and ancestor-child block progression and assumes that the state transitions are correct rather than re-executing the transactions in each block to verify the state changes. Snap sync is much faster than block-by-block sync. To start a node with snap sync pass `--syncmode snap` at startup. -Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block -bodies and receipts for those blocks are downloaded. In parallel, Geth also sync begins state-sync. In state-sync, Geth first downloads the -leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is -then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete -and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also -progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary -to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of -the state heal because the extent of the errors cannot be known until the current state has already been regenerated. -The healing has to outpace the growth of the blockchain, otherwise the node will never catch up to the current state. -There are some hardware factors that determine the speed of the state healing (speed of disk read/write and internet -connection) and also the total gas used in each block (more gas means more changes to the state that have to be -handled). +Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block bodies and receipts for those blocks are downloaded. In parallel, Geth also sync begins state-sync. In state-sync, Geth first downloads the leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of the state heal because the extent of the errors cannot be known until the current state has already been regenerated. +The healing has to outpace the growth of the blockchain, otherwise the node will never catch up to the current state. There are some hardware factors that determine the speed of the state healing (speed of disk read/write and internet connection) and also the total gas used in each block (more gas means more changes to the state that have to be handled). To summarize, snap sync progresses in the following sequence: - download and verify headers -- download block bodies and receipts.In parallel, download raw state data and build state trie +- download block bodies and receipts. In parallel, download raw state data and build state trie - heal state trie to account for newly arriving data -**Note** Snap sync is the default behaviour, so if the `--syncmode` value is not passed to Geth at startup, -Geth will use snap sync. A node that is started using `snap` will switch to block-by-block sync once it has -caught up to the head of the chain. +**Note** Snap sync is the default behaviour, so if the `--syncmode` value is not passed to Geth at startup, Geth will use snap sync. A node that is started using `snap` will switch to block-by-block sync once it has caught up to the head of the chain. ### Full -A full sync generates the current state by executing every block starting from the genesis block. A full sync -indendently verifies proof-of-work and block provenance as well as all state transitions by re-executing the -transactions in the entire historical sequence of blocks. Only the most recent 128 block states are stored in a full -node - older block states are pruned periodically and represented as a series of checkpoints from which any previous -state can be regenerated on request. 128 blocks is about 25.6 minutes of history with a block time of 12 seconds. +A full sync generates the current state by executing every block starting from the genesis block. A full sync indendently verifies proof-of-work and block provenance as well as all state transitions by re-executing the transactions in the entire historical sequence of blocks. Only the most recent 128 block states are stored in a full node - older block states are pruned periodically and represented as a series of checkpoints from which any previous state can be regenerated on request. 128 blocks is about 25.6 minutes of history with a block time of 12 seconds. + To create a full node pass `--syncmode full` at startup. ## Archive nodes -An archive node is a node that retains all historical data right back to genesis. There is no need to regenerate -any data from checkpoints because all data is directly available in the node's own storage. Archive nodes are -therefore ideal for making fast queries about historical states. At the time of writing (September 2022) a full -archive node that stores all data since genesis occupies nearly 12 TB of disk space (keep up with the current -size on [Etherscan](https://etherscan.io/chartsync/chainarchive)). Archive nodes are created by configuring Geth's -garbage collection so that old data is never deleted: `geth --syncmode full --gcmode archive`. +An archive node is a node that retains all historical data right back to genesis. There is no need to regenerate any data from checkpoints because all data is directly available in the node's own storage. Archive nodes are therefore ideal for making fast queries about historical states. At the time of writing (September 2022) a full archive node that stores all data since genesis occupies nearly 12 TB of disk space (keep up with the current size on [Etherscan](https://etherscan.io/chartsync/chainarchive)). Archive nodes are created by configuring Geth's garbage collection so that old data is never deleted: `geth --syncmode full --gcmode archive`. -It is also possible to create a partial/recent archive node where the node was synced using `snap` but the state -is never pruned. This creates an archive node that saves all state data from the point that the node first syncs. -This is configured by starting Geth with `--syncmode snap --gcmode archive`. +It is also possible to create a partial/recent archive node where the node was synced using `snap` but the state is never pruned. This creates an archive node that saves all state data from the point that the node first syncs. This is configured by starting Geth with `--syncmode snap --gcmode archive`. ## Light nodes -A light node syncs very quickly and stores the bare minimum of blockchain data. Light nodes only process block -headers, not entire blocks. This greatly reduces the computation time, storage and bandwidth required relative to a -full node. This means light nodes are suitable for resource-constrained devices and can catch up to the head of the -chain much faster when they are new or have been offline for a while. The trade-off is that light nodes rely heavily -on data served by altruistic full nodes. A light client can be used to query data from Ethereum and submit transactions, -acting as a locally-hosted Ethereum wallet. However, because they don't keep local copies of the Ethereum state, light -nodes can't validate blocks in the same way as full nodes - they receive a proof from the full node and verify it against their local header chain. -To start a node in light mode, pass `--syncmode light`. Be aware that full nodes serving light data are relative scarce -so light nodes can struggle to find peers. +A light node syncs very quickly and stores the bare minimum of blockchain data. Light nodes only process block headers, not entire blocks. This greatly reduces the computation time, storage and bandwidth required relative to a full node. This means light nodes are suitable for resource-constrained devices and can catch up to the head of the chain much faster when they are new or have been offline for a while. The trade-off is that light nodes rely heavily on data served by altruistic full nodes. A light client can be used to query data from Ethereum and submit transactions, acting as a locally-hosted Ethereum wallet. However, because they don't keep local copies of the Ethereum state, light nodes can't validate blocks in the same way as full nodes - they receive a proof from the full node and verify it against their local header chain. To start a node in light mode, pass `--syncmode light`. Be aware that full nodes serving light data are relative scarce so light nodes can struggle to find peers. Read more about light nodes on our [LES page](/docs/interface/les.md). ## Consensus layer syncing -Now that Ethereum has switched to proof-of-stake, all consensus logic and block propagation is handled by consensus clients. -This means that syncing the blockchain is a process shared between the consensus and execution clients. Blocks are -downloaded by the consensus client and verified by the execution client. In order for Geth to sync, it requires a header from -its connected consensus client. Geth does not import any data until it is instructed to by the consensus client. +Now that Ethereum has switched to proof-of-stake, all consensus logic and block propagation is handled by consensus clients. This means that syncing the blockchain is a process shared between the consensus and execution clients. Blocks are downloaded by the consensus client and verified by the execution client. In order for Geth to sync, it requires a header from its connected consensus client. Geth does not import any data until it is instructed to by the consensus client. -Once a header is available to use as a syncing target, Geth retrieves all headers between that target header and the -local header chain in reverse chronological order. These headers show that the sequence of blocks is correct because -the parenthashes link one block to the next right up to the target block. Eventually, the sync will reach a block held -in the local database, at which point the local data and the target data are considered 'linked' and there is a very high -chance the node is syncing the correct chain. The block bodies are then downloaded and then the state data. The consensus -client can update the target header - as long as the syncing outpaces the growth of the blockchain then the node will eventually -get in sync. +Once a header is available to use as a syncing target, Geth retrieves all headers between that target header and the local header chain in reverse chronological order. These headers show that the sequence of blocks is correct because the parenthashes link one block to the next right up to the target block. Eventually, the sync will reach a block held in the local database, at which point the local data and the target data are considered 'linked' and there is a very high chance the node is syncing the correct chain. The block bodies are then downloaded and then the state data. The consensus client can update the target header - as long as the syncing outpaces the growth of the blockchain then the node will eventually get in sync. -There are two ways for the consensus client to find a block header that Geth can use as a sync target: optimistic syncing and -checkpoint syncing: +There are two ways for the consensus client to find a block header that Geth can use as a sync target: optimistic syncing and checkpoint syncing: ### Optimistic sync -Optimistic sync downloads blocks before the execution client has validated them. In optimistic sync the node assumes -the data it receives from its peers is correct during the downloading phase but then retroactively verifies each -downloaded block. Nodes are not allowed to attest or propose blocks while they are still 'optimistic' because they -can't yet guarantee their view of the head of the chain is correct. +Optimistic sync downloads blocks before the execution client has validated them. In optimistic sync the node assumes the data it receives from its peers is correct during the downloading phase but then retroactively verifies each downloaded block. Nodes are not allowed to attest or propose blocks while they are still 'optimistic' because they can't yet guarantee their view of the head of the chain is correct. Read more in the [optimistic sync specs](https://github.com/ethereum/consensus-specs/blob/dev/sync/optimistic.md). ### Checkpoint sync -Alternatively, the consensus client can grab a checkpoint from a trusted source which provides a target state to sync -up to, before switching to full sync and verifying each block in turn. In this mode, the node trusts that the checkpoint -is correct. There are many possible sources for this checkpoint - the gold standard would be to get it out-of-band -from another trusted friend, but it could also come from block explorers or public APIs/web apps. +Alternatively, the consensus client can grab a checkpoint from a trusted source which provides a target state to sync up to, before switching to full sync and verifying each block in turn. In this mode, the node trusts that the checkpoint is correct. There are many possible sources for this checkpoint - the gold standard would be to get it out-of-band from another trusted friend, but it could also come from block explorers or public APIs/web apps. **Note** it is not currently possible to use a Geth light node as an execution client on proof-of-stake Ethereum. ## Summary -There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all -blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative -is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only -checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node -is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. -The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. -These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, -`--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, -light-sync dot not work (new light client protocols are being developed). \ No newline at end of file +There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, `--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, light-sync dot not work (new light client protocols are being developed). \ No newline at end of file From 0c543bf5376f3dbf508e9a3e708177ebdac2eaa6 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 27 Sep 2022 15:04:39 +0100 Subject: [PATCH 07/15] fix typo --- src/pages/docs/fundamentals/sync-modes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/docs/fundamentals/sync-modes.md b/src/pages/docs/fundamentals/sync-modes.md index 10bbf20d42..18284b4ab5 100644 --- a/src/pages/docs/fundamentals/sync-modes.md +++ b/src/pages/docs/fundamentals/sync-modes.md @@ -63,4 +63,4 @@ Alternatively, the consensus client can grab a checkpoint from a trusted source ## Summary -There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, `--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, light-sync dot not work (new light client protocols are being developed). \ No newline at end of file +There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, `--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, light-sync does not work (new light client protocols are being developed). \ No newline at end of file From df52f6ca0b7212760af51ecc65e0b244f02f11b1 Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 30 Sep 2022 09:32:40 +0100 Subject: [PATCH 08/15] add list of redirects to url-list.csv --- url-list.csv | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/url-list.csv b/url-list.csv index 4465d8508f..b58730f5ea 100644 --- a/url-list.csv +++ b/url-list.csv @@ -1,9 +1,9 @@ OLD Geth website URLS,Equivalent NEW website URLs,Relative path to markdown file,Notes https://geth.ethereum.org/,https://geth.ethereum.org,src/pages/homepage,will be react page https://geth.ethereum.org/downloads/,https://geth.ethereum.org/downloads,src/pages/downloads,will be react page -https://geth.ethereum.org/docs/,https://geth.ethereum.org/docs,src/pages/docs,n/a -https://geth.ethereum.org/docs/getting-started,https://geth.ethereum.org/docs/getting_started,src/pages/docs/getting_started/getting_started.md,n/a -https://geth.ethereum.org/docs/getting-started/geth-and-clef,https://geth.ethereum.org/docs/getting_started_with_clef.md,src/pages/docs/getting_started/getting-started-with-clef.md,n/a +https://geth.ethereum.org/docs/,https://geth.ethereum.org/docs,src/pages/docs/index.md,n/a +https://geth.ethereum.org/docs/getting-started,https://geth.ethereum.org/docs/getting_started/getting-started,src/pages/docs/getting_started/getting_started.md,n/a +https://geth.ethereum.org/docs/getting-started/geth-and-clef,https://geth.ethereum.org/docs/getting_started_with_clef,src/pages/docs/getting_started/getting-started-with-clef.md,n/a https://geth.ethereum.org/docs/getting-started/dev-mode,https://geth.ethereum.org/docs/developers/geth-developers/dev-mode,src/pages/docs/developers/geth-developer/dev-mode.md,n/a https://geth.ethereum.org/docs/install-and-build/installing-geth,https://geth.ethereum.org/docs/getting_started/install-geth,src/pages/docs/getting_started/backup-restore.md,n/a https://geth.ethereum.org/docs/install-and-build/backup-restore,https://geth.ethereum.org/docs/getting_started/backup-restore,src/pages/docs/getting_started/installing-geth.md,n/a @@ -53,6 +53,8 @@ https://geth.ethereum.org/docs/clef/rules,https://geth.ethereum.org/docs/tools/c https://geth.ethereum.org/docs/clef/setup,https://geth.ethereum.org/docs/tools/clef/setup,src/pages/docs/tools/clef/setup.md,n/a https://geth.ethereum.org/docs/clef/apis,https://geth.ethereum.org/docs/tools/clef/apis,src/pages/docs/tools/clef/apis.md,n/a https://geth.ethereum.org/docs/clef/datatypes,https://geth.ethereum.org/docs/tools/clef/datatypes,src/pages/docs/tools/clef/datatypes.md,n/a +https://geth.ethereum.org/docs/interface/sync-modes,https://geth.ethereum.org/docs/interface/sync-modes,src/pages/docs/fundamentals/sync-modes.md,n/a +https://geth.ethereum.org/docs/interface/hardware,https://geth.ethereum.org/docs/interface/getting_started/hardware-requirements.md,, https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json,https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json,src/pages/docs/vulnerabilities/vulnerabilities.json,must be served at original URL https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json.minisig,https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.json.minisig,src/pages/docs/vulnerabilities/vulnerabilities.json.minisig,must be served at original URL https://github.com/ethereum/go-ethereum/tree/gh-pages/docs/_vulnerabilities/vulnerabilities.md,https://geth.ethereum.org/docs/developers/geth-developers/discloures,src/pages/docs/developers/geth-developers/disclosures,moved to /docs and renamed From 41aa61dbecfbb7cf9f07d0c5ba02dff1d44b3473 Mon Sep 17 00:00:00 2001 From: Joseph Cook <33655003+jmcook1186@users.noreply.github.com> Date: Fri, 30 Sep 2022 13:28:38 +0100 Subject: [PATCH 09/15] fix note format --- src/pages/docs/fundamentals/mining.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/docs/fundamentals/mining.md b/src/pages/docs/fundamentals/mining.md index 971dd076b9..5cf29a2da4 100644 --- a/src/pages/docs/fundamentals/mining.md +++ b/src/pages/docs/fundamentals/mining.md @@ -3,7 +3,7 @@ title: Proof-of-work mining with Ethash description: Introduction to proof-of-work mining with Geth --- -{% include note.html content=" Proof-of-work mining is **no longer used to secure Ethereum Mainnet**. The information below is included because the Ethash code is still part of Geth and it could be used to create a private proof-of-work network or testnet. %} +{% include note.html content=" Proof-of-work mining is **no longer used to secure Ethereum Mainnet**. The information below is included because the Ethash code is still part of Geth and it could be used to create a private proof-of-work network or testnet." %} Blockchains grow when nodes add blocks and distribute them to their peers. Nodes that add blocks are rewarded with ether payouts. On Ethereum Mainnet, the proof-of-stake consensus engine randomyl selects a node to produce each block. Under proof-of-work, however, block producers are selected by competition. The node that computes a certain value that can only be found using repeated random guesses wins the right to propose the next block. Only if a node can demonstrate that they have calculated this value, and therefore expended energy, will their block be accepted by other nodes. This secures the network. This process of creating blocks and securing them using proof-of-work is known as "mining". From c8ec6465298a345b4b93bdefbc7089e192191c44 Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 30 Sep 2022 13:44:54 +0100 Subject: [PATCH 10/15] update mining page --- src/pages/docs/fundamentals/mining.md | 54 +++++++++++++++------------ 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/src/pages/docs/fundamentals/mining.md b/src/pages/docs/fundamentals/mining.md index 5cf29a2da4..68a37983d6 100644 --- a/src/pages/docs/fundamentals/mining.md +++ b/src/pages/docs/fundamentals/mining.md @@ -2,18 +2,21 @@ title: Proof-of-work mining with Ethash description: Introduction to proof-of-work mining with Geth --- +{% include note.html content=" Proof-of-work mining is no longer used to secure Ethereum Mainnet. The information below is included because the Ethash code is still part of Geth and it could be used to create a private proof-of-work network or testnet." %} -{% include note.html content=" Proof-of-work mining is **no longer used to secure Ethereum Mainnet**. The information below is included because the Ethash code is still part of Geth and it could be used to create a private proof-of-work network or testnet." %} +Blockchains grow when individual nodes create valid blocks and distribute them to their peers who check the blocks and add them to their own local databases. +Nodes that add blocks are rewarded with ether payouts. On Ethereum Mainnet, the proof-of-stake consensus engine randomly selects a node to produce each block. -Blockchains grow when nodes add blocks and distribute them to their peers. Nodes that add blocks are rewarded with ether payouts. On Ethereum Mainnet, the proof-of-stake consensus engine randomyl selects a node to produce each block. Under proof-of-work, however, block producers are selected by competition. The node that computes a certain value that can only be found using repeated random guesses wins the right to propose the next block. Only if a node can demonstrate that they have calculated this value, and therefore expended energy, will their block be accepted by other nodes. This secures the network. This process of creating blocks and securing them using proof-of-work is known as "mining". +Ethereum wasn't always secured this way. Originally, a proof-of-work based consensus mechanism was used instead. Under proof-of-work, block producers are not selected randomly in each slot. Instead they compete for the right to add a block. The node that is fastest to compute a certain value that can only be found using brute force calculations is the one that gets to add a block. Only if a node can demonstrate that they have calculated this value, and therefore expended energy, will their block be accepted by other nodes. This process of creating blocks and securing them using proof-of-work is known as "mining". -Much more information about mining, including details about the specific algorithm ("Ethash") used by Ethereum nodes is available on [ethereum.org](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/mining). +Much more information about mining, including details about the specific algorithm ("Ethash") used by Ethereum nodes is available on [ethereum.org](http://ethereum.org). ## CPU vs GPU -Participating in Ethereum's PoW mining requires running an algorithm called ["Ethash"](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash). Geth includes a CPU miner which runs Ethash within the Geth process. This might be useful for mining on testnets or private networks where competition for producing new blocks is small. When minign was used to secure Ethereum Mainnet, CPU mining was not viable because CPU miners were easily outcompeted by more efficient GPU miners. To mine using GPUs an additional piece of third-party software is required. The recommended GPU mining software is [Ethminer](https://github.com/ethereum-mining/ethminer). +Ethereum mining used an algorithm called ["Ethash"](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash). Geth includes a CPU miner which runs Ethash within the Geth process. Everything required to mine on a CPU is bundled with Geth. However, to mine using GPUs an additional piece of third-party software is required. The most commonly used GPU mining software is [Ethminer](https://github.com/ethereum-mining/ethminer). + +Regardless of the mining method, the blockchain must be fully synced before mining is started, otherwise the miner will build on an outdated side chain,meaning block rewards will not be recognized by the main network. -Regardless of the mining method, the blockchain must be fully synced before mining is started, otherwise the miner will build on an outdated side chain, meaning block rewards will not be recognized by the main network. ## GPU Mining @@ -23,15 +26,16 @@ The Ethminer software can be installed from a downloaded binary or built from so ### Using Ethminer with Geth -An account to receive block rewards must first be defined. The address of the account is all that is required to start mining - the mining rewards will be credited to that address. This can be an existing address or one that is newly created by Geth. More detailed instructions on creating and importing accounts are available on the [Account Management](/content/docs/fundamentals/account-management.md) page. -The account address can be provided to `--mining.etherbase` when Geth is started. This instructs Geth to direct any block rewards to this address. Once started, Geth will sync the blockchain. If Geth has not connected to this network before, or if the data directory has been deleted, this can take several days. Also, enable HTTP traffic with the `--http` command. To reiterate, mining does **not work on Ethereum, Mainnet** since the transition to proof-of-stake. +An account to receive block rewards must first be defined. The address of the account is all that is required to start mining - the mining rewards will be credited to that address. This can be an existing address or one that is newly created by Geth. More detailed instructions on creating and importing accounts are available on the [Account Management](/docs/interface/managing-your-accounts) page. + +The account address can be provided to `--mining.etherbase` when Geth is started. This instructs Geth to direct any block rewards to this address. Once started, Geth will sync the blockchain. If Geth has not connected to this network before, or if the data directory has been deleted, this can take several days. Also, enable HTTP traffic with the `--http` command. ```shell geth --http --miner.etherbase 0xC95767AC46EA2A9162F0734651d6cF17e5BfcF10 ``` -The progress of the blockchain syncing can be monitored by attaching a JavaScript console in another terminal. More detailed information about the console can be found on the [Javascript Console](/content/docs/interacting_with_geth/JavaScript-Console.md) page. To attach and open a console: +The progress of the blockchain syncing can be monitored by attaching a JavaScript console in another terminal. More detailed information about the console can be found on the [Javascript Console](/docs/interface/javascript-console) page. To attach and open a console: ```shell geth attach http://127.0.0.1:8545 @@ -65,7 +69,7 @@ If the sync is progressing correctly the output will look similar to the followi } ``` -Once the blockchain is sync'd, mining can begin. In order to begin mining, Ethminer must be run and connected to Geth in a new terminal. OpenCL can be used for a wide range of GPUs, CUDA can be used specifically for Nvidia GPUs: +Once the blockchain is synced, mining can begin. In order to begin mining, Ethminer must be run and connected to Geth in a new terminal. OpenCL can be used for a wide range of GPUs, CUDA can be used specifically for Nvidia GPUs: ```shell #OpenCL @@ -87,9 +91,10 @@ Benchmarking on platform: { "platform": "NVIDIA CUDA", "device": "GeForce GTX 75 Benchmarking on platform: { "platform": "Apple", "device": "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz", "version": "OpenCL 1.2 " } ``` -Note that the Geth command `miner.hashrate` only works for CPU mining - it always reports zero for GPU mining. To check the GPU mining hashrate, check the logs `ethminer` displays to its terminal. More verbose logs can be configured using `-v` and a value between 0-9. +Note that the Geth command `miner.hashrate` only works for CPU mining - it always reports zero for GPU mining. To check the GPU mining hashrate, check the logs `ethminer` displays to its terminal. + +More verbose logs can be configured using `-v` and a value between 0-9. The Ethash algorithm is [memory-hard](https://crypto.stackexchange.com/questions/84002/memory-hard-vs-memory-bound-functions) and requires a large dataset to be loaded into memory. Each GPU requires 4-5 GB of RAM. The error message `Error GPU mining. GPU memory fragmentation?` indicates that there is insufficient memory available. -The Ethash algorithm is [memory-hard](https://crypto.stackexchange.com/questions/84002/memory-hard-vs-memory-bound-functions) and requires a large dataset to be loaded into memory. Each GPU requires 4-5 GB of RAM. The error message `Error GPU mining. GPU memory fragmentation?` indicates that there is insufficient memory available. ## CPU Mining with Geth @@ -102,13 +107,13 @@ geth --mine --miner.threads=4 CPU mining can also be started and stopped at runtime using the [console](/docs/interface/javascript-console). The command `miner.start` takes an optional parameter for the number of miner threads. ```js -miner.start(8); -true; -miner.stop(); -true; +miner.start(8) + true +miner.stop() + true ``` -Note that mining for real ether only makes sense if you are in sync with the network (since you mine on top of the consensus block). Therefore the Ethereum blockchain downloader/synchroniser will delay mining until syncing is complete, and after that mining automatically starts unless you cancel your intention with `miner.stop()`. +Note that mining only makes sense if you are in sync with the network (since you mine on top of the consensus block). Therefore the blockchain downloader/synchroniser will delay mining until syncing is complete, and after that mining automatically starts unless you cancel with `miner.stop()`. Like with GPU mining, an etherbase account must be set. This defaults to the primary account in the keystore but can be set to an alternative address using the `--miner.etherbase` command: @@ -150,26 +155,29 @@ It is also possible to check which blocks were mined by a particular miner (addr function minedBlocks(lastn, addr) { addrs = []; if (!addr) { - addr = eth.coinbase; + addr = eth.coinbase } - limit = eth.blockNumber - lastn; + limit = eth.blockNumber - lastn for (i = eth.blockNumber; i >= limit; i--) { if (eth.getBlock(i).miner == addr) { - addrs.push(i); + addrs.push(i) } } - return addrs; + return addrs } // scans the last 1000 blocks and returns the blocknumbers of blocks mined by your coinbase // (more precisely blocks the mining reward for which is sent to your coinbase). -minedBlocks(1000, eth.coinbase)[(352708, 352655, 352559)]; +minedBlocks(1000, eth.coinbase) +[352708, 352655, 352559] + ``` -The etherbase balance will fluctuate because quite often a mined block may be re-org'd out of the canonical chain. This means that when the local Geth node includes the mined block in its own local blockchain the account balance appears higher because the block rewards are applied. When the node switches to another version of the chain due to information received from peers, that block may not be included and the block rewards are not applied. +The etherbase balance will fluctuate if a mined block is re-org'd out of the canonical chain. This means that when the local Geth node includes the mined block +in its own local blockchain the account balance appears higher because the block rewards are applied. When the node switches to another version of the chain due to information received from peers, that block may not be included and the block rewards are not applied. The logs show locally mined blocks confirmed after 5 blocks. ## Summary -The page describes how to start Geth as a mining node. Mining can be done on CPUs - in which case Geth's built-in miner can be used - or on GPUs which requires third party software. Mining is no longer used on Ethereum Mainnet so this information is only applicable to private proof-of-work networks or testnets. +The page describes how to start Geth as a mining node. Mining can be done on CPUs - in which case Geth's built-in miner can be used - or on GPUs which requires third party software. Mining is **no longer used to secure Ethereum Mainnet**. From 79bd2a1e83ad363c8dc51358fe69f9551538358e Mon Sep 17 00:00:00 2001 From: Joe Date: Fri, 30 Sep 2022 15:06:35 +0100 Subject: [PATCH 11/15] add missing image --- public/images/clef_ruleset.png | Bin 0 -> 306064 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/clef_ruleset.png diff --git a/public/images/clef_ruleset.png b/public/images/clef_ruleset.png new file mode 100644 index 0000000000000000000000000000000000000000..e32d66e2318d1261f67b5f5198b1e2d4a60dfffb GIT binary patch literal 306064 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⁢C&JCb-%{Uq9 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 Z1J*w3vny0!{~>6lhYXDMar^A9{vY9p&Sn4r literal 0 HcmV?d00001 From e54b879469c9cf53c27bef6240585baa881ddec8 Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 4 Oct 2022 14:54:38 +0100 Subject: [PATCH 12/15] initial commit for logs page --- src/pages/docs/fundamentals/logs.md | 159 ++++++++++++++++++++++++++++ 1 file changed, 159 insertions(+) create mode 100644 src/pages/docs/fundamentals/logs.md diff --git a/src/pages/docs/fundamentals/logs.md b/src/pages/docs/fundamentals/logs.md new file mode 100644 index 0000000000..a7787c2597 --- /dev/null +++ b/src/pages/docs/fundamentals/logs.md @@ -0,0 +1,159 @@ +--- +title: Geth logs +description: Geth's log messages explained +--- + +A Geth node continually reports messages to the console allowing users to monitor Geth's current status in real-time. The logs indicate when Geth is running normally and indicates when some attention is required. However, reading these logs can be difficult for new users. This page will help to interpret the log messages to better understand what Geth is doing. + +## Configuring log messages + +Log messages are displayed to the console by default. The messages can be tuned to be more or less detailed by passing `--verbosity` and a value between 0 and 6 to Geth at startup: + +```sh +0 = silent (no log messages) +1 = error (error messages only) +2 = warn (error messages and warnings only) +3 = info (error messages, warnings and normal activity logs) +4 = debug (all info plus additional messages for debugging) +5 = detail (all info plus detailed debugging messages) +``` +The default is `--verbosity 3`. + +Log messages can also be redirected so they are saved to a text file instead of being displayed in the console. In Linux the syntax `>> 2>&1` redirects both `stdout` and `stderr` messages to ``. For example: + +```sh +# saves detailed logs to path/eth.log +geth --verbosity 5 >> /path/eth.log 2>&1 +``` + +### Startup + +When Geth starts up it immediately reports a fairly long page of configuration details and status reports that allow the user to confirm Geth is on the right network and operating in its intended modes. The b asic structure of a log message is as follows: + +``` +MESSAGE_TYPE [MONTH-DAY][TIME] MESSAGE VALUE +``` +Where `MESSAGE_TYPE` can be `INFO`, `WARN`, `ERROR` or `DEBUG`. These tags categorize log messages according to their purpose. `INFO` messages inform the user about Geth's current configuration and status. `WARN` messages are for alerting the user to details that may affect the way Geth is going to continue running. `ERROR` messages are for alerting the user to problems. `DEBUG` is for messages that are relevant to troubleshooting or for developers working on Geth. + +The messages displayed on startup break down as follows: + +``` +INFO [10-04|10:20:52.028] Starting Geth on Ethereum mainnet... +INFO [10-04|10:20:52.028] Bumping default cache on mainnet provided=1024 updated=4096 +INFO [10-04|10:20:52.030] Maximum peer count ETH=50 LES=0 total=50 +INFO [10-04|10:20:52.031] Smartcard socket not found, disabling err="stat /run/pcscd/pcscd.comm: no such file or directory" +INFO [10-04|10:20:52.034] Set global gas cap cap=50,000,000 +INFO [10-04|10:20:52.035] Allocated trie memory caches clean=614.00MiB dirty=1024.00MiB +INFO [10-04|10:20:52.035] Allocated cache and file handles database=/home/go-ethereum/devnet/geth/chaindata cache=2.00GiB handles=524,288 +INFO [10-04|10:20:52.128] Opened ancient database database=/home/go-ethereum/devnet/geth/chaindata/ancient/chain readonly=false +INFO [10-04|10:20:52.129] Disk storage enabled for ethash caches dir=/home/go-ethereum/devnet/geth/ethash count=3 +INFO [10-04|10:20:52.129] Disk storage enabled for ethash DAGs dir=/home/.ethash count=2 +INFO [10-04|10:20:52.129] Initialising Ethereum protocol network=1 dbversion= +INFO [10-04|10:20:52.129] Writing default main-net genesis block +INFO [10-04|10:20:52.372] Persisted trie from memory database nodes=12356 size=1.78MiB time=21.535537ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B +``` + +This block of logs shows the user that the node is connecting to Ethereum Mainnet and some low level configuration details. The cache size is bumped to the Mainnet default (4096). The maximum peer count is the highest number of peers this node is allowed to connect to and can be used to control the bandwidth requirements of the node. Logs relating to `ethash` are out of date since Ethereum moved to proof-of-stake based consensus and can safely be ignored. + + +``` +--------------------------------------------------------------------------------------------------------------------------------------------------------- +INFO [10-04|10:20:52.386] Chain ID: 1 (mainnet) +INFO [10-04|10:20:52.386] Consensus: Beacon (proof-of-stake), merged from Ethash (proof-of-work) +INFO [10-04|10:20:52.386] +INFO [10-04|10:20:52.386] Pre-Merge hard forks: +INFO [10-04|10:20:52.386] - Homestead: 1150000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/homestead.md) +INFO [10-04|10:20:52.386] - DAO Fork: 1920000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/dao-fork.md) +INFO [10-04|10:20:52.386] - Tangerine Whistle (EIP 150): 2463000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/tangerine-whistle.md) +INFO [10-04|10:20:52.386] - Spurious Dragon/1 (EIP 155): 2675000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md) +INFO [10-04|10:20:52.386] - Spurious Dragon/2 (EIP 158): 2675000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md) +INFO [10-04|10:20:52.386] - Byzantium: 4370000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/byzantium.md) +INFO [10-04|10:20:52.386] - Constantinople: 7280000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/constantinople.md) +INFO [10-04|10:20:52.386] - Petersburg: 7280000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/petersburg.md) +INFO [10-04|10:20:52.386] - Istanbul: 9069000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/istanbul.md) +INFO [10-04|10:20:52.387] - Muir Glacier: 9200000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/muir-glacier.md) +INFO [10-04|10:20:52.387] - Berlin: 12244000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/berlin.md) +INFO [10-04|10:20:52.387] - London: 12965000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md) +INFO [10-04|10:20:52.387] - Arrow Glacier: 13773000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md) +INFO [10-04|10:20:52.387] - Gray Glacier: 15050000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/gray-glacier.md) +``` + +The above block of messages are related to past Ethereum hard forks. The names are the names of the hard forks and the numbers are the blocks at which the hard fork occurs. This means that blocks with numbers that exceed these values have the configuration required by that hard fork. The specification of each hard fork is available at the provided links (and more information is available on [ethereum.org](https://ethereum.org/en/history/)). The message `Consensus: Beacon (proof-of-stake), merged from Ethash (proof-of-work)` indicates that the node requires a Beacon node to follow the canonical chain - Geth cannot participate in consensus on its own. + +``` +INFO [10-04|10:20:52.387] Merge configured: +INFO [10-04|10:20:52.387] - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md +INFO [10-04|10:20:52.387] - Network known to be merged: true +INFO [10-04|10:20:52.387] - Total terminal difficulty: 58750000000000000000000 +INFO [10-04|10:20:52.387] - Merge netsplit block: +INFO [10-04|10:20:52.387] +INFO [10-04|10:20:52.388] Chain post-merge, sync via beacon client +WARN [10-04|10:20:52.388] Engine API enabled protocol=eth +--------------------------------------------------------------------------------------------------------------------------------------------------------- +``` + +The messages above relate to [The Merge](https://ethereum.org/en/upgrades/merge/). The Merge was Ethereum's transition from proof-of-work to proof-of-stake based consensus. In Geth, The Merge came in the form of the Paris hard fork which was triggered at a [terminal total difficulty](https://ethereum.org/en/glossary/#terminal-total-difficulty) of 58750000000000000000000 instead of a preconfigured block number like previous hard forks. The hard fork specification is linked in the log message. The message `network known to be merged: true` indicates that the node is following a chain that has passed the terminal total difficulty and undergone the Paris hard fork. Since September 15 2022 this will always be true for nodes on Ethereum Mainnet (and the merged testnets Sepolia and Goerli). The warning `Engine API enabled` informs the user that Geth is exposing the set of API methods required for communication with a consensus client. + +``` +INFO [10-04|10:20:52.389] Starting peer-to-peer node instance=Geth/v1.11.0-unstable-e004e7d2-20220926/linux-amd64/go1.19.1 +INFO [10-04|10:20:52.409] New local node record seq=1,664,875,252,408 id=9aa0e5b14ccd75ec ip=127.0.0.1 udp=30303 tcp=30303 +INFO [10-04|10:20:52.409] Started P2P networking self=enode://1ef45ab610c2893b70483bf1791b550e5a93763058b0abf7c6d9e6201e07212d61c4896d64de07342c9df734650e3b40812c2dc01f894b6c385acd180ed30fc8@127.0.0.1:30303 +INFO [10-04|10:20:52.410] IPC endpoint opened url=/home/go-ethereum/devnet/geth.ipc +INFO [10-04|10:20:52.410] Generated JWT secret path=/home/go-ethereum/devnet/geth/jwtsecret +INFO [10-04|10:20:52.411] HTTP server started endpoint=127.0.0.1:8545 auth=false prefix= cors= vhosts=localhost +INFO [10-04|10:20:52.411] WebSocket enabled url=ws://127.0.0.1:8551 +INFO [10-04|10:20:52.411] HTTP server started endpoint=127.0.0.1:8551 auth=true prefix= cors=localhost vhosts=localhost +INFO [10-04|10:20:54.785] New local node record seq=1,664,875,252,409 id=9aa0e5b14ccd75ec ip=82.11.59.221 udp=30303 tcp=30303 +INFO [10-04|10:20:55.267] Mapped network port proto=udp extport=30303 intport=30303 interface="UPNP IGDv1-IP1" +INFO [10-04|10:20:55.833] Mapped network port proto=tcp extport=30303 intport=30303 interface="UPNP IGDv1-IP1" +INFO [10-04|10:21:03.100] Looking for peers peercount=0 tried=20 static=0 +``` + +The logs above relate to Geth starting up its peer-to-peer components and seeking other nodes to connect to. The long address reported to `Started P2P networking` is the nodes own enode address. The `IPC Endpoint` is the location of the node's IPC file that can be used to connect a Javascript console. There is a log message confirming that a JWT secret was generated and reporting its path. This is required to authenticate communication between Geth and the consensus client. There are also messages here reporting on the HTTP server that can be used to send requests to Geth. There should be two HTTP servers - one for interacting with Geth (defaults to `localhost:8545`) and one for communication with the consensus client (defaults to `localhost:8551`). + + +### Syncing + +The default for Geth is to sync in snap mode. This requires a block header to be provided to Geth by the consensus client. The header is then used as a target to sync to. Geth requests block headers from its peers that are parents of the target until there is a continuous chain of sequential headers of sufficient length. Then, Geth requests block bodies and receipts for each header and simultaneously starts downloading state data. This state data is stored in the form of a [Patricia Merkle Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/). Only the leaves of the trie are downloaded, the full trie structure is then locally regenerated from the leaves up. Meanwhile, the blockchain continues to progress and the target header is updated. This means some of the regenerated state data needs to be updated. This is known as *healing*. + +Assuming Geth has a synced consensus client and some peers it will start importing headers, block bodies and receipts. The log messages for data downloading look as follows: + +``` +INFO [07-28|10:29:50.427] Imported new block headers count=1 elapsed=253.434ms number=12,914,945 hash=ee1a08..9ce38a +INFO [07-28|10:30:00.224] Imported new block receipts count=64 elapsed=13.703s number=12,914,881 hash=fef964..d789fc age=18m5s size=7.69MiB +INFO [07-28|10:30:18.658] Imported new block headers count=1 elapsed=46.715ms number=12,914,946 hash=7b24c8..2d8006 +``` + +For state data + +``` +INFO [07-28|10:30:21.965] State heal in progress accounts=169,633@7.48MiB slots=57314@4.17MiB codes=4895@38.14MiB nodes=43,293,196@11.70GiB pending=112,626 +INFO [07-28|10:30:21.969] State heal in progress accounts=169,633@7.48MiB slots=57314@4.17MiB codes=4895@38.14MiB nodes=43,293,196@11.70GiB pending=112,626 +``` + + +```sh +# consensus client has identified a new head to use as a sync target - account for this in state sync +INFO [10-03|15:34:01.336] Forkchoice requested sync to new head number=15,670,037 hash=84d4ec..4c0e2b + +``` + + + +## Common Error messages + + +```sh +# the following indicates a request timeout, may indicate IO speed is low. +WARN [10-03|18:00:40.413] Unexpected trienode heal packet peer=9f0e8fbf reqid=6,915,308,639,612,522,441 +``` + +```sh +# no consensus client +WARN [10-03|13:10:26.441] Post-merge network, but no beacon client seen. Please launch one to follow the chain! +``` + +```sh +# consensus client is not working, most likely it is not in sync yet - swapping cl to checkpoint sync is fastest +WARN [10-03 |13:10:26.499] Beacon client online, but never received consensus updates. Please ensure your beacon client is operational to follow the chain! +``` \ No newline at end of file From 07137a2ec33f96578af40c53fe27c7c858ffeb72 Mon Sep 17 00:00:00 2001 From: Joe Date: Wed, 5 Oct 2022 10:37:08 +0100 Subject: [PATCH 13/15] add logs page and update mining page --- src/pages/docs/fundamentals/logs.md | 55 +++++++++++++++++++++------ src/pages/docs/fundamentals/mining.md | 4 +- 2 files changed, 46 insertions(+), 13 deletions(-) diff --git a/src/pages/docs/fundamentals/logs.md b/src/pages/docs/fundamentals/logs.md index a7787c2597..2a15a35372 100644 --- a/src/pages/docs/fundamentals/logs.md +++ b/src/pages/docs/fundamentals/logs.md @@ -5,6 +5,9 @@ description: Geth's log messages explained A Geth node continually reports messages to the console allowing users to monitor Geth's current status in real-time. The logs indicate when Geth is running normally and indicates when some attention is required. However, reading these logs can be difficult for new users. This page will help to interpret the log messages to better understand what Geth is doing. +Note that there are a large number of log messages covering a wide range of possible scenarios for a Geth node. This page will only address a subset of commonly seen messages. For more, see the [Geth Github](https://github.com/ethereum/go-ethereum), [Discord](https://discord.gg/WHNkYDsAKU) or search on [ethereum.stackexchange](https://ethereum.stackexchange.com/). Log messages are usually sufficiently self-descrining that they do not require additional explanation. + + ## Configuring log messages Log messages are displayed to the console by default. The messages can be tuned to be more or less detailed by passing `--verbosity` and a value between 0 and 6 to Geth at startup: @@ -28,12 +31,12 @@ geth --verbosity 5 >> /path/eth.log 2>&1 ### Startup -When Geth starts up it immediately reports a fairly long page of configuration details and status reports that allow the user to confirm Geth is on the right network and operating in its intended modes. The b asic structure of a log message is as follows: +When Geth starts up it immediately reports a fairly long page of configuration details and status reports that allow the user to confirm Geth is on the right network and operating in its intended modes. The basic structure of a log message is as follows: ``` -MESSAGE_TYPE [MONTH-DAY][TIME] MESSAGE VALUE +MESSAGE_TYPE [MONTH-DAY][TIME] MESSAGE VALUE ``` -Where `MESSAGE_TYPE` can be `INFO`, `WARN`, `ERROR` or `DEBUG`. These tags categorize log messages according to their purpose. `INFO` messages inform the user about Geth's current configuration and status. `WARN` messages are for alerting the user to details that may affect the way Geth is going to continue running. `ERROR` messages are for alerting the user to problems. `DEBUG` is for messages that are relevant to troubleshooting or for developers working on Geth. +Where `MESSAGE_TYPE` can be `INFO`, `WARN`, `ERROR` or `DEBUG`. These tags categorize log messages according to their purpose. `INFO` messages inform the user about Geth's current configuration and status. `WARN` messages are for alerting the user to details that affect the way Geth is running. `ERROR` messages are for alerting the user to problems. `DEBUG` is for messages that are relevant to troubleshooting or for developers working on Geth. The messages displayed on startup break down as follows: @@ -53,7 +56,7 @@ INFO [10-04|10:20:52.129] Writing default main-net genesis block INFO [10-04|10:20:52.372] Persisted trie from memory database nodes=12356 size=1.78MiB time=21.535537ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B ``` -This block of logs shows the user that the node is connecting to Ethereum Mainnet and some low level configuration details. The cache size is bumped to the Mainnet default (4096). The maximum peer count is the highest number of peers this node is allowed to connect to and can be used to control the bandwidth requirements of the node. Logs relating to `ethash` are out of date since Ethereum moved to proof-of-stake based consensus and can safely be ignored. +The logs above show the user that the node is connecting to Ethereum Mainnet and some low level configuration details. The cache size is bumped to the Mainnet default (4096). The maximum peer count is the highest number of peers this node is allowed to connect to and can be used to control the bandwidth requirements of the node. Logs relating to `ethash` are out of date since Ethereum moved to proof-of-stake based consensus and can safely be ignored. ``` @@ -119,41 +122,69 @@ The default for Geth is to sync in snap mode. This requires a block header to be Assuming Geth has a synced consensus client and some peers it will start importing headers, block bodies and receipts. The log messages for data downloading look as follows: ``` +INFO [07-28|10:29:49.681] Block synchronisation started INFO [07-28|10:29:50.427] Imported new block headers count=1 elapsed=253.434ms number=12,914,945 hash=ee1a08..9ce38a INFO [07-28|10:30:00.224] Imported new block receipts count=64 elapsed=13.703s number=12,914,881 hash=fef964..d789fc age=18m5s size=7.69MiB INFO [07-28|10:30:18.658] Imported new block headers count=1 elapsed=46.715ms number=12,914,946 hash=7b24c8..2d8006 +INFO [07-28|10:30:21.665] Imported new state entries ``` -For state data +For state sync, Geth reports when the state heal is in progress. This can takea long time. The log message includes values for the number of `accounts`, `slots`, `codes` and `nodes` that were downloaded in the current healing phase, and the pending field is the number of state entires waiting to be downloaded. The `pending` value is not necessarily the number of state entries remaining until the healing is finished. As the blockchain progresses the state trie is updated and therefore the data that needs to be downloaded to heal the trie can increase as well as decrease over time. Ultimately, the state should heal faster than the blockchain progresses so the node can get in sync. When the state healing is finished there is a post-sync snapshot generation phase. The node is not in sync until the state healing phase is over. ``` INFO [07-28|10:30:21.965] State heal in progress accounts=169,633@7.48MiB slots=57314@4.17MiB codes=4895@38.14MiB nodes=43,293,196@11.70GiB pending=112,626 -INFO [07-28|10:30:21.969] State heal in progress accounts=169,633@7.48MiB slots=57314@4.17MiB codes=4895@38.14MiB nodes=43,293,196@11.70GiB pending=112,626 +INFO [09-06|01:31:59.885] Rebuilding state snapshot +INFO [09-06|01:31:59.910] Resuming state snapshot generation root=bc64d4..fc1edd accounts=0 slots=0 storage=0.00B dangling=0 elapsed=18.838ms ``` +There are other log messages that are commonly seen during syncing. For example: + +```sh +WARN [09-28|11:06:01.363] Snapshot extension registration failed +``` + +This warning is nothing to worry about - it is reporting a configuration mismatch between the node and a peer. It does not mean syncing is stalling or failing, it simply results in the peer being dropped and replaced. ```sh # consensus client has identified a new head to use as a sync target - account for this in state sync INFO [10-03|15:34:01.336] Forkchoice requested sync to new head number=15,670,037 hash=84d4ec..4c0e2b - ``` +The message above indicates that the fork choice algorithm, which is run by the consensus client, has identified a new target Geth should sync up to. This redirects the sync to prevent syncing to an outdated target and is a natural part of syncing a live blockchain. -## Common Error messages +## Transaction logs +Transactions submitted over local IPC, Websockets or HTTP connections are reported in the console logs. For example, a simple ETH transaction appears in the console logs as follows: + +```sh +INFO [09-06|01:31:59.910] Submitted transaction hash=0x2893b70483bf1791b550e5a93763058b0abf7c6d9e6201e07212dbc64d4764532 from: 0xFB48587362536C606d6e89f717Fsd229673246e6 nonce: 43 recipient: 0x7C60662d63536e89f717F9673sd22246F6eB4858 value: 100,000,000,000,000,000 +``` + +Other user actions have similar log messages that are displayed to the console. + +## Common warnings + +There are many warnings that can be emitted by Geth as part of its normal operation. However, some are asked about especially frequently on the [Geth Github](https://github.com/ethereum/go-ethereum) and [Discord](https://discord.gg/WHNkYDsAKU) channel. ```sh -# the following indicates a request timeout, may indicate IO speed is low. WARN [10-03|18:00:40.413] Unexpected trienode heal packet peer=9f0e8fbf reqid=6,915,308,639,612,522,441 ``` +The above is often seen and misinterpreted as a problem with snap sync. In reality, it indicates a request timeout that may be because I/O speed is low. It is usually not an issue, but if this message is seen very often over prolonged periods of time it might be rooted in a local connectivity or hardware issue. + ```sh -# no consensus client WARN [10-03|13:10:26.441] Post-merge network, but no beacon client seen. Please launch one to follow the chain! ``` +The above message is emitted when Geth is run without a consensus client on a post-merge proof-of-stake network. Since Ethereum moved to proof-of-stake Geth alone is not enough to follow the chain because the consensus logic is now implemented by a separate piece of software called a consensus client. This log message is displayed when the consensus client is missing. Read more about this on our [consensus clients](/docs/interface/consensus-clients.md) page. + ```sh -# consensus client is not working, most likely it is not in sync yet - swapping cl to checkpoint sync is fastest WARN [10-03 |13:10:26.499] Beacon client online, but never received consensus updates. Please ensure your beacon client is operational to follow the chain! -``` \ No newline at end of file +``` + +The message above indicates that a consensus client is present but not working correctly. The most likely reason for this is that the client is not yet in sync. Waiting for the consensus client to sync should solve the issue. + +## Summary + +There are a wide range of log messages that are emitted while Geth is running. The level of detail in the logs can be configured using the `verbosity` flag at startup. This page has outlined some of the common messages users can expect to see when Geth is run with default verbosity, without attempting to be comprehensive. For more, please see the [Geth Github](https://github.com/ethereum/go-ethereum) and [Discord](https://discord.gg/WHNkYDsAKU). \ No newline at end of file diff --git a/src/pages/docs/fundamentals/mining.md b/src/pages/docs/fundamentals/mining.md index 68a37983d6..1a704d2b9b 100644 --- a/src/pages/docs/fundamentals/mining.md +++ b/src/pages/docs/fundamentals/mining.md @@ -2,6 +2,7 @@ title: Proof-of-work mining with Ethash description: Introduction to proof-of-work mining with Geth --- + {% include note.html content=" Proof-of-work mining is no longer used to secure Ethereum Mainnet. The information below is included because the Ethash code is still part of Geth and it could be used to create a private proof-of-work network or testnet." %} Blockchains grow when individual nodes create valid blocks and distribute them to their peers who check the blocks and add them to their own local databases. @@ -9,7 +10,8 @@ Nodes that add blocks are rewarded with ether payouts. On Ethereum Mainnet, the Ethereum wasn't always secured this way. Originally, a proof-of-work based consensus mechanism was used instead. Under proof-of-work, block producers are not selected randomly in each slot. Instead they compete for the right to add a block. The node that is fastest to compute a certain value that can only be found using brute force calculations is the one that gets to add a block. Only if a node can demonstrate that they have calculated this value, and therefore expended energy, will their block be accepted by other nodes. This process of creating blocks and securing them using proof-of-work is known as "mining". -Much more information about mining, including details about the specific algorithm ("Ethash") used by Ethereum nodes is available on [ethereum.org](http://ethereum.org). +Much more information about mining, including details about the specific algorithm +("Ethash") used by Ethereum nodes is available on [ethereum.org](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash). ## CPU vs GPU From e2278f2c61909d12ffc5e06f6394fb27c68960b0 Mon Sep 17 00:00:00 2001 From: Joe Date: Wed, 5 Oct 2022 10:37:20 +0100 Subject: [PATCH 14/15] update landing page --- src/pages/docs/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/docs/index.md b/src/pages/docs/index.md index 9ebf9ab741..e921647ee1 100644 --- a/src/pages/docs/index.md +++ b/src/pages/docs/index.md @@ -10,15 +10,15 @@ These documentation pages are intended to help users download, install and use G ## Where to go from here -First, [download](/pages/downloads) and [install](/pages/docs/getting-started/installing-geth.md) Geth. +First, make sure you have sufficient [hardware](/pages/docs/getting-started/hardware-requirements.md), then [download](/pages/downloads) and [install](/pages/docs/getting-started/installing-geth.md) Geth. Make sure you are familiar with the [security considerations](/pages/docs/fundamentals/security.md) and have your firewall set up. If you are just starting out with Geth, head to the [Getting started](src/pages/docs/getting-started/getting-started.md) page. That page guides a new user through some basic functions of Geth such as creating and securing accounts and making a transaction using Geth's built-in account tools. -A more secure but slightly more complicated setup is to use an external signer instead of Geth's built-in account manager. We have a [getting started](src/pages/docs/getting-started/getting-started-with-clef.md) guide for that too. +A more secure but slightly more advanced setup is to use an external signer instead of Geth's built-in account manager. We have a [getting started](src/pages/docs/getting-started/getting-started-with-clef.md) guide for that too. Then, it is recommended to read the material in the [Fundamentals](src/pages/docs/fundamentals) section - these pages will help build a foundational understanding of how Geth works from a user perspective and under the hood. -More advanced topics are also available - explore using the sidebar! +More advanced topics are also available - explore them using the sidebar! ## Developers and contributors From d7c713437b5d2ad5e669efe19a91fd241e73b692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicol=C3=A1s=20Quiroz?= Date: Sun, 9 Oct 2022 10:16:06 -0500 Subject: [PATCH 15/15] chore: solve merge conflicts --- src/components/UI/homepage/HomeHero.tsx | 2 +- src/pages/docs/fundamentals/logs.md | 72 ++++++++++----------- src/pages/docs/fundamentals/mining.md | 33 ++++------ src/pages/docs/fundamentals/peer-to-peer.md | 15 +++-- src/pages/docs/fundamentals/sync-modes.md | 11 ++-- src/pages/docs/index.md | 2 +- 6 files changed, 65 insertions(+), 70 deletions(-) diff --git a/src/components/UI/homepage/HomeHero.tsx b/src/components/UI/homepage/HomeHero.tsx index 94a2963078..b72354f27c 100644 --- a/src/components/UI/homepage/HomeHero.tsx +++ b/src/components/UI/homepage/HomeHero.tsx @@ -39,7 +39,7 @@ export const HomeHero: FC = () => { - + diff --git a/src/pages/docs/fundamentals/logs.md b/src/pages/docs/fundamentals/logs.md index 2a15a35372..a6c09d122c 100644 --- a/src/pages/docs/fundamentals/logs.md +++ b/src/pages/docs/fundamentals/logs.md @@ -7,7 +7,6 @@ A Geth node continually reports messages to the console allowing users to monito Note that there are a large number of log messages covering a wide range of possible scenarios for a Geth node. This page will only address a subset of commonly seen messages. For more, see the [Geth Github](https://github.com/ethereum/go-ethereum), [Discord](https://discord.gg/WHNkYDsAKU) or search on [ethereum.stackexchange](https://ethereum.stackexchange.com/). Log messages are usually sufficiently self-descrining that they do not require additional explanation. - ## Configuring log messages Log messages are displayed to the console by default. The messages can be tuned to be more or less detailed by passing `--verbosity` and a value between 0 and 6 to Geth at startup: @@ -20,6 +19,7 @@ Log messages are displayed to the console by default. The messages can be tuned 4 = debug (all info plus additional messages for debugging) 5 = detail (all info plus detailed debugging messages) ``` + The default is `--verbosity 3`. Log messages can also be redirected so they are saved to a text file instead of being displayed in the console. In Linux the syntax `>> 2>&1` redirects both `stdout` and `stderr` messages to ``. For example: @@ -36,12 +36,13 @@ When Geth starts up it immediately reports a fairly long page of configuration d ``` MESSAGE_TYPE [MONTH-DAY][TIME] MESSAGE VALUE ``` + Where `MESSAGE_TYPE` can be `INFO`, `WARN`, `ERROR` or `DEBUG`. These tags categorize log messages according to their purpose. `INFO` messages inform the user about Geth's current configuration and status. `WARN` messages are for alerting the user to details that affect the way Geth is running. `ERROR` messages are for alerting the user to problems. `DEBUG` is for messages that are relevant to troubleshooting or for developers working on Geth. The messages displayed on startup break down as follows: ``` -INFO [10-04|10:20:52.028] Starting Geth on Ethereum mainnet... +INFO [10-04|10:20:52.028] Starting Geth on Ethereum mainnet... INFO [10-04|10:20:52.028] Bumping default cache on mainnet provided=1024 updated=4096 INFO [10-04|10:20:52.030] Maximum peer count ETH=50 LES=0 total=50 INFO [10-04|10:20:52.031] Smartcard socket not found, disabling err="stat /run/pcscd/pcscd.comm: no such file or directory" @@ -52,47 +53,46 @@ INFO [10-04|10:20:52.128] Opened ancient database database=/hom INFO [10-04|10:20:52.129] Disk storage enabled for ethash caches dir=/home/go-ethereum/devnet/geth/ethash count=3 INFO [10-04|10:20:52.129] Disk storage enabled for ethash DAGs dir=/home/.ethash count=2 INFO [10-04|10:20:52.129] Initialising Ethereum protocol network=1 dbversion= -INFO [10-04|10:20:52.129] Writing default main-net genesis block +INFO [10-04|10:20:52.129] Writing default main-net genesis block INFO [10-04|10:20:52.372] Persisted trie from memory database nodes=12356 size=1.78MiB time=21.535537ms gcnodes=0 gcsize=0.00B gctime=0s livenodes=1 livesize=0.00B ``` -The logs above show the user that the node is connecting to Ethereum Mainnet and some low level configuration details. The cache size is bumped to the Mainnet default (4096). The maximum peer count is the highest number of peers this node is allowed to connect to and can be used to control the bandwidth requirements of the node. Logs relating to `ethash` are out of date since Ethereum moved to proof-of-stake based consensus and can safely be ignored. - +The logs above show the user that the node is connecting to Ethereum Mainnet and some low level configuration details. The cache size is bumped to the Mainnet default (4096). The maximum peer count is the highest number of peers this node is allowed to connect to and can be used to control the bandwidth requirements of the node. Logs relating to `ethash` are out of date since Ethereum moved to proof-of-stake based consensus and can safely be ignored. ``` ---------------------------------------------------------------------------------------------------------------------------------------------------------- -INFO [10-04|10:20:52.386] Chain ID: 1 (mainnet) -INFO [10-04|10:20:52.386] Consensus: Beacon (proof-of-stake), merged from Ethash (proof-of-work) -INFO [10-04|10:20:52.386] -INFO [10-04|10:20:52.386] Pre-Merge hard forks: -INFO [10-04|10:20:52.386] - Homestead: 1150000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/homestead.md) -INFO [10-04|10:20:52.386] - DAO Fork: 1920000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/dao-fork.md) -INFO [10-04|10:20:52.386] - Tangerine Whistle (EIP 150): 2463000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/tangerine-whistle.md) -INFO [10-04|10:20:52.386] - Spurious Dragon/1 (EIP 155): 2675000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md) -INFO [10-04|10:20:52.386] - Spurious Dragon/2 (EIP 158): 2675000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md) -INFO [10-04|10:20:52.386] - Byzantium: 4370000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/byzantium.md) -INFO [10-04|10:20:52.386] - Constantinople: 7280000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/constantinople.md) -INFO [10-04|10:20:52.386] - Petersburg: 7280000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/petersburg.md) -INFO [10-04|10:20:52.386] - Istanbul: 9069000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/istanbul.md) -INFO [10-04|10:20:52.387] - Muir Glacier: 9200000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/muir-glacier.md) -INFO [10-04|10:20:52.387] - Berlin: 12244000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/berlin.md) -INFO [10-04|10:20:52.387] - London: 12965000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md) -INFO [10-04|10:20:52.387] - Arrow Glacier: 13773000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md) +--------------------------------------------------------------------------------------------------------------------------------------------------------- +INFO [10-04|10:20:52.386] Chain ID: 1 (mainnet) +INFO [10-04|10:20:52.386] Consensus: Beacon (proof-of-stake), merged from Ethash (proof-of-work) +INFO [10-04|10:20:52.386] +INFO [10-04|10:20:52.386] Pre-Merge hard forks: +INFO [10-04|10:20:52.386] - Homestead: 1150000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/homestead.md) +INFO [10-04|10:20:52.386] - DAO Fork: 1920000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/dao-fork.md) +INFO [10-04|10:20:52.386] - Tangerine Whistle (EIP 150): 2463000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/tangerine-whistle.md) +INFO [10-04|10:20:52.386] - Spurious Dragon/1 (EIP 155): 2675000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md) +INFO [10-04|10:20:52.386] - Spurious Dragon/2 (EIP 158): 2675000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/spurious-dragon.md) +INFO [10-04|10:20:52.386] - Byzantium: 4370000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/byzantium.md) +INFO [10-04|10:20:52.386] - Constantinople: 7280000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/constantinople.md) +INFO [10-04|10:20:52.386] - Petersburg: 7280000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/petersburg.md) +INFO [10-04|10:20:52.386] - Istanbul: 9069000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/istanbul.md) +INFO [10-04|10:20:52.387] - Muir Glacier: 9200000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/muir-glacier.md) +INFO [10-04|10:20:52.387] - Berlin: 12244000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/berlin.md) +INFO [10-04|10:20:52.387] - London: 12965000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/london.md) +INFO [10-04|10:20:52.387] - Arrow Glacier: 13773000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/arrow-glacier.md) INFO [10-04|10:20:52.387] - Gray Glacier: 15050000 (https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/gray-glacier.md) ``` The above block of messages are related to past Ethereum hard forks. The names are the names of the hard forks and the numbers are the blocks at which the hard fork occurs. This means that blocks with numbers that exceed these values have the configuration required by that hard fork. The specification of each hard fork is available at the provided links (and more information is available on [ethereum.org](https://ethereum.org/en/history/)). The message `Consensus: Beacon (proof-of-stake), merged from Ethash (proof-of-work)` indicates that the node requires a Beacon node to follow the canonical chain - Geth cannot participate in consensus on its own. ``` -INFO [10-04|10:20:52.387] Merge configured: -INFO [10-04|10:20:52.387] - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md -INFO [10-04|10:20:52.387] - Network known to be merged: true -INFO [10-04|10:20:52.387] - Total terminal difficulty: 58750000000000000000000 -INFO [10-04|10:20:52.387] - Merge netsplit block: -INFO [10-04|10:20:52.387] -INFO [10-04|10:20:52.388] Chain post-merge, sync via beacon client +INFO [10-04|10:20:52.387] Merge configured: +INFO [10-04|10:20:52.387] - Hard-fork specification: https://github.com/ethereum/execution-specs/blob/master/network-upgrades/mainnet-upgrades/paris.md +INFO [10-04|10:20:52.387] - Network known to be merged: true +INFO [10-04|10:20:52.387] - Total terminal difficulty: 58750000000000000000000 +INFO [10-04|10:20:52.387] - Merge netsplit block: +INFO [10-04|10:20:52.387] +INFO [10-04|10:20:52.388] Chain post-merge, sync via beacon client WARN [10-04|10:20:52.388] Engine API enabled protocol=eth ---------------------------------------------------------------------------------------------------------------------------------------------------------- +--------------------------------------------------------------------------------------------------------------------------------------------------------- ``` The messages above relate to [The Merge](https://ethereum.org/en/upgrades/merge/). The Merge was Ethereum's transition from proof-of-work to proof-of-stake based consensus. In Geth, The Merge came in the form of the Paris hard fork which was triggered at a [terminal total difficulty](https://ethereum.org/en/glossary/#terminal-total-difficulty) of 58750000000000000000000 instead of a preconfigured block number like previous hard forks. The hard fork specification is linked in the log message. The message `network known to be merged: true` indicates that the node is following a chain that has passed the terminal total difficulty and undergone the Paris hard fork. Since September 15 2022 this will always be true for nodes on Ethereum Mainnet (and the merged testnets Sepolia and Goerli). The warning `Engine API enabled` informs the user that Geth is exposing the set of API methods required for communication with a consensus client. @@ -114,10 +114,9 @@ INFO [10-04|10:21:03.100] Looking for peers peercount=0 t The logs above relate to Geth starting up its peer-to-peer components and seeking other nodes to connect to. The long address reported to `Started P2P networking` is the nodes own enode address. The `IPC Endpoint` is the location of the node's IPC file that can be used to connect a Javascript console. There is a log message confirming that a JWT secret was generated and reporting its path. This is required to authenticate communication between Geth and the consensus client. There are also messages here reporting on the HTTP server that can be used to send requests to Geth. There should be two HTTP servers - one for interacting with Geth (defaults to `localhost:8545`) and one for communication with the consensus client (defaults to `localhost:8551`). - ### Syncing -The default for Geth is to sync in snap mode. This requires a block header to be provided to Geth by the consensus client. The header is then used as a target to sync to. Geth requests block headers from its peers that are parents of the target until there is a continuous chain of sequential headers of sufficient length. Then, Geth requests block bodies and receipts for each header and simultaneously starts downloading state data. This state data is stored in the form of a [Patricia Merkle Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/). Only the leaves of the trie are downloaded, the full trie structure is then locally regenerated from the leaves up. Meanwhile, the blockchain continues to progress and the target header is updated. This means some of the regenerated state data needs to be updated. This is known as *healing*. +The default for Geth is to sync in snap mode. This requires a block header to be provided to Geth by the consensus client. The header is then used as a target to sync to. Geth requests block headers from its peers that are parents of the target until there is a continuous chain of sequential headers of sufficient length. Then, Geth requests block bodies and receipts for each header and simultaneously starts downloading state data. This state data is stored in the form of a [Patricia Merkle Trie](https://ethereum.org/en/developers/docs/data-structures-and-encoding/patricia-merkle-trie/). Only the leaves of the trie are downloaded, the full trie structure is then locally regenerated from the leaves up. Meanwhile, the blockchain continues to progress and the target header is updated. This means some of the regenerated state data needs to be updated. This is known as _healing_. Assuming Geth has a synced consensus client and some peers it will start importing headers, block bodies and receipts. The log messages for data downloading look as follows: @@ -140,7 +139,7 @@ INFO [09-06|01:31:59.910] Resuming state snapshot generation root=bc64d4..fc1edd There are other log messages that are commonly seen during syncing. For example: ```sh -WARN [09-28|11:06:01.363] Snapshot extension registration failed +WARN [09-28|11:06:01.363] Snapshot extension registration failed ``` This warning is nothing to worry about - it is reporting a configuration mismatch between the node and a peer. It does not mean syncing is stalling or failing, it simply results in the peer being dropped and replaced. @@ -152,7 +151,6 @@ INFO [10-03|15:34:01.336] Forkchoice requested sync to new head number=15,670 The message above indicates that the fork choice algorithm, which is run by the consensus client, has identified a new target Geth should sync up to. This redirects the sync to prevent syncing to an outdated target and is a natural part of syncing a live blockchain. - ## Transaction logs Transactions submitted over local IPC, Websockets or HTTP connections are reported in the console logs. For example, a simple ETH transaction appears in the console logs as follows: @@ -165,7 +163,7 @@ Other user actions have similar log messages that are displayed to the console. ## Common warnings -There are many warnings that can be emitted by Geth as part of its normal operation. However, some are asked about especially frequently on the [Geth Github](https://github.com/ethereum/go-ethereum) and [Discord](https://discord.gg/WHNkYDsAKU) channel. +There are many warnings that can be emitted by Geth as part of its normal operation. However, some are asked about especially frequently on the [Geth Github](https://github.com/ethereum/go-ethereum) and [Discord](https://discord.gg/WHNkYDsAKU) channel. ```sh WARN [10-03|18:00:40.413] Unexpected trienode heal packet peer=9f0e8fbf reqid=6,915,308,639,612,522,441 @@ -187,4 +185,4 @@ The message above indicates that a consensus client is present but not working c ## Summary -There are a wide range of log messages that are emitted while Geth is running. The level of detail in the logs can be configured using the `verbosity` flag at startup. This page has outlined some of the common messages users can expect to see when Geth is run with default verbosity, without attempting to be comprehensive. For more, please see the [Geth Github](https://github.com/ethereum/go-ethereum) and [Discord](https://discord.gg/WHNkYDsAKU). \ No newline at end of file +There are a wide range of log messages that are emitted while Geth is running. The level of detail in the logs can be configured using the `verbosity` flag at startup. This page has outlined some of the common messages users can expect to see when Geth is run with default verbosity, without attempting to be comprehensive. For more, please see the [Geth Github](https://github.com/ethereum/go-ethereum) and [Discord](https://discord.gg/WHNkYDsAKU). diff --git a/src/pages/docs/fundamentals/mining.md b/src/pages/docs/fundamentals/mining.md index 1a704d2b9b..32faf7543e 100644 --- a/src/pages/docs/fundamentals/mining.md +++ b/src/pages/docs/fundamentals/mining.md @@ -5,20 +5,19 @@ description: Introduction to proof-of-work mining with Geth {% include note.html content=" Proof-of-work mining is no longer used to secure Ethereum Mainnet. The information below is included because the Ethash code is still part of Geth and it could be used to create a private proof-of-work network or testnet." %} -Blockchains grow when individual nodes create valid blocks and distribute them to their peers who check the blocks and add them to their own local databases. -Nodes that add blocks are rewarded with ether payouts. On Ethereum Mainnet, the proof-of-stake consensus engine randomly selects a node to produce each block. +Blockchains grow when individual nodes create valid blocks and distribute them to their peers who check the blocks and add them to their own local databases. +Nodes that add blocks are rewarded with ether payouts. On Ethereum Mainnet, the proof-of-stake consensus engine randomly selects a node to produce each block. Ethereum wasn't always secured this way. Originally, a proof-of-work based consensus mechanism was used instead. Under proof-of-work, block producers are not selected randomly in each slot. Instead they compete for the right to add a block. The node that is fastest to compute a certain value that can only be found using brute force calculations is the one that gets to add a block. Only if a node can demonstrate that they have calculated this value, and therefore expended energy, will their block be accepted by other nodes. This process of creating blocks and securing them using proof-of-work is known as "mining". -Much more information about mining, including details about the specific algorithm +Much more information about mining, including details about the specific algorithm ("Ethash") used by Ethereum nodes is available on [ethereum.org](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash). ## CPU vs GPU Ethereum mining used an algorithm called ["Ethash"](https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/mining-algorithms/ethash). Geth includes a CPU miner which runs Ethash within the Geth process. Everything required to mine on a CPU is bundled with Geth. However, to mine using GPUs an additional piece of third-party software is required. The most commonly used GPU mining software is [Ethminer](https://github.com/ethereum-mining/ethminer). -Regardless of the mining method, the blockchain must be fully synced before mining is started, otherwise the miner will build on an outdated side chain,meaning block rewards will not be recognized by the main network. - +Regardless of the mining method, the blockchain must be fully synced before mining is started, otherwise the miner will build on an outdated side chain,meaning block rewards will not be recognized by the main network. ## GPU Mining @@ -28,7 +27,6 @@ The Ethminer software can be installed from a downloaded binary or built from so ### Using Ethminer with Geth - An account to receive block rewards must first be defined. The address of the account is all that is required to start mining - the mining rewards will be credited to that address. This can be an existing address or one that is newly created by Geth. More detailed instructions on creating and importing accounts are available on the [Account Management](/docs/interface/managing-your-accounts) page. The account address can be provided to `--mining.etherbase` when Geth is started. This instructs Geth to direct any block rewards to this address. Once started, Geth will sync the blockchain. If Geth has not connected to this network before, or if the data directory has been deleted, this can take several days. Also, enable HTTP traffic with the `--http` command. @@ -93,11 +91,10 @@ Benchmarking on platform: { "platform": "NVIDIA CUDA", "device": "GeForce GTX 75 Benchmarking on platform: { "platform": "Apple", "device": "Intel(R) Xeon(R) CPU E5-1620 v2 @ 3.70GHz", "version": "OpenCL 1.2 " } ``` -Note that the Geth command `miner.hashrate` only works for CPU mining - it always reports zero for GPU mining. To check the GPU mining hashrate, check the logs `ethminer` displays to its terminal. +Note that the Geth command `miner.hashrate` only works for CPU mining - it always reports zero for GPU mining. To check the GPU mining hashrate, check the logs `ethminer` displays to its terminal. More verbose logs can be configured using `-v` and a value between 0-9. The Ethash algorithm is [memory-hard](https://crypto.stackexchange.com/questions/84002/memory-hard-vs-memory-bound-functions) and requires a large dataset to be loaded into memory. Each GPU requires 4-5 GB of RAM. The error message `Error GPU mining. GPU memory fragmentation?` indicates that there is insufficient memory available. - ## CPU Mining with Geth When Geth is started it is not mining by default. Unless it is specifically instructed to mine, it acts only as a node, not a miner. Geth starts as a (CPU) miner if the `--mine` flag is provided. The `--miner.threads` parameter can be used to set the number parallel mining threads (defaulting to the total number of processor cores). @@ -109,10 +106,10 @@ geth --mine --miner.threads=4 CPU mining can also be started and stopped at runtime using the [console](/docs/interface/javascript-console). The command `miner.start` takes an optional parameter for the number of miner threads. ```js -miner.start(8) - true -miner.stop() - true +miner.start(8); +true; +miner.stop(); +true; ``` Note that mining only makes sense if you are in sync with the network (since you mine on top of the consensus block). Therefore the blockchain downloader/synchroniser will delay mining until syncing is complete, and after that mining automatically starts unless you cancel with `miner.stop()`. @@ -157,22 +154,20 @@ It is also possible to check which blocks were mined by a particular miner (addr function minedBlocks(lastn, addr) { addrs = []; if (!addr) { - addr = eth.coinbase + addr = eth.coinbase; } - limit = eth.blockNumber - lastn + limit = eth.blockNumber - lastn; for (i = eth.blockNumber; i >= limit; i--) { if (eth.getBlock(i).miner == addr) { - addrs.push(i) + addrs.push(i); } } - return addrs + return addrs; } // scans the last 1000 blocks and returns the blocknumbers of blocks mined by your coinbase // (more precisely blocks the mining reward for which is sent to your coinbase). -minedBlocks(1000, eth.coinbase) -[352708, 352655, 352559] - +minedBlocks(1000, eth.coinbase)[(352708, 352655, 352559)]; ``` The etherbase balance will fluctuate if a mined block is re-org'd out of the canonical chain. This means that when the local Geth node includes the mined block diff --git a/src/pages/docs/fundamentals/peer-to-peer.md b/src/pages/docs/fundamentals/peer-to-peer.md index b5a18919ab..0c051c4a2e 100644 --- a/src/pages/docs/fundamentals/peer-to-peer.md +++ b/src/pages/docs/fundamentals/peer-to-peer.md @@ -12,7 +12,7 @@ These testnets started as proof-of-work and proof-of-authority testnets, but the **Note:** Network selection is not persisted from a config file. To connect to a pre-defined network you must always enable it explicitly, even when using the `--config` flag to load other configuration values. For example: -```shell +```shell # Generate desired config file. You must specify testnet here. geth --goerli --syncmode "full" ... dumpconfig > goerli.toml @@ -22,7 +22,7 @@ geth --goerli --config goerli.toml ## Finding peers -Geth continuously attempts to connect to other nodes on the network until it has enough peers. If UPnP (Universal Plug and Play) is enabled at the router or Ethereum is run on an Internet-facing server, it will also accept connections from other nodes. Geth finds peers using the [discovery protocol](https://ethereum.org/en/developers/docs/networking-layer/#discovery). In the discovery protocol, nodes exchange connectivity details and then establish sessions ([RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md)). If the nodes support compatible sub-protocols they can start exchanging Ethereum data [on the wire](https://ethereum.org/en/developers/docs/networking-layer/#wire-protocol). +Geth continuously attempts to connect to other nodes on the network until it has enough peers. If UPnP (Universal Plug and Play) is enabled at the router or Ethereum is run on an Internet-facing server, it will also accept connections from other nodes. Geth finds peers using the [discovery protocol](https://ethereum.org/en/developers/docs/networking-layer/#discovery). In the discovery protocol, nodes exchange connectivity details and then establish sessions ([RLPx](https://github.com/ethereum/devp2p/blob/master/rlpx.md)). If the nodes support compatible sub-protocols they can start exchanging Ethereum data [on the wire](https://ethereum.org/en/developers/docs/networking-layer/#wire-protocol). A new node entering the network for the first time gets introduced to a set of peers by a bootstrap node ("bootnode") whose sole purpose is to connect new nodes to peers. The endpoints for these bootnodes are hardcoded into Geth, but they can also be specified by providing the `--bootnode` flag along with comma-separated bootnode addresses in the form of [enodes](https://ethereum.org/en/developers/docs/networking-layer/network-addresses/#enode) on startup. For example: @@ -44,12 +44,10 @@ There are occasions when Geth simply fails to connect to peers. The common reaso - The public test network Geth is connecting to might be deprecated or have a low number of active nodes that are hard to find. In this case, the best action is to switch to an alternative test network. - ## Checking Connectivity The `net` module has two attributes that enable checking node connectivity from the [interactive Javascript console](/docs/interface/javascript-console). These are `net.listening` which reports whether the Geth node is listening for inbound requests, and `peerCount` which returns the number of active peers the node is connected to. - ```javascript > net.listening true @@ -110,7 +108,6 @@ The `admin` module also includes functions for gathering information about the l It is often useful for developers to connect to private test networks rather than public testnets or Etheruem mainnet. These sandbox environments allow block creation without competing against other miners, easy minting of test ether and give freedom to break things without real-world consequences. A private network is started by providing a value to `--networkid` that is not used by any other existing public network ([Chainlist](https://chainlist.org)) and creating a custom `genesis.json` file. Detailed instructions for this are available on the [Private Networks page](/docs/interface/private-network). - ## Static nodes Geth also supports static nodes. Static nodes are specific peers that are always connected to. Geth reconnects to these peers automatically when it is restarted. Specific nodes are defined to be static nodes by adding their enode addresses to a config file. The easiest way to create this config file is to run: @@ -130,7 +127,9 @@ Ensure the other lines in `config.toml` are also set correctly before starting G Static nodes can also be added at runtime in the Javascript console by passing an enode address to `admin.addPeer()`: ```javascript -admin.addPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303") +admin.addPeer( + 'enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303' +); ``` ## Peer limit @@ -148,7 +147,9 @@ Trusted nodes can be added to `config.toml` in the same way as for static nodes. Nodes can be added using the `admin.addTrustedPeer()` call in the Javascript console and removed using `admin.removeTrustedPeer()` call. ```javascript -admin.addTrustedPeer("enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303") +admin.addTrustedPeer( + 'enode://f4642fa65af50cfdea8fa7414a5def7bb7991478b768e296f5e4a54e8b995de102e0ceae2e826f293c481b5325f89be6d207b003382e18a8ecba66fbaf6416c0@33.4.2.1:30303' +); ``` ## Summary diff --git a/src/pages/docs/fundamentals/sync-modes.md b/src/pages/docs/fundamentals/sync-modes.md index 18284b4ab5..3fc9b1a47d 100644 --- a/src/pages/docs/fundamentals/sync-modes.md +++ b/src/pages/docs/fundamentals/sync-modes.md @@ -13,10 +13,11 @@ There are two types of full node that use different mechanisms to sync up to the A snap sync'd node holds the most recent 128 block states in memory, so transactions in that range are always quickly accessible. However, snap-sync only starts processing from a relatively recent block (as opposed to genesis for a full node). Between the initial sync block and the 128 most recent blocks, the node stores occasional checkpoints that can be used to rebuild the state on-the-fly. This means transactions can be traced back as far as the block that was used for the initial sync. Tracing a single transaction requires reexecuting all preceding transactions in the same block **and** all preceding blocks until the previous stored snapshot. Snap-sync'd nodes are therefore full nodes, with the only difference being the initial synchronization required a checkpoint block to sync from instead of independently verifying the chain all the way from genesis. Snap sync then only verifies the proof-of-work and ancestor-child block progression and assumes that the state transitions are correct rather than re-executing the transactions in each block to verify the state changes. Snap sync is much faster than block-by-block sync. To start a node with snap sync pass `--syncmode snap` at startup. -Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block bodies and receipts for those blocks are downloaded. In parallel, Geth also sync begins state-sync. In state-sync, Geth first downloads the leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of the state heal because the extent of the errors cannot be known until the current state has already been regenerated. +Snap sync starts by downloading the headers for a chunk of blocks. Once the headers have been verified, the block bodies and receipts for those blocks are downloaded. In parallel, Geth also sync begins state-sync. In state-sync, Geth first downloads the leaves of the state trie for each block without the intermediate nodes along with a range proof. The state trie is then regenerated locally. The state download is the part of the snap-sync that takes the most time to complete and the progress can be monitored using the ETA values in the log messages. However, the blockchain is also progressing at the same time and invalidating some of the regenerated state data. This means it is also necessary to have a 'healing' phase where errors in the state are fixed. It is not possible to monitor the progress of the state heal because the extent of the errors cannot be known until the current state has already been regenerated. The healing has to outpace the growth of the blockchain, otherwise the node will never catch up to the current state. There are some hardware factors that determine the speed of the state healing (speed of disk read/write and internet connection) and also the total gas used in each block (more gas means more changes to the state that have to be handled). To summarize, snap sync progresses in the following sequence: + - download and verify headers - download block bodies and receipts. In parallel, download raw state data and build state trie - heal state trie to account for newly arriving data @@ -25,13 +26,13 @@ To summarize, snap sync progresses in the following sequence: ### Full -A full sync generates the current state by executing every block starting from the genesis block. A full sync indendently verifies proof-of-work and block provenance as well as all state transitions by re-executing the transactions in the entire historical sequence of blocks. Only the most recent 128 block states are stored in a full node - older block states are pruned periodically and represented as a series of checkpoints from which any previous state can be regenerated on request. 128 blocks is about 25.6 minutes of history with a block time of 12 seconds. +A full sync generates the current state by executing every block starting from the genesis block. A full sync indendently verifies proof-of-work and block provenance as well as all state transitions by re-executing the transactions in the entire historical sequence of blocks. Only the most recent 128 block states are stored in a full node - older block states are pruned periodically and represented as a series of checkpoints from which any previous state can be regenerated on request. 128 blocks is about 25.6 minutes of history with a block time of 12 seconds. To create a full node pass `--syncmode full` at startup. ## Archive nodes -An archive node is a node that retains all historical data right back to genesis. There is no need to regenerate any data from checkpoints because all data is directly available in the node's own storage. Archive nodes are therefore ideal for making fast queries about historical states. At the time of writing (September 2022) a full archive node that stores all data since genesis occupies nearly 12 TB of disk space (keep up with the current size on [Etherscan](https://etherscan.io/chartsync/chainarchive)). Archive nodes are created by configuring Geth's garbage collection so that old data is never deleted: `geth --syncmode full --gcmode archive`. +An archive node is a node that retains all historical data right back to genesis. There is no need to regenerate any data from checkpoints because all data is directly available in the node's own storage. Archive nodes are therefore ideal for making fast queries about historical states. At the time of writing (September 2022) a full archive node that stores all data since genesis occupies nearly 12 TB of disk space (keep up with the current size on [Etherscan](https://etherscan.io/chartsync/chainarchive)). Archive nodes are created by configuring Geth's garbage collection so that old data is never deleted: `geth --syncmode full --gcmode archive`. It is also possible to create a partial/recent archive node where the node was synced using `snap` but the state is never pruned. This creates an archive node that saves all state data from the point that the node first syncs. This is configured by starting Geth with `--syncmode snap --gcmode archive`. @@ -43,7 +44,7 @@ Read more about light nodes on our [LES page](/docs/interface/les.md). ## Consensus layer syncing -Now that Ethereum has switched to proof-of-stake, all consensus logic and block propagation is handled by consensus clients. This means that syncing the blockchain is a process shared between the consensus and execution clients. Blocks are downloaded by the consensus client and verified by the execution client. In order for Geth to sync, it requires a header from its connected consensus client. Geth does not import any data until it is instructed to by the consensus client. +Now that Ethereum has switched to proof-of-stake, all consensus logic and block propagation is handled by consensus clients. This means that syncing the blockchain is a process shared between the consensus and execution clients. Blocks are downloaded by the consensus client and verified by the execution client. In order for Geth to sync, it requires a header from its connected consensus client. Geth does not import any data until it is instructed to by the consensus client. Once a header is available to use as a syncing target, Geth retrieves all headers between that target header and the local header chain in reverse chronological order. These headers show that the sequence of blocks is correct because the parenthashes link one block to the next right up to the target block. Eventually, the sync will reach a block held in the local database, at which point the local data and the target data are considered 'linked' and there is a very high chance the node is syncing the correct chain. The block bodies are then downloaded and then the state data. The consensus client can update the target header - as long as the syncing outpaces the growth of the blockchain then the node will eventually get in sync. @@ -63,4 +64,4 @@ Alternatively, the consensus client can grab a checkpoint from a trusted source ## Summary -There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, `--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, light-sync does not work (new light client protocols are being developed). \ No newline at end of file +There are several ways to sync a Geth node. The default is to use snap sync to create a full node. This verifies all blocks using some recent block that is old enough to be safe from re-orgs as a sync target. A trust-minimized alternative is full-sync, which verifies every block since genesis. These modes drop state data older than 128 blocks, keeping only checkpoints that enable on-request regeneration of historical states. For rapid queries of historical data an archive node is required. Archive nodes keep local copies of all historical data right back to genesis - currently about 12 TB and growing. The opposite extreme is a light node that doesn't store any blockchain data - it requests everything from full nodes. These configurations are controlled by passing `full`, `snap` or `light` to `--syncmode` at startup. For an archive node, `--syncmode` should be `full` and `--gcmode` should be set to `archive`. Currently, due to the transition to proof-of-stake, light-sync does not work (new light client protocols are being developed). diff --git a/src/pages/docs/index.md b/src/pages/docs/index.md index e921647ee1..b613f1e432 100644 --- a/src/pages/docs/index.md +++ b/src/pages/docs/index.md @@ -26,4 +26,4 @@ If you want to help develop Geth or build decentralized apps on top of it, head ## More resources -We have a library of videos and articles on our [Resources](/pages/docs/resources.md) page and answers to common questions on the [FAQs](/pages/docs/faq.md) page. \ No newline at end of file +We have a library of videos and articles on our [Resources](/pages/docs/resources.md) page and answers to common questions on the [FAQs](/pages/docs/faq.md) page.