How to solve the increasing size-problem of the block chain?
What is stopping Bitcoin from becoming a mainstream payment method?
Bitcoin network main problems
One major issue with Bitcoin is the size of the block chain. Why is it a problem and how could it be solved – these are the questions many people ask.
“Deflation doesn’t bother me, bitcoin wallets being lost doesn’t bother me, the pesky decimal-point issues (micro, mili) are something that I’ve just come to accept about the currency… but the blockchain getting larger and larger… forever kind of has me fearing for its longevity”
In simple words, the block chain is a full history of all transactions done using bitcoins. This information is primarily used to verify and confirm new transactions. With the information from the block chain, one can check how many bitcoins belonged to an address at any time.
How miners authorize transactions
Here is a description of how it works in a nutshell: every block contains hash information of the previous block (hash is some special sequence of characters), so that all blocks are aligned into an ordered chronological chain. This mathematical task can be performed by anyone with sufficient computer power. Users simply have to generate the right hash to keep the block chain going. Generators operate based on the latest block in the longest chain, and the length of the chain is computed not as a number of blocks but as the combined difficulty of this chain. These generators are called miners and mining is basically trying to find a special rare hash for a particular block of transactions. As this is computationally intensive, miners get a reward for their effort. Now it is 25 bitcoins for block and fees. Miners contribute to the network by finding this special hash, the authorization of the transactions block takes place and it goes to the block chain.
If two blocks are created almost at the same time – then forks could be created. But when the chain continues to grow, only one of these blocks would be accepted into the main chain. The other one would release the transactions into the pool of queued transactions, so that they would be included into a different block. The reward also would not be paid for the blocks ending up in the forks. That’s why a 100-block maturation time for generation is used.
Bitcoin nodes communication
Let’s think about the Bitcoin network as a combination of all its nodes. And “node” in this network is a Bitcoin client installed on a PC and synchronized which means it has a local replication of the block chain. In order for the Bitcoin network to operate – nodes should be aware of balances on accounts, for example in order to check that double spending has not occurred and to confirm the transactions. For this purpose the block chain was initially stored on every node’s PC. Today (as of January 2014), the block chain size has reached 13 GB and is increasing linearly. This brings two main problems: storage and synchronization.
By default many Bitcoin wallets store the block chain on the system drive and it already brought problems when users were complaining about lack of free space, because the block chain increased over time. The quick solution in such a case was to move the block chain data files to another drive which normally has more space and assign a reference link to the new location in the system. For more details on this issue you may contact Payment21 Consultancy Services.
But this is of course just a workaround to free your system drive and the problem in general persists. As mentioned above, the size of the block chain is not only a problem of storage, but also of synchronization. As the bandwidth is limited, usually it takes a long time to synchronize your PC with the latest actual block chain. E.g. for fresh wallet installation – it may take several days to load all the data. While the size of the block chain increases all the time, it would be worse and worse later on.
Pruning and light weight Bitcoin clients
There are two general solutions available at the moment: pruning and using light-weight clients. Let’s mention what is pruning first. In order to verify the transaction, we need to check the history of blocks that have information about this Bitcoin address. But we don’t need the full block chain data for this, meaning that some old blocks which contain information only about fully spent incoming transactions could be dropped out. That means that the block chain could be reduced by eliminating those redundant blocks. This is what is called a pruning and is not implemented as of today in any client.
What are SPV clients and how do they work
Another alternative is light clients. New light-weight Bitcoin wallet clients have been introduced, e.g. Multibit. This is based on the idea introduced by Satoshi Nakamoto in his original paper “Bitcoin: A Peer-to-Peer Electronic Cash System” in chapter “8. Simplified Payment Verification” (later - SPV). Such clients download not the whole block chain, but only sub-parts of it and then do a list of math calculations in order to check that all hangs together. Since only a part of the block chain is downloaded – such client is much faster and lightweight. But it still follows the initial concept of a peer network, as all nodes store information about the block chain. This makes it more decentralized and closer to the initial concept of P2P network rather than Electrum client for example, which uses special servers to store the block chain.
We explain here the logic of how SPV clients work. As they don’t store the full block chain they cannot verify each transaction individually. What they really do is: check the blocks’ headers on the network and find the longest chain available, assuming this chain content is the proper one. This is a valid assumption in case the majority of mining resources are honest. If an attacker has more than 50% of mining power, such clients could show nonsense data until the attack is over and the good chain become the longest one again.
In order to find details about transactions to a SPV wallet, it uploads to remote nodes a “filter”, and the node applies it to all the information and sends information back if a match is found along with some additional mathematical proof info which would allow to verify that these transactions were in the chain (proof of Merkle branch). Some privacy issues arise as such a client could be associated with a particular Bitcoin address. To overcome this issue – some “noisy” factor is added to the filter, which means that additionally to information of real interest (received transactions) some other transactions are sent to nodes, so that it is harder to understand what is the information really needed and what is noise. For additional information on the SPV approach please contact Payment21 Consultancy Services.
In conclusion, there are already implemented solutions present to address the problem of storing the large block chain. The usage of such clients would only increase as there is a shift to mobile devices happening, which allow to store less data than normal PC. It is supposed that Bitcoin-Qt wallet would support pruning at some point of time and would be able to delete old blocks. E.g. in the settings there would be an option to mark “Use up to 10 Gb of space” and it will never use more than this. By controlling disk space used, nodes would be able to control bandwidth as well.