Why Your Enterprise doesn’t Need Blockchain

This post has 2620 words. Reading it will take approximately 13 minutes.

Bitcoin has brought a wave of excitement. It’s is mostly because it has brought such concepts as “honest ponzi” and “technical analysis is a real science” to the mainstream, which makes it hilarious that anybody takes it seriously still, but also because they can be viewed as a purely scam and speculation-based commodity, backed largely by child pornography and drugs. As if that wasn’t enough, butters (short for bitcoin enthusiast) will also tell you that the technology behind bitcoin is interesting in itself. This is known as blockchain technology and relates to bitcoin in the same way as intelligent design relates to the Christian church: it’s the same but renamed to try and distract from all the child-fucking.

Butters claim that the technology behind bitcoin is interesting. They do this because they are blissfully ignorant of what they are talking about. On the other hand, people who dislikes bitcoin (also known as sane people) say that bitcoin brings nothing new to the table and public key encryption has been here since the dawn of time. Who is right? The butters or the sane people? The answer is neither of them is, only I am. The truth is closer to the sane people than the butters, though.

Bitcoin essentially solves two problems: only the owner of a bitcoin can spend it and that owner can only spend it once. The reason the second is an issue is that everything I, as a bitcoin owner, can do to spend a bitcoin once, I can repeat, so nothing prevents me from spending one bitcoin on all the drugs today only to spend the same bitcoin on guns and grenades tomorrow. This is known as the double-spend problem.

To solve that, bitcoin has a mechanism to check whether a bitcoin has been spent already. Such a mechanism needs to allow checking if a bitcoin has already been spent, and that mechanism is the blockchain. The blockchain lists all transactions ever made and allows checking if I have already spent my bitcoin by running thru the entire blockchain and checking if I have. If that sounds insane and inefficient to you, you’re right, but that’s bitcoin.

Now, everybody needs to agree 100% on which transactions have been put on the blockchain and in which order. If not everybody agrees on which transactions have been logged, I could spend my one bitcoin on drugs at Ketamine2go and then find somebody who has not seen the transaction and spend my bitcoin on weapons at Weapons’r’us. Since Weapons’r’us doesn’t see my purchase of drugs, they see nothing wrong and happily hands me my weapons, so I can go on a very bitcoin drug-fueled rampage. If everybody agrees on the transactions, but not on the ordering, I could spend my one bitcoin on drugs today at Ketamine2go, and tomorrow send my one bitcoin to a friend but include a timestamp that says I sent it yesterday. Since no transaction was logged when buying drugs, I get my drugs from Ketamine2go, and since the transaction where I sent my bitcoin to my friend has a timestamp saying it happens before that, there is no transaction saying I already spent my bitcoin coming before the timestamp, and my friend can now spend the bitcoin (e.g., on weapons we can then use to go on a drug-fueled rampage together).

The details are not too important, but these problems are real problems and the solution is a concept known as consensus. It is an old problem in computer science that describes that a number of parties (not drug-fueled parties but different persons) have to agree on something. The other part of bitcoin is solved using standard public-key encryption. It allows me to sign a message (basically “I want to spend one bitcoin on drugs at Ketamine2go”) so that others can verify it came from me.

The consensus problem has been shown to be unsolvable in general. Often, this is referred to as the Byzantine Generals’ Problem. In this problem, a number of generals have to either agree to attack an enemy or retreat. If they don’t attack with full force, any force attacking will die, so it is imperative that they agree. This mirrors the situation where all butters need to agree on which transactions are on the blockchain. If anybody has incorrect information (attack when the others retreat), they may not have seen an important transaction and get scammed out of their drugs or weapons. In the Byzantine Generals’ Problem, generals can send messengers between each other but not communicate directly. This is similar to how butters can send messages over the internet but cannot leave their mothers’ basements to interact in person (also they smell so nobody would want them to). Finally, any messenger can be intercepted by the enemy and either be killed or replaced by a spy who will lie to the other generals. This is similar to how messages may get lost on the internet or bad actors may simply lie and say they haven’t spent a bitcoin when they have.

