15

This question already has an answer here:

EDIT : I hadn't see the other question but this one ain't a duplicate because I'm asking here, precisely, if the state differs and if it does, what are the implications. The answer to that question isn't present in the other question and isn't present in the comment of that other question: all that is written, in a comment, is that the state ends up being different. I'd like to know what are the implication of the state being different.

When I start a geth Ethereum node from scratch, I can use "geth --fast", which is faster than just using geth to synch the blockchain.

My question is: do I end up with a node in the same state as if I hadn't used the --fast option and, if not, what are the implications of the two states being different.

Here are, for example, many related subquestions one could have...

Questions

  1. If the two are identical, why isn't geth --fast always used when starting geth with an empty chain?

  2. If the two are not identical, are there any security concerns when using the --fast option? Is it able to then verify every new block correctly? (if so I take it the end state is totally exactly identical?)

  3. Does a node started with "geth --fast", once synched, then act as a "normal node"?

  4. If a new "geth --fast" node was connected to one and only one node and that node was a "geth --fast" started one, would the new "geth --fast" node be able to download the blockchain from scratch?

  5. If a new "geth" node was connected to one and only one node and that node was a "geth --fast" started one, would the new "geth" node be able to download the blockchain from scratch?

  6. What if in the entire world there were only "geth --fast" nodes operational, would that prevent the Ethereum network from operating normally? What would be lost?

marked as duplicate by niksmac, Waqar Lim, Richard Horrocks, paulmorriss, Joris Bontje Mar 14 '16 at 20:31

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

  • 1
    Basically I think that this needs more explanation than a comment saying: "The state is different" – Cedric Martin Mar 11 '16 at 3:03
  • 1
    Q5 might be interesting to ask separately. – eth Apr 19 '16 at 9:06
  • 1
    1. intermediate state transitions aren't preserved with fast, it will be the default after switching to archive/non-archive node models; 2. github.com/ethereum/go-ethereum/pull/1889 > Weakness section; 3. yes; 4. yes; 5. yes; 6. it would remain operational, the "lost" data is the ability to say what the balance/state of some account/contract was a long time ago, but all the data is there to regenerate it if you really want to. – Péter Szilágyi Apr 19 '16 at 10:37
  • @PéterSzilágyi With Q5 the new node will have "lost" data like Q6: the new node can't query balance of an account a long time ago. Is that correct? – eth Apr 21 '16 at 10:26
  • No. The blocks themselves are enough to reconstruct everything else. Fast sync simply does not reconstruct everything. But you only need the blocks which fast sync also retains. – Péter Szilágyi Apr 26 '16 at 9:00