1

I was reading the ethereum whitepaper and encountered this paragraph.

Ethereum is likely to suffer a similar growth pattern, worsened by the fact that there will be many applications on top of the Ethereum blockchain instead of just a currency as is the case with Bitcoin, but ameliorated by the fact that Ethereum full nodes need to store just the state instead of the entire blockchain history.

Now this post says that ethereum full nodes stores complete blockchain.

I am curious how miner nodes verify the block. So, miners don't store the whole blockchain history and stores only the most recent system state?

1

There are two ways to have a "full" blockchain: a full node and an archive node.

A full node is what 99% of miners use since it uses a lot less space and is easier. Full does basically all of the stuff you'd expect: verifying, mining, executing. They store the most recent state and are not interested in historical state even if they do store all the transaction and block data.

What an archive node does is that it also stores all intermediary states. So the process is very similar to a full node but the state data is not discarded.

As I said, usually a full node is enough as you are interested in the most recent state. But if you need to ask questions such as "how much Ether did address X have at block Y" you can check the state of block Y from an archive node directly - but if you need to ask the same question from a full node the node basically has to re-execute every single transaction before block Y to calculate the state.

As for the node sizes, here's full node (600GB): https://etherscan.io/chartsync/chaindefault and here's archive node (6TB): https://etherscan.io/chartsync/chainarchive

2
  • Thanks. That's what I was looking for. I think the concept of an archived node is developed later. But is there any benefit that archived nodes get? Dec 15 '20 at 20:03
  • @AnupamKumar a geth archive node is required to use debugging tools on the mainnet. An OpenEthereum archive node is required if you want to test a specific transaction sequence on a past block or after all transactions of the mempool. May 21 at 20:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.