The Byzantine Generals’ Problem cannot be solved in general. We have to drop some of the assumptions. Bitcoin does this by wasting energy. It does not do complex computations like newspapers and butters will tell you. They literally do meaningless busywork and perform a useless and trivial computation where it is easy to check the solution but finding it requires trying again and again. That way, the person who solved the problem (i.e., guessed the lucky winning lottery number in a fairly literal sense) first gets to decide what goes on the blockchain. Everybody can keep doing that, and the “true” blockchain is the longest one, and everybody agrees to use this. People may not completely agree on which blockchain is the longest one (they may have two different ones of the same length), but after a while somebody else adds another block to one of them and it becomes the longest one. Since every block in the chain requires making useless busywork, it is not easy to add new blocks to the blockchain, or to replace the history (to replace a block 5 blocks back, I have to not only do busywork for that block but also for the 4 that come after it). That is the reason that butters think it is reasonable to wait between 10 and 60 minutes for a transaction to “clear.” On average a new block is added every 10 minutes, so after 60 minutes, 5 or 6 new blocks have been added and it is very unlikely that anybody would be able to replace it.

So the bitcoin solution to the Byzantine Generals’ Problem does not 100% guarantee that everybody agrees, it just gives a high probability that they do. It is perfectly vulnerable to what is known as 51% attacks, where if somebody owns more than 50% of the capacity in the network, i.e., they are faster at solving useless puzzles than everybody else combined, they can replace old blocks. This works by simply spending one bitcoin on drugs at Ketamine2go and then starting solving useless puzzles for blocks that say you never spent your bitcoin without telling anybody else. After a while, the rest of the network will have created, say, 6 blocks, but you have created 7 (remember, you can solve useless puzzles faster than they can). You then send your 7 blocks to the network, and everybody will agree you never spent your bitcoin, and can now go buying some weapons for the bitcoin you have now never spent. Ketamine2go will not have the bitcoin because the transaction that said they got it from you will have been erased from history and they will be out the drugs, because you snorted them like a pig while solving stupid puzzles, getting ready for the upcoming rampage with the weapons you can now afford.

The 51% attacks seems like a theoretical thing that would never happen in reality, but is an actual thing plaguing both bitcoin and the various copies called shitcoins. A large percentage of the bitcoin mining capacity is concentrated around very few large producers of bitcoin mining hardware, and for one of the variants of Bitcoin Cash (a shitcoin) scammers actually cashed in a number of bitcoins at an exchange and got out money (doubtlessly to go and buy drugs), only to revert the transaction saying they sent it to the exchange in the first place. You can do things to mitigate the attack, but never 100% solve it: the Byzantine Generals’ Problem is provably unsolvable.

Now we get to why you don’t need a blockchain. The whole mining shenanigan is only in place to reach consensus. It solves absolutely no other practical problem. On the other hand, it is vulnerable to 51% attacks and is an environmental/economical disaster. If you have any other way to solve consistency, you can make a cryptocurrency with the exact same properties except for what is needed for consistency. This includes everything butters mention as if it was something special, like immutability (Java’s String object has had this since its inception, and C++ const classes are immutable as well), code as contracts and other trivialities mentioned in an attempt to hide the fact that butters don’t understand the fundamentals.

A very easy way to achieve consensus is to introduce any form of trust. The simplest is to have a central authority that decides what is and what isn’t on the blockchain. This is similar to what Facebook (and, BTW, a large part of shitcoins) do. This has the same security implications as if a single party owned most or all of the mining capacity (so similar to pretty much all the bitcoins and copies). The single party can indeed alter transactions if they want. As a bonus, the transaction ledger can be public or private as desired or even in-between, so it is possible to expose your drug purchases while still keeping it secret that you purchase Barbie dolls in bulk.

