This article was published on 2017, updated february 2021.
Blockchain-related technologies are in full-hype mode these days. The first time I came across the b-word, I had a déjà-vu from the 2010s hype around “NoSQL”. The similarities are hard to miss:
- Hundreds of different projects grouped under the same keyword
- Hundreds of growth-hungry companies speculating on the technology and pumping out buzzword-based marketing campaigns
- Such a wide variety of constraints and use cases that you’re left wondering what all these projects and applications even have in common
Of course, the major thing fueling the hype around blockchain—and further confusing the conversation—is the matter of cryptocurrency regulation and trading.
But what is the point of the Blockchain, exactly? What can, and can’t, it do? And why is it even worth talking about?
Blockchain & The Consensus Problem
In one way or another, blockchain technologies were developed to solve a well-known Computer Science problem: The Consensus Problem.
It’s a fundamental problem of Distributed Systems, and it goes something like this:
- I have a set of components (e.g. servers in a network, robots, etc.) that do not share any memory. All they can do is talk to each other through messages.
- I want to command these components to make a decision. For example: elect a leader, or agree on the balance of a bank account.
- How should I design my components so that they reach the same decision—so that, in other words, they reach a consensus?
Like every interesting problem, there is no single BEST solution. A good solution depends on the constraints you have to deal with. Everything is a trade-off.
In a Google Datacenter, I can assume that the network is reliable. But if I’m operating across two continents, I have to take into account latency and the potential of disconnects. I can live with a margin of error when the technology I’m building counts ’likes’ on social media. But for a bank account, I want ZERO errors during an operation.
An example of the Consensus Problem when designing a digital currency, like Bitcoin, is how to prevent the possibility of double spending. Let’s say I try to pay twice with the same Bitcoin, so I send two transactions to two different servers on the network.
The system’s job is to make sure there is no possibility of both transactions being processed and confirmed. In other words, we want the system to reach a consensus over every transaction.
What’s new about Blockchain-related technologies is their ability to solve a version of the Consensus Problem that is far more complex.
Consensus in a Hostile Environment
The Consensus Problem is well known. A few examples of systems that use or provide a Consensus system in one way or another are Kafka, HBase, MongoDB, and Zookeeper.
All of these technologies deal with availability constraints (e.g. a server shuts down) and partitioning (e.g. the network shuts down). But they assume that each participant is friendly. For instance, the servers in a company’s Data Center are not hostile; they won’t attempt to corrupt the result of a consensus willingly. And the admins have nothing to gain from maintaining a hostile machine.
That is why the solutions we use today cannot work within a fully open system. There’s always an organization like Google, or a bank, that manages the Data and the Servers. Wikipedia, despite being highly participative, has a CEO for the same reason.
That’s why Blockchain-related technologies are disruptive. They are a crash-resilient solution to the Consensus Problem AND they’re equipped to deal with hostile participants. Last but not least, they enable you to build systems that exist as open communities: anyone can join or leave the network, and nobody can break it.
For example, anyone can launch the Bitcoin client and connect to the Bitcoin network. And if tomorrow a hacker loads the bitcoin client, tweaks it, and starts to emit fraudulent transactions on the network, their transactions will get rejected. The laws of Bitcoin are safe because its consensus algorithm resists hostile participants (up until a certain number, of course).
And that’s the power of blockchain, demystified!
You often hear about lots of other benefits: the immutability of logs, anonymous transactions, permanent data storage, etc. These are technical details and, though powerful, they are all consequences of the need for consensus.
So, in a nutshell: blockchain is an apparatus that generates consensus in a potentially hostile environment.
By the way, current applications of Blockchain in cryptocurrencies like Ethereum or Bitcoin take an elegant approach, in my opinion.
In these cases, the consensus relies on a currency, so the participants with the most power on the network also stand to lose the most from cheating. If you make Bitcoin lie, you risk having its value drop to zero.
But these are questions of Game Theory. Let’s leave that for another article.
Want to dive deeper into consensus theory? Here’s some further reading:
I wrote software for large distributed systems, web applications, and even robots.
Now I focus on decentralization, overly-engineered software, and frugal innovation.
I help companies around the world build products through SingularGarden.