Blockchain Society: Trustless Blockchain does not scale; A technical summary.
In my previous article, Blockchain’s Broken Promises, I skipped the tech jargon and the details in order to be understood by a wider audience. But it is a long read. For people who understand tech, the article can be much shorter:
- A fully trust-less blockchain can not scale to replace e-banking
- There are no truly trust-less chains
- There is no point in a non-trust-less chain
Why trust-less blockchains don’t scale
- A blockchain, as data, is a database transaction log, where every transaction is signed by the sender and a verifier (miner).
- Getting data about anyone’s account without trusting someone else’s word for it, you have to re-do this transaction log on your own, initially empty, database.
You can do it once, and then keep track of everyone in the world’s account state continually, ie run every single transaction in the world, or you can add it to the log and only “re-do” the log for one single account when you want to validate a transaction from there. Or you can re-download and re-run this log every time you want to validate something.
This means, running fully trust-less, no matter how you do it, you spend some combination of storage, bandwidth and CPU power on every payment in the world. A bit of perspective: in 2017, 1.66 billion people shopped for goods online, but this only accounts for a maximum of 10% of global purchases. Just to buy goods, each of our blockchain clients would have to receive and process the data of 16 billion transactions a year.
Yes, you could just read the numbers from an already complete database — someone else’s database, implying a trusted middleman, the very thing that the blockchain is supposed to get rid of.
Yes, you could re-organize the data so that you don’t have to validate all the transactions, but only the ones relevant to you. But you can not know who you will interact with in the future. You will, sooner or later, have to access data that you have not validated. Therefore, you will have to trust somebody else’s results. Or … validate that data.
To put it simply: running a blockchain fully trust-less also means running one replicated (not “distributed”, but replicated!) database on several billion unreliable, untrustworthy nodes that all have to replicate each other’s work.
By the way: any design that offloads all the work to its miners… also doesn’t scale — there is precedent for this type of design and it failing, which at least one of the crypto CEOs should know full well. I will come back to that in a different article.
There are no truly trust-less blockchains
Whenever it is a company offering a new token contract or a new blockchain software, the company becomes the trusted middleman: they are designing the piece of software or a contract that you trust. As we have seen, with many of them, the trust is not well-placed. The same is true for any private chain run on some company’s computers, or private blockchain clients. How are you to know if they even have a blockchain?
And it goes further. As “Satoshi Nakamoto” themselves point out in the Bitcoin whitepaper:
If a majority of CPU power is controlled by honest nodes, the honest chain will grow the fastest and outpace any competing chains.
You trust the majority of the CPU power on Bitcoin, or another kind of majority on other chains. The sum of your miners are your trusted middleman, and this is not a good thing. This is what makes the the 51% attack possible — and it is not just a theory: there have been at least 9 successful attacks on major chains in 2018, resulting in millions of dollars lost to the attacker.
There is no point in a non-trust-less blockchain
There is another way to operate a blockchain, that is not susceptible to the 51% attack. That is a private blockchain, a chain operated by one company on its own servers. Of course, this company is, then, your trusted middleman.
If you trust a company to run a private blockchain for you, you don’t even know if they aren’t simply using a database. As damn well they should: It is cheaper, faster, and more efficient, they can devote more hardware to keeping the data safe and valid.
- there are no untrusted nodes in the network to deal with
- if the company is any good, the nodes are guaranteed to run the same software (and if they are not, why do you think their blockchain software would be any good?)
- if they can trust their own nodes, they have no need for energy-guzzling “coin miners” on their network.
- the company has the financial incentive to keep your data safe. A blockchain doesn’t, if it is not mining currency.
As soon as you begin to trust your nodes, you don’t need a blockchain, because any, truly any digital data storage technology is more efficient. The write speed of the bitcoin network is set to be 1 Block / 10 minutes. With the block size being around 1 MB, this is lower than that of 1980s floppy disk.
What do you use your blockchain for? Is there any property that gives you something a traditional (possibly geo-replicated) database wouldn’t? If yes, you are welcome to comment on the article, I would like to know.
PS: For those of you who would like more detail about how this technology works, here a good, albeit optimistic, write-up about the Ethereum implementation:
Ethereum tutorial #01 — What is a blockchain and its purpose?
Hi there! I am planning to write a series of Ethereum tutorial in coming months to share what I have learnt. Today, I…
Optimistic, because in practice the reliability claims, that are frequently made by blockchain enthusiasts, have been repeatedly proven false in the wild:
- Immutability: The 51% attack makes changes by an attacking party possible, (9 successful attacks on major chains just in 2018, one of them Bitcoin Gold resulting in $18 million losses) and depending on the network, not even very expensive.
- Reliability/No DDoS: As we have repeatedly seen on the ETH network with Cryptokitties and similar incidents, DDoS is not just possible due to inevitable unforeseen uses of the protocol, but is essentially “included” in the protocol, once you allow transactions to contain code (“contracts”).
- We have covered the trust-less nature above
- We have covered the anonymity in the previous article: The Blockchain’s Broken Promises