Sunday, February 15, 2015

Bitcoins Simplified - II The Blockchain

This is the second part of the Bitcoin Series. If you haven't already, please refer to Part I.

In the previous part we looked at how ownership and transfer of ownership is implemented in Bitcoin. We left off with the question, how do you ensure that Mark only spends Bitcoin X only once? What is to stop him from sending the same Bitcoin X to multiple people?

When you own an account at a bank, the bank ensures that you can only spend money that you own. The bank in this case acts as the central entity that enforces the correct set of rules on your bank account.

The Blockchain
In Bitcoin, the entire process is decentralized. The bitcoin network is a peer-to-peer network of multiple nodes running the Bitcoin client. All these nodes, in conjunction, maintain and validate a distributed ledger, called the blockchain, to enforce the rules. This is a central part of the innovation behind bitcoins.

  • The blockchain is a chain of blocks.
  • Each block contains a list of transactions.
  • As new bitcoin transactions are generated, they are captured together into a new block and the new block is added to the blockchain.

As can be seen above, each block contains a link to the previous block's hash, thus linking the blocks in the chain. The blockchain, thus, records all the Bitcoin transactions, right from the birth of Bitcoin. This way all the nodes in the bitcoin network know when Mark has spent the bitcoins that he owns, thus invalidating any subsequent double-spend transactions by Mark.

Proof of Work
Now the question is, since any node in the network can add blocks to the chain, how do you prove that someone malicious did not add an incorrect block to the chain? Or worse, fork the blockchain and create their own set of blocks thus misguiding everyone.

This is ensured by enforcing the following simple rules:
  1. adding any block to the blockchain takes a significant amount of processing (CPU) power (proof-of-work). While at the same time, validating any block in the blockchain is extremely trivial.
  2. if the blockchain is forked, all the nodes in the Bitcoin network pick the longer branch of the blockchain, ignoring the smaller branch.

Assuming that majority of the processing power in the Bitcoin network is controlled by 'good' nodes, this makes it extremely hard for malicious nodes to fork the blockchain. This is because the total processing power of the good nodes, will keep extending the blockchain further, while malicious nodes fail in their race to fork the blockchain since the forked branch will always be shorter. [1]

The process of adding new blocks to the blockchain is called bitcoin mining.

Bitcoin Mining
So all bitcoin miners are always in a race to find the appropriate proof-of-work with other miners in the network. This involves significant computer power. What is the incentive for these miners to expend this computing power?

The miner who added a new valid block to the blockchain gets a reward of new bitcoins. This not only acts as an incentive for miners, but also ensures a steady and predictable supply of new bitcoins in the system. [2]

Isn't all of this fascinating?

Additional Notes:
1. The proof-of-work algorithm makes the bitcoin miners choose a value for a set of fields in the new blocks header, such that the hash of the generated block satisfies a difficulty target. This criteria is that the hash of the block should be less than a defined target value. This makes the bitcoin miners try all the possible values in the proof-of-work fields and check the hash of the block to match with the current difficulty target, thus expending processing power. The verification process is trivial because all it does is computes the hash of the newly added block with the difficulty target.

The difficulty target of the bitcoin network keeps incrementing to keep up with the advances in hardware of the miners. The difficulty target is so adjusted that it takes an average of 10 minutes to mine a new block.

2. The current reward is of 25 bitcoins. The reward halves after every 210,000 blocks that are mined.

Acknowledgements: Thanks to Danny Hamilton for his corrections.

No comments: