I’ve lost count of the number of headlines and interviews in the last year which lay out the case that Bitcoin may well be a bust, but “blockchain technology” will still transform the world.
Here is a representative Forbes headline (but I am certain you’ve seen plenty yourself if you read financial headlines or watch any daytime finance shows):
Forbes also has a list of companies touting their forays into Blockchain, including American Express, Oracle, Facebook, Prudential, Disney, IBM, Goldman Sachs, Amazon, Intel, Morgan Stanley… well here’s their list:
Those of us who followed the technology before the recent boom and bust are sitting here scratching our heads. Blockchain without Bitcoin…? Huh?
Just this morning I read an article lamenting the poor investors who jumped into Bitcoin just before the bubble exploded about one year ago today. The article wraps up trying to highlight the silver linings: Bitcoin may have made a mess of many investors’ lives, but at least it gave us Blockchain Technology, which needs to be separated from Bitcoin since it has it’s own great value.
Claims like these seems rooted in a total misunderstanding of the blockchain, and they get gas from the bitcoin talking heads who can no longer tout skyrocketing prices as a testament to the “revolution” which, otherwise, ended rather unceremoniously. I’m going to throw my 2 cents in and explain why I don’t see any real future for blockchain divorced from crypto-coin. I’ll try not to get too technical.
How banks store data: the database
In this day and age, I don’t think you have to be in the computer field to be familiar with the concept of a database. By and large, you can think of a database as a big Excel spreadsheet, one which programs can ask questions to, and requests updates to. Here are some common “queries” that a banking program might ask of the bank’s central database:
- “Database, show me the spreadsheet, but only the rows dated for today.”
- “Database, add up all the debits in the spreadsheet which belong to John Doe.”
- “Database, add a new debit for John Doe from today in the amount of $12 to Starbucks.”
Behind the scenes, this is how your balances and your transactions are stored.
What if you wanted to change the past? Maybe you went grocery shopping last week after skipping breakfast and walked out with $500 worth of baked goods. It sure would be nice to pretend that never happened, and get the $500 back. In a database, changing the past is easy:
- “Database, on row number 353224 dated last week, change the debit amount from $500 to $5.”
Just like that, $495 shows up back in your account. Maybe there are backups one could use to show the discrepancy, or else logs that record such a change which might come to light during an audit, but fundamentally speaking, nothing is meant to prevent this kind of change from happening in a database. Nothing.
That actually isn’t so dangerous as it sounds. Why? Because a bank’s database is centralized and controlled by “an authority” with a vested interest in maintaining the database’s integrity: the bank, a legal and regulated entity. Any Joe Shmoe can’t come along and send commands to the database. Any transactions that are sent go through bank-provided means, and into a clearing and validating processes BEFORE they are allowed to talk to the database. This is why your balance is always right, your transactions don’t disappear, and what you did a year ago can’t be changed today.
Imagine if a bank, say, Bank of America, decided not to take responsibility for their database anymore. Instead, they made it public so arbitrary third parties could host copies of it, and they were each responsible for keeping it in sync with one another on the honor system. Bank customers would be able to transact with any of these parties, since they all have a copy of the balances and transactions on that mighty spreadsheet.
As you can imagine, pandemonium would ensue. How many minutes would it take before some versions of this database showed old bills or dues mysteriously erased, strange payments made from random customers to the new host, etc?
People would arrive in troves to Bank of America trying to withdraw mysterious fortunes from their previously empty accounts, and they would be able to point to one of the third party hosts (the one they’d modified in their favor) and say, “See? There’s my balance! I’ll take that in hundreds, please.”
This would obviously be ridiculous.
Even if all the third parties were honest, there are reasons decentralization doesn’t work. What if I deposit $100 and wait for all the holders of this database to update my balance, then I go to two of them, separately but in quick succession, and send that money to two different recipients? I could easily spend my $100 twice before the two hosts compared notes and realized what I’d done.
The goal of Bitcoin, made clear from its establishing white paper, was to solve these problems and create a reliable decentralized currency. That means anyone — you, me, any company, any state — could participate and hold a copy of the official database (ledger, in blockchain terms), and still avoid pandemonium. How on Earth can we do that and still have a reliable financial system when you can’t trust any of the hosts or any of the networks used to transmit information? That is impossible, right?
The amazing thing about bitcoin is it IS completely decentralized. You could download a client today, download the entire blockchain (a.k.a., database), and you would instantly be one of the thousands of distributed authorities. Some people’s transactions would start going through you, others would check their balances on your copy of the blockchain, and your version of the blockchain would be downloaded as other clients came online. And this works even if all the participants, including you, are (independently) corrupt and all networks insecure.
How can this be?
The reasons are very technical and groundbreaking in the field of computer science. I’ll summarize them in lay terms, since only portions are important in understanding the inseparable relationship between bitcoin and blockchain.
Proof of work.
We talked about a database as a large spreadsheet. You can think of a blockchain as a series of smaller spreadsheets, each one called a block, all lined up in a list. For visual purposes, imagine the first block is a spreadsheet showing the first 100 transactions of Bitcoins. Then a brand new spreadsheet, block #2, is next in the list, and it shows the next 100 transactions of Bitcoin, and so on (as I’m working on this paragraph, we’re up to block #554,939). By starting at the beginning and moving forward, you can follow the course of all Bitcoins in existence, and determine where they end up, a.k.a., who currently owns them.
This is all secured using clever computer science techniques call hashing. How hashing works is not important here, but the key is this: a hash is like a fingerprint unique to that block. If you change anything in that block — a date, or an amount, or a recipient, or ANYTHING — the fingerprint changes. Block #2 includes within its records the fingerprint for Block #1. Block #3 includes within its records the fingerprint for Block #2, etc.
So, you can see, if someone decides to tweak a transaction in Block #1–say, to transfer a coin to themselves, or even just to fake a date — it will change the fingerprint, and no longer match the one recorded in Block #2, and everyone on the network would know to disregard this tampered version of Block #1. In order to get away with this theft, they would need to update the fingerprint stored in Block #2.
…but that will change Block #2’s fingerprint also! Remember, ANY change in the block changes its fingerprint, including changing the record of the previous block’s fingerprint. So now Block #2 won’t match to Block #3’s record of the previous fingerprint, so you have to update that one too… and on and on.
For technical reasons that don’t matter, it is very expensive — in computer terms — to publish a block. Millions of computer cycles are spent, around the world, trying to accomplish this “proof of work” algorithm in order to publish the new block. One person wins the race, the block is published, and everyone starts on the next one. Once calculated, however, it is very very inexpensive — in computer terms — to verify the fingerprint matches up.
This makes it infeasible for our would-be-thief to pull off their heist. While they are scrambling to recalculate block #4 and #5 and #6, the rest of the world has added even more blocks to the front end of the chain. They will never catch up, which means anyone presented with their corrupted version of the blockchain would easily see mismatched fingerprints, and know to request the real blockchain from someone else instead. This is easy to do, since there are THOUSANDS of blockchain hosts.
This is why participants in Bitcoin transactions are told to wait for 6 “confirmations” before considering a transaction finalized. A confirmation means a new block was published in front of your transaction, so after 6 confirmations, your transaction is buried 6 spreadsheets deep. At this point, it is technologically infeasible for someone to modify a transaction in your block and recalculate the other 5 (but constantly increasing) fingerprints ahead in the line. In fact, there are other more complex safeguards which make it unlikely anyone could modify a block even 2 or 3 confirmations back down the chain, but by 6, you are as safe as could be.
Just as it sounds, all this is a LOT of extra work. The bank just keeps a spreadsheet, and they are good to go. They don’t need hashes and fingerprints and new blocks pointing to one another. Compared to a database, a blockchain is tons of extra overhead, making it cumbersome and very slow. You would never bother with all this unless it was serving a purpose. For Bitcoin, that purpose is decentralization.
Why does this work in practice?
There is only one thing that maintains the needed environment for decentralization to flourish: Lots of hosts of the blockchain (a.k.a. “miners”)
That is all.
If you have a lot of miners, then combined with the protocols of Bitcoin, you have a reliable decentralized blockchain. Thereby, you justify the gross overhead of storing your data in this way. Let’s see why, and this will ultimately be the point that loops us back to my original thesis, that blockchain makes no sense with Bitcoin:
“Miners” is the term for anyone hosting the blockchain and spending cpu cycles trying to calculate new blocks. There are a lot of them. When becoming a miner, you simply download some software and agree to follow the protocol, which includes an important built-in concept of majority rule. A dishonest miner, of course, can ignore the protocol and do whatever they want, but since everyone else is obeying the protocol and the majority rules, that bad miner will basically be ignored.
When I say “everyone else” I actually mean, at least 51% of all miners. As long as the majority follows the rules, the whole thing works.
If I come along and present my corrupted blockchain with mismatching fingerprints to the network, any other hosts who are obeying the protocol (which requires them to validate my version of the blockchain) will quickly note the mismatches and choose to reject my version of the blockchain. This prevents new blocks from getting added to my version and ultimately prevents my version from spreading to any other hosts.
Even if I control several hosts and try to spread my version from many sides, because so many participants are following the rules, they will continue to wall off the spread of my version, until I inevitably fall behind as new blocks are added to the real chain and I am not able to keep my fake chain up to date.
Per the protocol: Majority rules, and majority sides with the longest valid chain.
What if there were very few participants, say, only 3? In this case, if 2 of them were corrupted to the same purpose, they could simply agree NOT to follow the protocols. They could choose to make an exception and accept my corrupted blockchain as authoritative. By majority rule, everyone who owns bitcoins is now subject to my version of the ledger.
But since there are hundreds of thousands of participants — some companies, some states, some individuals — all in separate jurisdictions and with non-aligned goals, this can’t really happen in practice. You would need to control (or convince) 51% of the “hash power” to stop following the rules specifically in order to get your self-serving version of the blockchain accepted, and this just can’t happen. Right now, the biggest single entity controls 18% of the hash power which isn’t even close to the needed 51% to become a self-possessed majority.
Bottom line: With lots of miners, and more than half of them following the rules, the complicated blockchain-style ledger works as a trusted — yet decentralized — database.
Why are there a lot of miners?
Mining is expensive. I already noted that calculating new blocks is extremely expensive in computer terms, but that translates to actual money. You need dedicated hardware worth thousands of dollars and lots of electricity to run them. You need a fast and reliable network connection, and you also generate piles of excess heat.
Why would anyone bother, except for the fanboys? Why, in fact, are there hundred of thousands of participants?
The answer is very simple:
If you find the next block, you get a reward. The reward? New Bitcoins! Currently 12.5, worth (today) something like $50,000USD (which was a quarter of a million dollars a year ago).
Yes, for downloading a piece of software and letting it spin your CPU and GPU day and night, you get paid as a miner, and you get paid in Bitcoin. Basically, whoever signs off on the new block gets to add one more row to the end:
“12.5 new bitcoins transferred to me!”
This creates incentive on several layers:
- It encourages people to participate in mining — lots of people — because they get paid!
- It encourages people to follow the protocols. You can only get your reward if your new block is accepted by the majority, so you better follow the rules or you wasted your time.
- It encourages miners to use and support Bitcoin as a currency, since they are getting paid in it.
If you removed the reward, miners would evaporate like an oasis.
Putting it all together.
We now have all the parts needed to explain the issue:
Blockchain is a revolutionary technology for allowing a secure database to be supported in a decentralized and insecure manner, but not really in any other sense. As a pure database, it is just slow and cumbersome. The reason we put up with the extra overhead is because it enables decentralization when hosted by a large number of participants (miners). Those miners are compensated for their efforts with Bitcoin.
Let’s say GoDaddy decided to adopt Blockchain and make a public ledger of who owns all of their domain names. It would be cool to decentralize this and make it public. But why would anyone bother maintaining the copies and mining new blocks? What would incentivize these participants to spend money on mining and ultimately obey any protocol rules? And why would we want to deal with all the extra cryptographic overhead for data that can just as easily be stored without it?
Without a reason for miners to participate, you aren’t going to get the environment needed for decentralization to protect itself from corruption. Few participants, or participants without incentive to play by any rules, will make it easy for attacks on the network to bring it down. And for what benefit?
The benefit for Bitcoin is part of the package. It is money that is government-agnostic, open to all, and not depending on any potentially untrustworthy authority (a.k.a., bank or state). That, in and of itself, makes sense to a lot of people. When you are talking about money, which can be subjected to various government-imposed inflations, taxes, regulations, limitations, it makes sense some people would seek freedom. But do we need that for every kind of data set? Not really.
Need or no, the fundamental issue remains:
What decentralized participants are going to bother maintaining a blockchain if they are not compensated for it? What keeps them honest?
There is no clear answer unless the blockchain is ITSELF part of a currency, and thus we come to my point:
Blockchain exists to allow Bitcoin to exist.
Bitcoin finances the maintenance of the blockchain.
Neither makes sense without the other.