Updated on June 23, 2020

Full and archive node types

Besu supports two node types, commonly referred to as full nodes and archive nodes.

Full nodes have the current state of the blockchain so cannot serve the network with all data requests (for example, the balance of an account as at an old block). Full nodes can guarantee the latest state for the blockchain (and some older states, but not all). You can check current balances, sign and send transactions, and look at current Dapp data.

Archive nodes have all of this and they also store the intermediary state of every account and contract for every block since the genesis block. With an archive node you can do everything you do with a full node, as well as access historical state data.

For Besu on MainNet, Archive nodes require significantly more disk space (approximately 3TB) than full nodes (approximately 750GB).

Note

Besu running on other public testnets, such as Ropsten, and other Ethereum clients will have different disk space requirements.

To run an archive node, enable full synchronization using --sync-mode=FULL, which by default also disables pruning (--pruning-enabled=false).

To run a full node, enable fast synchronization using --sync-mode=FAST, which by default also enables pruning (--pruning-enabled=true).

Fast synchronization

Instead of a full synchronization (--sync-mode=FULL), which starts from the genesis block and reprocesses all transactions, fast synchronization (--sync-mode=FAST) downloads the block headers and transaction receipts, and verifies the chain of block headers from the genesis block.

Important

Fast synchronization is the default for named networks specified with the --network option, except for the dev development network.

Fast synchronization is also the default if Ethereum mainnet is being connected to by not specifying the --network and --genesis-file options.

Pruning

In Besu, pruning reduces the storage required by removing state trie nodes that are unreachable from recent blocks.

Important

Using pruning with private transactions is not supported.

Pruning might increase block import times, but it does not affect the ability of nodes to stay in sync.