Bitcoin Forum

Other => Beginners & Help => Topic started by: onelineproof on November 27, 2011, 11:14:41 PM



Title: History of all transactions necessary?
Post by: onelineproof on November 27, 2011, 11:14:41 PM
Hi,

I've been moderately using bitcoin since June, but haven't looked deeply into the technical details. Maybe someone can help me answer this question. It's my understanding that the history of all bitcoin transactions that ever took place is stored in the network. But is all this information necessary? Isn't it sufficient to store only the information that specifies who has how much at the current moment rather than how much they had at other points in history?

Thanks


Title: Re: History of all transactions necessary?
Post by: wareen on November 27, 2011, 11:27:03 PM
In theory a current balance of every address would be sufficient but to prove that the balance of every address is correct, you have to keep the whole transaction history of how each of these balances came to be.

Once a client has checked that all transactions are valid it could prune the history of all totally spent addresses. This is an optimization that may be done in a future version of the client.

Other more aggressive ways of pruning go even further towards something similar to your thinking but they don't seem to be high on the priority list. See this thread (https://bitcointalk.org/index.php?topic=52859.msg632355#new) for a recent proposal.

Keep in mind, that once a client has thrown away parts of his copy of the blockchain, it cannot provide the pruned parts to other (new) clients anymore. This leads to a trust issue if done on a large scale. It has to be made sure that at least some nodes keep the whole history of the blockchain in order to have the same level of trustworthiness.

But yes, there surely is some room for improvements!


Title: Re: History of all transactions necessary?
Post by: onelineproof on November 28, 2011, 03:59:49 AM
Thanks for that.

I feel like most nodes can just store a hash (like md5sum) of the old blocks in the chain. Some nodes can store the full history, but as long as the hashes match up then we can confirm others. I'm sure I'm somehow simplifying this too much...