In fact, it is possible to take any consensus protocol from this list and build a cryptocurrency with the trade-offs each protocol has. It does not have to be a single central authority, but it is possible for each participant to have a single trusted party that sign their transactions as long as these trusted parties trust one another (exactly like how the banking and interbanking systems work), to build a web of trust, or to build a group of trusted parties. The special part of bitcoin is that its consensus protocol (which really comes from anti-spam system hashcash) is the only one that works in a system with pure peer-to-peer nodes without any trust and byzantine errors. This is an extremely distrusting environment which doesn’t reflect most real-life situations. If we let go of any of the requirements, we can find a consensus algorithm from the list above. And that consensus algorithm will not be vulnerable to 51% attacks and will not burn more coal than a medium-sized European first-world economy to keep running.

In fact, many systems rely on consensus already. Any distributed database does this, be it a good old-fashioned HA SQL database cluster, a peer-to-peer protocol for sharing TV shows Linux ISOs, algorithms for controlling access to physical networks, or something as everyday as multiple users editing a document in Google Docs/Office 365/iWork/Dropbox or using an explicit versioning system like Git/Subversion/CVS/RCS. In fact, a Git repository is in a very literal sense a blockhain; it even uses Merkle tree hashes to identify nodes just like bitcoin.

So, the butters are wrong: bitcoin did not solve a new problem, and it did not solve a long-unsolved hard problem. It provided another solution to an ancient problem which has literally hundreds of other solutions, albeit under slightly different assumptions. It actually didn’t come up with the algorithm, but used one that had been developed in a slightly different context. The assumptions happen to work well for a no-trust payment network, and that is the real contribution: putting together a bunch of pre-existing technologies to build an interesting prototype of a network which uses standard signatures to ensure that only I can spend my money and using a previous-but-little-known solution to an ancient problem, consensus, ensures I can only do it once.

Sane people also have it wrong when they say that bitcoin is just old technology and digital signatures and public-key encryption has existed for ages. It is true that it has, but public-key encryption is only part of the puzzle; the big thing is in the consensus. Sane people claiming that the Merkle trees used to secure the blockchain is old hat as well are also only truth-adjacent. Sure, Merkle trees are not new (and so trivial that I believe everybody has come up with the idea independently, at least I know I have), but they too are just an insignificant part of the puzzle. Sure, hashcash “solved” consensus in a trustless environment before bitcoin, but nobody cared. Bitcoin genuinely put the pieces together. Unfortunately, the prototype showed that the hashcash means of consensus is not viable in practise: the energy usage is not sustainable and as miners tend towards monopolisation, so instead of trusting an authority that has in some way proved trustworthy, butters now put all their trust in a cabal of Chinese miners with dubiously legal intentions.

Enterprise does not need blockchain. Sure, there is a use for append-only storage. This is essential in auditing and can easily be achieved using by simply signing transactions and giving them to a trusted third-party, or storing an audit-log that is only editable by a trusted third party. SAP does this and has done this for almost 50 years now. You can easily have a public ledger without it being a blockchain; just using a regular public-key signature and publish a certificate (like how literally every encrypted website works today). Or a public r/o Git repository, like millions of projects for decades. If you have a group of parties that trust one another (or which all trust a central party), they can build a simple web of trust using public-key encryption for communication instead of using a blockchain. They can even make a ledger public and sign everything using public keys. This will work better than any idea of a healthcare blockchain or tomato blockchain or dental blockchain. There is also no need to have ICOs to get tokens on a blockchain to purchase a service; since you already want to purchase a service, surely you must trust the service provider? Even if you wat a public proof, just rely on digital cheques: the service provider gives you a signed note stating “I provide service X to customer Y” and you can cash it in, just like a cheque, by signing the message and handing the cheque back to the service provider. You can prove the service provider owes you a service using the original certificate, and the service provider can prove they already did using the canceled, double-signed, version of the certificate. There is no double-spend problem to solve.

So, if anybody tells you, you need blockchain technology, it is most likely that they are trying to sell you something as boring as a consensus protocol using buzzwords. Nobody in a first-world country has a need for a completely trustless network except for trading illegal contraband, and can instead pick any of the available consensus protocols which will be proven technology instead of technology that is known to cause environmental harm and be broken in well-understood and -abused ways.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.