Block-chain — Solving imaginary problems that nobody has…and doing a terrible job of it
TL;DR — For Organizations, with a relentless focus on the Customer, Blockchain solves ZERO of your customer problems. For Organizations, whose profits are driven by riding the hype train — “Choo Choo! All Aboard!”
(Note: Hype Trains are value transfer events. So, there is a very high chance that you would end up on the wrong side of this)
If you are planning to invest millions of dollars or worse take away top talent from other divisions, read on before you make a rather expensive decision.
Block-chain / Cryptocurrencies invoke immediate emotional responses from pretty much every one. It has most definitely reached a cult status evoking memories of Amway and other get-rich schemes. In order to fully understand block-chain, it’s usefulness, and it’s drawbacks, you have to have a deep knowledge of
- Technology (Consensus protocols, Cryptography, Modern Data Stores…)
- Microeconomics (Cost of Mining, Economies of Scale, Transaction Risk)
- Macroeconomics (Public Good, Risk-Pooling, Centralization, State Actors, Regulations)
- Game Theory (Incentive systems, Social Sciences)
- A Deep History of Computing, Finance, Economics, Humans and the lessons learned from it (Two-phase Commit, Agile vs Waterfall, Bank-Runs).
This blog gives you a holistic view of those disciplines through a Q&A format
What is block-chain? Does it solve any unique / pressing problem in computing?
From a technology perspective, block-chain is a public, append-only, distributed ledger (database). There is no central authority who administers this database. Entries are added (no updates) to the database through a consensus voting system. Since it takes a while to get a reasonable number of votes globally, block-chain is currently designed to wait 10 minutes.
There is a cost to maintain this distributed append-only ledger. As of 2018, it requires $3,000,000,000 in electricity to maintain this database. The hardware depreciation costs are around, say $1,000,000,000 per year. These costs doesn’t include, other costs that are needed to run a successful mining farm, including human labor.
The block-chain network uses more electricity than many entire nations(last nation count was around 160).
You can easily setup a secure, fault-tolerant, distributed, append-only ledger on a regionally distributed AWS/GCP datacenter, giving ‘insert only’ rights to applications for $100. Call it ‘Permissionless Block-Chain’ and you can even fool plenty of smart people with money.
$100(and falling) vs $4,000,000,000(and increasing) in operating costs — What am i getting for $4,000,000,000 of expenses from block-chain?
You are basically getting a system where there is no single central authority who can erase records. In the previous AWS/GCP replacement option, you can make a case where the guy/entity who owns the AWS/GCP servers can still erase records. So, you have to like super trust him not to do that.
In other words, you are hiring a trusted $4,000,000,000 personnel, to never tamper with records.
Not only this tamper-proof database is astronomically expensive, it is incredibly slow — at least 1000x slower than your traditional databases. So, if you plan to do any real-time transactions on these databases, forget about it.
This tamper-proof Database is not only expensive, and slow, but also incredibly complex to program too. You’ll also be spending top-dollar for talent.
How do I replicate this tamper-proof Block-chain ledgers?
It’s actually simple. To replicate this feature, you just have to hire a person/organization with integrity, use proper access controls and audits, take regular snapshots of your databases and replicate across multiple zones. In fact, if you catch a rogue transaction, you can actually roll-back that transaction. It may cost around $300,000 per year, but you will have a real-time system and can hire army of programmers to solve business problems
For $4,000,000,000+ annual costs, is this mathematically fool-proof?
For the past 10 years, Block-chain has been incredibly resilient in maintaining the trust. Although it is based on Math, block-chain is essentially a piece of software that can be modified to do whatever you want it to do. So, it doesn’t assure us anything. There are plenty of myth surrounding the Math of Bitcoin.
Block-chain is a consensus protocol. Like democracy, it is always vulnerable to the 51% attack. If 51% of the actors decide they want to alter the block-chain, it’s protocol, or it’s behavior, they can. As of 2018, the incentive systems (miners getting rewarded by new Bitcoins) seem to work for maintaining the integrity of the block-chain. But there is no guarantee that this incentive system will always be aligned. Here are various scenarios.
1. When Miners get greedy about the rate of block-chain rewards. They can always change the protocol to reward more tokens(e.g: Bitcoins). The people holding the tokens may have to go along with it because for them, an inflationary Token may still better than the block-chain entirely collapsing. So, when people scream about limited token supply (the famous 21,000,000 limit, you can call on their bullshit — you can always modify Block-chain software to spit out more tokens. Don’t fall for the 21,000,000 limit marketing)
2. Let’s say the US government learns that ISIS is holding $1,000,000,000 worth of Tokens on a block-chain. They can easily spend the piddly, free energy that they have access to, and bring in the 51% attack to drain the ISIS accounts of Tokens. Once, this attack happens, the entire trust is lost and Block-chain becomes worthless.
This also exposes the major paradox of block-chain system. In order to make it secure, you have to make transactions very very expensive for ordinary people/organizations, but you still can’t make it expensive enough for large corporations, state actors or even energy companies to spend less than 1% of their budget to bring it down.
3. The Data Entry problem — Block-chain ensures that the records that were put into it’s ledger is fool-proof. But, there is ZERO guarantee that when the data enters the system, it isn’t already corrupted. — A farmer can spray your Apple with pesticides and still mark the fruit as an organic. Sure, the fact that nobody tampered with that fact when it made it’s journey to your mouth means diddly squat. You are still eating a pesticide sprayed apple. — Online Casinos can show you something while recording something else in the block-chain ledger. An independent Human auditor has 1000x chance of catching these errors than software which can easily be fooled.
Bottomline, this $4,000,000,000 per year expense is only buying us limited trust and a fake sense of decentralization that can easily be destroyed by more powerful, central organizations, state-actors and miners.
But, the Free Market will take care of these abusers, right?
Here are multiple reasons why individual actors are incentivized to cheat rather than be honest.
- There are no repercussions for your actions. In an anonymous, decentralized, block-chain world, there are only two things happening a) A piece of software gets executed. b) Tokens (Value) gets transferred.
- There are no arbiters or judges or Law Enforcement to punish the cheaters.
- Since the cheaters, scammers and fraudsters win the most rewards, every one will be incentivized to cheat.
Ok, the block-chain may not be so fool-proof. I don’t care about Bitcoin, but what about programmable block-chains, like Ethereum?
Ethereum side-steps a lot of economics and decentralization ideology and tries to sell a superior technology with less ideology. But, it is still governed by the same five disciplines.
However, it is still true to the original purpose of block-chains/cryptocurrencies.
“to facilitate transactions between consenting individuals who would otherwise have no means to trust each other” — Wood 2016
So, the whole premise is based on an ideology that there is economic value created when two trust-less entities transact.
So, Ethereum has basically solved the electricity/$4,000,000,000 expense issue right?
Yes, Ethereum pretty much learned from Bitcoin’s mistake and aimed to build a better platform that is more frequently updated and less ideologically driven around centralization. Pretty much all innovation are happening on this platform. However, only lock-chain is proven to hold the test of time. Ethereum runs into lots of other issues which no one talks about.
Smart Contract’s Source-of-Truth problem:
I briefly alluded this before in the Data Entry problem. Block-chain sort of semi ensures that entries are not tampered, but how the data got there is an entirely different unsolved problem. The problem with Trusts and Security is, you are only as strong as your weakest link. So attackers of the network won’t be looking at the network’s core strength (its SHA encryption or Consensus protocols), but it’s weak points — humans, data entry and social engineering
What’s the problem with Ethereum?
Ethereum’s pitch is, due to it’s programmable nature, it can be used for smart contracts. The central idea is, you pay a world computer money to execute a piece of code, store data and execute contracts and automatically transact with parties in a trust-less way.
Here are the fundamental problems of smart contracts.
i) Source of Truth problem: Contracts are based on Events and humans are incredibly good at identifying events. If I ask you who won the 2017–18 NFL, there is no dispute if you say Eagles won. But it is incredibly hard to program that. Here’s the list that barely scratches the enormity and complexity of the problem
a) which URI (Internet Address) should I look for to identify this event?
b) what is the protocol, data format that this stored in?
c) Is this a permanent address (URI) or does it move?
d) How is this Source of Truth secured?
If your answer is, all the events will be stored in a block-chain, we run into the same issue of massive costs (there are 1,000,000,000,000,000,000+ events happening around the world), multiply the fact that blockchain is 1000x expensive and 100x slow (if you want truthiness of every event to be verified, it takes time and electricity costs)
e) What about Data Entry errors? Variations? ‘DJ Trump’ ‘Donald Trump’ ‘Donald John Trump’ ‘Donald J. Trump’ You have to code for all possible combinations in your smart contract.
f) What about future events (smart contracts) are all about future events. How do you ensure the URI of future events?
g) What if there is a network error during execution? How often should you retry?
h) What about events that get delayed or postponed? A smart contract predicting a match gets rain delayed, but still gets played 10 hrs later, can your contract handle that?
i) How do you test your programs for future events? Remember like NASA or SpaceX, you get only once chance to execute. If you screw up, and the contract gets wrongly executed, there is no second chance.
If you went through the list, it is pretty obvious that you need NASA level programmers to write even simple real-world contracts and even then the failure rate will be so high, that it becomes almost worthless.
Smart Contract’s Race-to-the-bottom problem
In the real world when you go into a contract with someone, there is a certain amount of trust both parties bring in, because
i) They have their reputation at stake.
ii) They want repeat contracts.
Block-chain is fundamentally built on being trust-less. That is you are incentivized to assume there is no trust.
Thought Experiment: Imagine if you were to hire a cleaning person for your house on a trust-less network. This cleaning lady would be anonymous, can be anyone from 3,000,000,000 capable people on Earth, from any country. Now, you can write all the conditions you want in this contract like
a) They will not steal
b) You will have a cleaning SLA (how clean, how quick etc)
c) Payment will be made upon meeting our criteria.
But in a trust-less network, who will judge that the contract was correctly executed? Both parties have incentives to not follow through. I may not pay the cleaning person, claiming there was still dust in some remote corner. How about the other side? They can rob your home, not clean your home at all and still demand the house was cleaned.
So, someone has to write an elaborate contract of CleanYourHouseWhileNotStealing() and this will not only result in thousands of dollars of lawyers fees, but you will end up doing lots of preparation (like ensuring that everything is locked, items arranged) and only expose parts that need cleaning. In other words, you will spend 100x time, energy and resources on preparing for this contract execution with still no guarantee that the contract will be executed.
Welcome to the magical world of trust-less network.
How would this manifest in the digital world?
Let’s say you write a digital contract for someone to write a program that does X and the programmer gets paid $1000 for successfully executing this contract.
Remember, on a trust-less network, any of the 5,000,000,000 or so capable people(Russian, Chinese bots, lousy programmers) can attempt to solve your problem and take money. So, the first guy who just hard-codes the output with a print statement will win the contract and you are left with no solution and no money.
But, you are saying, “I’m a smart guy and I will write test cases that is not easy to cheat”. Well, it may not be easy to cheat for regulars, but the masters at cheaters — not honest programmers, who would have mastered the art of providing hard-coded output and brute-force your test case will still win the contract.
Of course, you insist, “I’m better than those brute-force-AI bots and I will write a far superior test case that can’t be brute forced away and the programmer has to provide the most perfect algorithm to pass”.
To which, there is only one question to ask, if you have to spend 100x energy and time in writing those test cases, wouldn’t it be easier to write the program itself? It goes back to the cleaning person problem.
How about cheating from the other side, it is very easy for me to write test cases that always fails, so the honest programmer who checks in the code in github and trying to fix that one failed test case would have done all the hard work, only to be cheated by the requester.
In a winner-take-all digital world on a trust-less platform, the most efficient cheater will *always* win.
But, there are plenty of smart people working on block-chain, they constantly come up with brilliant solutions like Proof-Of-Stake
In theory, Proof-of-Stake is a better technical solution to the electricity problem of Proof-of-Work. Basically, in Proof-of-Stake systems, people can stake their coins to validate transactions (for a fee). If they go rogue, they lose all their coins.
Why Proof-of-Stake may not work?
- The miners have much spent tons on capital with Proof-of-Work. If you tell them to switch to an algorithm that will make them useless, majority will probably give you a middle finger and fork the software.
- The only proven system so far is block-chain. Since the success and failure of these systems involves human decisions, the only way to prove is spin this alternative coin and observe for 10 years. But, nobody wants to get on this unproven system, when there is already a proven system that works. This catch-22 will kill it’s growth.
- Of course, in a Proof-of-Stake system, the rich will get richer. In an unregulated, pure digital system, the rich-will-get-richer at a faster rate resulting in even more skewed distributions. Now we are back to square-one. How do we achieve ‘Decentralized Nirvana’?
Cryptocurrencies Bank-Run problem:
There are lots of ideas floating around the cryptocurrency ecosystem where you create a marketplace/exchange to buy/sell excess capacity. One such idea is Filecoin. If you have excess storage lying around, you can rent it out to people to store their data and you will be paid in Filecoins.
From a naive point of view, this seems like a good idea for a cryptocurrency. But, if you worship at the altar of decentralization, there is a fairly good chance that you have never understood the bank-run problem. Let’s dissect the idea of consensus driven storage. In order to prove that someone is not cheating, the protocol has to have a fool-proof mechanism to constantly check on you (the storage provider). So, you are not only lending out your storage, but expensive computing power. (Hello, hidden costs!). Writing to a disk is a fairly simple operation in the normal computing world. But, with Filecoin, you just turn the complexity 100x, which naturally results in higher costs. So, the free storage you get at google or amazon or other ‘centralized’ services now suddenly costs you 10x more on decentralized networks of Filecoin.
Amazon ensures guarantee of your writes with an SLA of 99.99999%. That’s because Site Reliability Engineering is a solved problem. However, since Filecoin can’t guarantee the quality of their disks managed by ordinary users, they probably have to store 7 copies (and 7 times checking and bandwidth).
But costs and complexity aren’t even the real problem. What happens when the users realize that they are paying more for electricity and bandwidth than they originally thought and abandon Filecoin? This ‘Bank-Run’ on Filecoin not only drops the value of the coin, but as storage providers pull out, your data is completely lost. So, you are paying 10x more cost for a complex, slow solution and you aren’t even guaranteed 99% reliability. Note, these are fundamental problems that can’t be programmed away by smart people. These are mathematical realities.
What about all those big announcements from big corporations about Blockchain?
The cryptocurrency market-cap is hovering around $500 billion. So, every leader worth his salt would always be asking the question about their Block-chain strategy. Not many people in this world can combine Technology, Game Theory, Micro economic and Macroeconomic perspectives to come with a clear road-map of where the technology is going, what problem it is solving and how can you make a profit out of it.
Service Providers like Amazon/IBM have nothing to lose to give ‘Block-chain-as-a-service’ for any one willing to fork their money for such things. They are happy to take your money. Just like a stock broker, the more you use their compute power to do utterly useless things the more profitable they are.
Facebook formed an exploratory venture around Block-chain. They will come to the same conclusion as this post (albeit after losing a couple of millions of dollars and wasted time from key talent).
But, none of these companies are deploying block-chain to solve any real-world problems…and it will remain like that for the foreseeable future.
Although lots of smart people are working on cryptocurrencies, they are handicapped in topics that matter(macroeconomics, microeconomics, game theory, social sciences, regulations and good old experience of building business with actual paying customers). Unlike other technologies, cryptocurrencies are unforgiving because there are scammers, fraudsters, russian bots, lurking around for you to make that one single mistake and that mistake will cost you millions of dollars with no path to justice. Due to this lack of understanding, you see creators making the same mistakes that humanity has learned over the past thousand years.
i) transaction risk: Almost all cryptocurrency enthusiast are pretty clueless about this. When two people transact, there is always a transaction risk. This is due to asymmetry of information. This information could be intention to cheat, selling a knowingly bad item, or just a bad batch. Humanity learnt about this risks and have come up with various solutions — chargebacks, automatic insurance, arbiters, small claims court, lemon laws. Also, if you ‘centralize’ and pool this risk over the entire population, it turns out to be a mathematically efficient solution. Block-chain technologies can never remove this risk. So, the risk is pushed towards users.
ii) Economies of scale: For a successful transaction, lots of events across multiple systems have to perfectly work. Economies of scale means all of these costs are spread over billions of transactions. Block-chain essentially eschews economies of scale advantages, which means all those costs are coming to you.
Worse, block-chain technologies have negative economies of scale. As more users get on the network, the transaction costs explodes, the processing grinds to a halt
(There is a reason why Bitcoin as a transaction processing system is almost dead)
iii) n-phase commit: Software practitioners around the globe came to a very simple reality about a decade ago. Two-phase commit is slow, unreliable. Block-chain technologies pretty much threw that wisdom away and implemented a 1000-phase commit and will always hit scaling and reliability roadblocks in the future.
iv) Agile vs Waterfall: Typically there are no second chances in your block-chain apps. That means you have to get everything in one shot, which means you have to have specifications, requirements all nailed down before you go live.
v) Bank Run: <See Above>
Block-chain is the quintessential technological solution to imaginary problems that nobody has. It’s like inventing a weapon for Zombie Apocalypse. Intellectually very stimulating, but at the end of the day, it is solving an imaginary problem that people want to transact on a trust less network.
However, cryptocurrencies will definitely find niches in gambling (taking away marketshare from FX trading or online casinos). It will also find niches in illegal trades, money laundering and tax evasion schemes.
The long term market cap for all cryptocurrencies may be between $1B and $100B. But as a technology solving real world problems, it’s pretty much useless.
Also, most of the cryptocurrency prices, as of today (May 13th 2018), is propped by artificial valuation of other currencies (e.g Tether), fraud bookkeeping, lack of real liquidity and financial derivatives/instruments.
The next plunge in cryptocurrencies may also trigger a mild tech recession.