Hashcash is a Proof of Work based system that was invented by cypherpunk Adam Back in 1997 to reduce email spam and denial of service (DoS) attacks.
Hashcash cannot operate as a full digital currency since it has no way of preventing double spending and the tokens cannot be exchanged among actors.
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.