Bitcoin is an interesting case study in successful innovation as it combined a range of diverse ideas from many unrelated fields. These include:
- Nakamoto consensus – required for a large network of unidentified actors
- Cryptotokens – required to incentivize appropriate behaviour
- Linked timestamping – required for ensuring consistency and security across the network
- State replication – required to ensure local copies are the same across the network
Bitcoin uses the Proof of Work (PoW) consensus algorithm which is executed by specialized actors called Miners. The mechanism design ensures the miners stay compliant with the protocols through a system of incentives. In Bitcoin:
- Actors are incentivized to be honest
- Proof of Work means there are no requirements for identification
- A secure ledger (a blockchain) and PoW prevents double spend attacks.
- The difficulty of the PoW puzzles is adjusted to maintain the network parameters such that a new block is published to the network on average every 10 minutes
- The reward for mining a block is not fixed but is a predetermined number of bitcoin that is decreasing over time. This sets a finite limit to the number of bitcoin that will ever be mined resulting in a potentially deflationary currency. It also acts incentivizes miners to join the network early in order to avoid missing the largest rewards
Bitcoin is a pseudonymous network since public keys are the only kind of identity an actor in the system has or needs. It is possible for an actor to generate a new identity at any time by generating a new key pair. These public keys, referred to as addresses, are used to verify signatures made by the holder of the corresponding private key. This allows bitcoins to be securely transferred to and from these addresses.
The downside is that with a public key as the only identifier of an actor, it is not possible to route a message to a specific computer on the network. To prevent potential attack vectors, the blockchain ledger must contain every transaction and be maintained by every miner. This results in a huge loss of efficiency.
The following is a non-exhaustive list of people who have been prominent and/or instrumental in the development of Distributed Ledger Technologies:
- Adam Back
- Josh Benaloh
- Ross David Bayer
- David Chaum
- Stuart Haber
- Michael James de Mare
- Sunny King
- W. Scott Stornetta
- Nick Szabo
A Merkle Tree is a way of hashing a large number of data chunks together in order to make the data storage efficient and improve the ability to locate and verify the stored data.
A Merkle Tree works by splitting up the chunks of data into buckets then taking the hash of each bucket. The process is repeated until the total number of hashes remaining becomes one. This final hash is known as the root hash. This arrangement allows you to efficiently prove that a particular piece of data is included in the ledger.
Bitcoin uses Merkle Trees in order to store the relevant transactions in each block. In each block, the leaf nodes are transactions and each internal node consists of two pointers. The hash of the latest block acts as a digest – a change in any transaction in the block will result in changes that propagate through the hashes all the way to the root hash
It is possible to create blockchains without Merkle Tree data structures but this would limit the ability to scale the network and be extremely computationally expensive.
Every block within a blockchain has a scoring function, with the current state of the blockchain defined as the block with the highest score. The scoring function is defined as:
Score(Genesis Block) = 0 Score(Block) = Score(Parent Block) + Proof of Work