Human Consensus In Cryptocurrency Networks
How Bitcoin coordinates work amongst disparate groups of human volunteers
So far we have argued that free open source software is the right medium for digital infrastructure, because its processes discourage spurious, ceremonial, expensive, and monotechnic developments. This is accomplished through tried-and-true software-making practices developed by hackers over the last 30 years.
In this section, we will discuss how Satoshi Nakamoto innovated on top of existing open allocation governance processes in order to make them robust enough to govern a currency system.
The fundamental challenge of any social system is that people are inclined to break the rules when it’s profitable and expedient. Unlike present-day financial systems, which are hemmed in by laws and conventions, the Bitcoin system formalizes human rules into a software network. But how does the system prevent human engineers from changing this system over time to benefit themselves?
Nakamoto’s solution to this question can be broken down into three parts:
Make all participants “administrators” of the system, with no central controller.
Require most or many participants to agree to any necessary rule changes.
Make colluding to change the rules extremely expensive to attempt.
These solutions are nice in theory, but it’s important to remember that Nakamoto sought to enforce these rules upon human participants by using a software system. Prior to the release of Bitcoin, doing so would have run up against two specific unsolved engineering challenges:
How can a system with many different computers maintain a database of transactions, without the use of a central coordinating computer? (In such a system, anyone with access to the central coordinating computer could change the rules in the system for their own benefit.)
How do all the different administrators agree that the database was not, in fact, altered? (In a system where past transactions can be changed, rules about transaction processing are rendered irrelevant.)
To answer these questions, we need to explore how humans and machines in a network reach agreement on common rules and history. This section will focus on how human beings organize within the system into three distinct roles; the next section will focus on the use of a network of machines to enforce the rules and behavior of the participants.
Pioneering work that led to Bitcoin
A financial system with the aforementioned attributes is not a new concept. Ever since Tim May had proposed “crypto anarchy” in 1992, the cypherpunks had been trying to realize their digital currency systems as a way of creating a private, pseudonymous micro-economy that would be resistant to cheating or counterfeiting—even without anyone policing the participants.
Bitcoin was not the first attempt at digital money. Indeed, the idea was pioneered by David Chaum in 1983. In Chaum’s model, a central server prevented double-spending, but this was problematic:
“The requirement for a central server became the Achilles’ heel of digital cash. While it is possible to distribute this single point of failure by replacing the central server’s signature with a threshold signature of several signers, it is important for auditability that the signers be distinct 10 and identifiable. This still leaves the system vulnerable to failure, since each signer can fail, or be made to fail, one by one.”
Digicash was another example of a currency that failed due to regulatory requirements placed on its central authority; it was clear that the necessity to police the owners of the system significantly undermined the efficiencies gained by the digitization of a currency system.
Cypherpunk Wei Dei was directly influenced by crypto-anarchy when he came up with his decentralized “B-money” proposal in 1998. “I am fascinated by Tim May's cryptoanarchy,” he writes in the introduction to his essay:
“Unlike the communities traditionally associated with the word ‘anarchy,’ in a crypto-anarchy the government is not temporarily destroyed but permanently forbidden and permanently unnecessary. It's a community where the threat of violence is impotent because violence is impossible, and violence is impossible because its participants cannot be linked to their true names or physical locations.”
Dai’s concept was based on recent developments in computer science which suggested that such a system might be feasible.
Prior art
As of the early 2000s, recent innovations had made Wei Dai’s B-money concept possible. Scott Stornetta and Stuart Haber had proposed something called “linked timestamping” in 1990 to build a trusted chain of digital signatures which could be used to notarize and timestamp a document, preventing retroactive tampering. In 1997, Adam Back invented Hashcash, a denial of service protection for P2P networks, which would make it expensive and difficult for participants to collude to alter past transactions.
Still, participants might collude to break the rules in other ways, such as to counterfeit coins. Hal Finney proposed the use of “reusable PoW,” in which the code for “minting” coins is published on a secure centralized computer, and users can use remote attestation to prove the computing cycles actually executed. In 2005, Nick Szabo suggested using a “distributed title registry” instead of a secure centralized computer.
In early 2009, Satoshi Nakamoto released the first implementation of a peer-to-peer electronic cash system, wherein the central server’s signature of authority was replaced by a decentralized “Proof-of-Work” system. Nakamoto wrote after launch that “Bitcoin is an implementation of Wei Dai's b-money proposal on Cypherpunks in 1998, and Nick Szabo's Bitgold proposal.”
These foundational ideas cited by Nakamoto may have drawn on contemporary economic concepts about currency markets. In a lecture delivered at the Gold and Monetary Conference, in New Orleans in 1977, economist Friedrich Hayek said:
“The monopoly of government of issuing money has not only deprived us of good money but has also deprived us of the only process by which we can find out what would be good money. We do not even quite know what exact qualities we want, because in the two thousand years in which we have used coins and other money, we have never been allowed to experiment with it, we have never been given a chance to find out what the best kind of money would be.”
This comment from 1984 is also widely attributed to Hayek:
“I don’t believe we shall ever have a good money again before we take the thing out of the hands of government. We can’t take it violently out of the hands of government, all we can do is by some sly roundabout way introduce something that they can’t stop.”
How Bitcoin works, briefly
Well-written tutorials about “how Bitcoin works” are plentiful. Instead of reproducing those explanations, the following paragraphs explain only what is required to understand the design rationale of the system, as a way of elucidating its purpose. Specifically, we will explore the incentive system, which keeps Bitcoin’s contributors working together in lieu of any formal association.
Central to the Bitcoin system is the concept of “mining,” which will be explained in greater depth in the next section. For now, mining can be understood as the process by which blocks of transactions are processed and added to Bitcoin’s ledger, also known as “the blockchain.” “Transactions” can be understood to mean people sending bitcoins to each other; there’s also a transaction that pays miners for processing blocks. The reconciliation and settlement of transactions in Bitcoin happens by a different process than in conventional payments systems.
How users agree on which network is “Bitcoin”
Many users only experience Bitcoin transactions through a lightweight “wallet” application on a mobile phone. Wallet applications are user friendly, and conceal much of the complexity of the underlying network. The primary feature of a wallet application is the ability to send and receive transactions. Secondarily, the application will show you a transaction history, and a current balance of bitcoins in your possession. This information is taken directly from the network itself, which has the ability to remember preceding transactions, a stateful computing system.
Bitcoin is not exactly stateful the way your smartphone or computer is. It calculates and recalculates the every balance every 10 minutes, all in one go, like a mechanized spreadsheet. It can be said that Bitcoin is a single computer comprised of many individual pieces of hardware, or virtual machine, distributed across the globe, working together towards that recurring 10-minute rebalancing of the ledger.
These machines can be sure they are connecting to the same network because they are using a network protocol, or a set of machine instructions built into the Bitcoin software. It is often said that Bitcoin is “not connected to the World Wide Web,” because it does not communicate using the HTTP protocol like Web browsers do.
While it’s true that Bitcoin is not a “Web application” like Facebook or Twitter, it does use the same underlying Internet infrastructure as the Web. The “Internet protocol suite” emerged as a DARPA-funded project at Stanford University between 1973 and 1974. It was made a military standard by the US Department of Defense in 1982, and corporations like AT%story%T and IBM began using it in 1984
In the application layer, third-party processes can create user data and send this data to other applications, which live on the same or different hosts. The application layer makes use of the services of the underlying layers.
Within this application layer exists not just the World Wide Web, but also the SMTP email protocol, FTP for file transfer, SSH for secure direct connections to other machines, and various others—including Bitcoin and other cryptocurrency networks. We’ve said that free software like Bitcoin can be copied and re-deployed by anyone, so how can disparate versions not interfere?
In practice, they do, to some extent. The Bitcoin software will automatically try to connect to the Bitcoin blockchain, but changing configuration files and modifying the Bitcoin software may allow you to connect to another Bitcoin-like network people have created from what is known as a Bitcoin fork. Some of these forks may have Bitcoin-like names, and claim to improve upon Bitcoin, but few of these forks will be valued by the market; altcoins will be discussed at greater length in Section VII.
With a traditional debit or credit card, any financial activity you conduct over the Internet is recorded within your “account,” stored on the card issuer’s central computer or cloud. There are no accounts in Bitcoin. Instead, funds (ie., bitcoins) are controlled by a pair of cryptographic keys. Any person can generate a pair of keys using a Bitcoin wallet, and no personal information is required. Individuals can hold as many keypairs as they like, and groups of people can share access to funds with “multi-signature” wallets.
As we will see, wallet-users are just one group of stakeholders in the Bitcoin network. Software for technical users also exists in several forms; it can be downloaded directly from the Bitcoin code repository, from your Terminal (in macOS or Linux).
Users who run and store the full transaction history of the network on their computer will see it occupy about 200GB. Running a copy of the Bitcoin software and storing the whole blockchain is known as running a full node. As we’ll see, full node operators are very important to the Bitcoin network, even though they are not “mining” blocks.
Once the Bitcoin software is installed on your Internet-connected phone or computer, you can send and receive Bitcoin transactions to anyone else in the world, for any arbitrary quantity. Sending Bitcoins incurs a small fee, which is paid to miners.
Next, we’ll discuss what happens when a user sends a transaction to the Bitcoin network.
How the system knows who is who
Sending transactions on the Bitcoin network modifies the state of the ledger, the blockchain. In order to hold Bitcoin and make transactions, the user must first generate a pair of cryptographic keys, also known as a keypair. Keys are used to digitally sign data without encrypting it.
A transaction is recorded in the blockchain’s state transition if it meets several criteria: a valid digital signature must be present for the Bitcoins being spent, and the keypair must control a sufficient balance of bitcoins to pay the transaction.
General ledgers have been in use in accounting for 1,000 years, and many good primers exist on double-entry accounting and ledger-balancing. Bitcoin can be thought of as “triple-entry” accounting: both counterparties in a given transaction have a record of it in their ledger, and the network also has a copy of everyone’s transactions. This comprehensive history of every Bitcoin transaction ever is stored redundantly on every single full node. This is the 200GB of data you download when you store the blockchain.
Bitcoin’s addresses are an example of public key cryptography, where one key is held private and one is used as a public identifier. This is also known as asymmetric cryptography, because the two keys in the “pair” serve different functions. In Bitcoin, keypairs are derived using the ECDSA algorithm.