This article and a few that follow attempt a description of the technical aspects of Bitcoin in fairly simple terms. This includes a long section describing and justifying mining.
We start with the big book.
One Big Book
A Big Paper Book
Suppose that we wanted to invent a new sort of money that didn’t have all the mess associated with traditional money. Imagine that instead of cash and bank accounts and money distributed in all sorts of places all we have is one big paper book. This book records everything about our money. The book is public. Anyone can read it
We define a ‘coin’ as the unit of value of our money. A person can own a coin, meaning they have some money to spend. However, there are no physical coins. We simply record that the person owns the notional coin in our big book. We also record the history of everyone who has ever owned the coin.
When someone wants to pay a coin to someone else the book is updated. The page that shows the history of the coin gets a new entry. The entry shows that the coin has been paid, and who the new owner is. The old owner signs in the book that this is a valid payment. Anyone is allowed to look at the book, and hence can verify that a payment has been made. Anyone can see who currently owns a coin.
This would work as a form of money. There would be no need for physical coins or banknotes, or even for banks and bank accounts.
The big book is all you need. And a pen.
A Big Electronic Book
Of course, using a physical paper book of this kind this would be a silly way of handling money. You can see immediately that there are all kinds of drawbacks versus conventional money.
However, Bitcoin works this way. The book isn’t paper, it’s electronic and is stored on computers, and we call it a ‘ledger’. When payments are made the details of the payment (the amount and payee) are added to the ledger and the current owner signs that this is a valid payment using a digital signature.
To understand this you don’t necessarily need to understand digital signatures. All you have to understand is that there’s a way to identify the person who owned the coin from the record on the computer, and that everyone can see that that person has signed after they have. This is just like a regular signature in the paper book above: only the person who owns the coin can sign and anyone can see the signature and check that it isn’t a forgery.
At this point you may be wondering how people signing payments in a public book is consistent with Bitcoin being anonymous. I’ll deal with this in detail in a later article, although the brief answer is that you don’t use your own name or signature in the ledger. You use a name and signature that is randomly generated for each payment.
But One Big Book Isn’t Enough…
Lots of Big Books
The fact that the Bitcoin ledger is on computers doesn’t immediately solve all of the obvious problems with trying to run your money through one big book.
The first and most obvious problem is that having just one copy of the big book, on paper or on a computer, is very inefficient. Anyone making a payment would have to go to one place and sign the book, and anyone receiving the payment would have to go to the same place to check that the payment had been signed for.
The obvious solution is to have multiple copies of the book, and have these updated from each other fairly frequently to ensure they show the same data. Now someone making a payment can sign a book near to them, and the person receiving the payment can see that it has happened by looking at one of the copies when it is updated.
The Distributed Ledger
Making multiple copies of a paper book that’s rapidly changing is clearly difficult. However, for computers making copies of things is easy. Even copying a digital signature is easy. So we can set up a network of computers each of which has a copy of our ledger. Payments can be submitted to any computer, and if they are successfully processed the processed payments can then be copied to all the other computers.
Again, this is what Bitcoin does. We have a ‘distributed ledger’. We have multiple computers all over the world, connected by the internet, all of which have the whole ledger on them. Any of them can accept a new payment instruction, check it, process it, and distribute the results to the other computers by just copying the new entry in the ledger. In fact, as we’ll see any computer can accept a new payment instruction and will then copy it to all the other computers, and any of them can process it.
What Is Peer-to-Peer?
In fact the technology for keeping multiple identical computers synchronized in this way is fairly common and well known: it’s called peer-to-peer computing. One major use for this technology today is for file sharing: BitTorrent is a very popular way of distributing large files.
I intended to write an explanation of peer-to-peer computing for those who don’t understand it. However, How-To Geek has an excellent description of BitTorrent which is certainly better than I can write. For file sharing we are just copying a static file around many computers. However the same technology can be used to copy new payments on a ledger, or groups of processed transactions.
Key Features for Bitcoin
One key feature of peer-to-peer computing that is important for Bitcoin is that all computers have all the data, and none is more important than any other. They are all peers. When the data changes on any one computer it can be propagated to all the others. This means any computer can stop working and the peer-to-peer network will continue working. The internet could even stop working for a while in one part of the world and a peer-to-peer network would carry on working.
This is also important for more ideological reasons. No one computer runs Bitcoin, it’s a set of computers that isn’t even fixed. It’s hard for someone to take control of Bitcoin.
Peer Discovery in Bitcoin
One thing that confuses people is how computers find other computers in the network. After all the internet is a pretty big place. With BitCoin once your computer has found one other computer in the network then the other computer will send you a list of yet more computers it knows about. Once you’ve got that list you can try them all next time you try to connect. Finding the first computer for the first time isn’t so easy though, and amounts to hardcoded lists in your client software, and some lists associated with certain web addresses. This isn’t very ‘decentralized’ but it does work.
Public Book, Private Payments
As we’ve said the ledger is public: anyone can see it and take a copy. However, broadly, the only way it can be updated is through a payment instruction signed by the owner of the money. That is, the ways in which our data can be updated are severely restricted, and are secure.
Note that ‘secure’ here doesn’t mean you need a user ID and password to log on to the system, it means you need credentials (a digital signature) to update the ledger for a specific transaction. This allows anyone to be paid money and pay it on without having to set up user IDs. This in turn means we don’t need any trusted people who can do that, and the system can be ‘trustless’.
Paying Amounts Other Than One Bitcoin
There’s one other obvious problem with what I’ve described. If every payment is for one coin then how do we handle payments for amounts other than exactly one coin? At the time of writing one Bitcoin is worth about US $7000. A payment system where every payment had to be a multiple of that amount would clearly not be ideal.
Bitcoins are broken down into Satoshis. There are 100 million Satoshis in a Bitcoin, making a Satoshi about US 0.007 cents currently. We equally don’t want to have to make payment instructions at this level. As the original Bitcoin paper says ‘although it would be possible to handle coins individually, it would be unwieldy to make a separate transaction for every cent in a transfer’.
Again the answer is fairly straightforward. A payment doesn’t have to be just one coin. Instead it can have multiple inputs of unspent amounts from previous payments, as well as multiple outputs, one of which can be a payment of change back to the person making the payment.
The basic idea is still the same: for the payment to be valid it needs to be correctly signed by the person owning the money being paid, and all a payment does is assign the money to someone new, or back to the original owner in the case of change.
One thing this does do is make it hard to trace the history of one individual coin. Of course we don’t really need to be able to do this for our money to work. We just need to know the current owners of the money and to be able to verify that they have signed correctly when they pay it on.