Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: bitdude on January 31, 2014, 08:21:38 AM



Title: Why does not original Bitcoin client support blockchain snapshots?
Post by: bitdude on January 31, 2014, 08:21:38 AM
Hi,

Motivation: I run the original client since my first days, I have too many addresses in it and I want to keep using them. I have not found any quick and easy way to transfer my wallet to Multibit, so I need to stick with the original client. Every time I run it, it kill my old PC totally, disk is insane for about 5 minutes and I can do nothing. This is when the client starts, this is when it tries to sync with last two-three days of blockchain. It is very unpleasant. And I can't imagine what happens if a new user tries to get whole blockchain from the very first block. It must be insane.

Solution: For most uses of Bitcoin, you don't really need the full chain. Lightweight alternative clients are easy prove for the claim. They do not have the full information, however. The solution I can see, that would have much more information than lightweight clients and just little less than full-blockchain version would be to have blockchain snapshots. Let's say every 10000 blocks you can create a snapshot of all blocks except for e.g. last 1000. So if we are on block 200000 we create snapshot valid for the first 199000. The full blockchain contains every transaction that ever happened. The snapshout would contain only balances of all accounts. This could save enormous amount of data and most importantly it would extremely speed up working with the client. You would always have to work with a chain no longer than 10000. Everything else you would have in the snapshot. You still keep information about every account out there. You just don't have the history of how they get their funds.

My question: Why is it not possible? Or is it? I assume that if it would be possible, it would be done already, right? Or just why this is not implemented in the original Bitcoin client? It could be just a mode that you can turn on and thus save some disk space and most importantly thousands of disk operations and time.

Thanks for explanations


Title: Re: Why does not original Bitcoin client support blockchain snapshots?
Post by: wumpus on January 31, 2014, 09:31:12 AM
The reference client is a full node. With being a full node comes the responsibility of storing the entire block chain.

New users should use a SPV client such as multibit or electrum. This is also what is recommended on bitcoin.org. SPV clients only store the bare minimum that is necessary and can be used even on mobile devices and other bandwidth or storage-limited scenarios.

Maintaining a full node is for enthusiasts that want to support the network.

A half-node that uses a fixed amount of disk space for storing (for example) only the last N blocks in a circular buffer is currently not possible, it would require changes to the P2P protocol to be able to signal that limitation.


Title: Re: Why does not original Bitcoin client support blockchain snapshots?
Post by: bitdude on January 31, 2014, 10:24:56 AM
Its more about the disk operations to be done, rather than disk space.

Thanks for explanation of the protocol problem!