Since August 2016 I collected many decisions trees “when to use blockchain” in this popular article. It’s been 3 years and a half. We now know what model works best. It’s simple, powerful and accurate:
Look, it’s been 4 years and nobody found a convincing use case beyond cryptocurrencies. We can stop pretending. And no Ethereum is not a general purpose “world computer”, it’s clearly about programmable money. That’s fine: money is already a huge space!
The reason why so many sophisticated models got it wrong is because they assumed blockchain was a technology, when in fact it’s not a technology but a design pattern:
Blockchain, or Distributed Ledger, means “not controlled by a single or small group of entities”
This pattern is extremely rare and hard to implement because:
1. There are not that many use cases where you actually *need* that. P2P money without a central authority is the only use case so far. By definition, if it’s controlled by a business, a consortium of businesses, a government or a central bank, you don’t need a blockchain. All the business & government-related use cases could work well with a proper governance, some standards and conventional distributed solutions.
2. It is hard to implement in practice, because humans naturally fall back to hierarchies and like to follow leaders. Bitcoin is a leaderless miracle.
3. The only way to make it work is to incentivize the users who run the system so that their interest coincides with the system’s interest. Creating a financial incentive is the only way. That’s why the design must include a native digital token (a cryptocurrency) and why it only works with money!
The 3 main questions that all the sophisticated “when blockchain?” models missed:
* Is your software *fully* developed as an open source software project?
NO -> you don’t need a blockchain
* Is the governance of the changes to the software decentralized, in the sense of “not controlled by a single or small group of individuals or entities”?
NO -> you don’t need a blockchain. That means that the governance of the changes to the software must be painful and anarchic, else you don’t need a blockchain. It makes sense because if the governance of the system was efficient and policed, you wouldn’t need the complexity of Byzantine Fault Tolerance in the first place!
* Can you use a third party to develop, maintain or host the system?
YES -> you don’t need a blockchain. In 99% of the cases, there is no factual reason why you can’t do it. That question takes care of all the fake blockchains developed and hosted by the IBM and SAP of the world.
When you read an article mentioning “blockchain” outside of cryptocurrencies, you should automatically replace the word “blockchain” by “software leveraging cryptography” and things will start to make sense. Software can be powerful; and cryptography is useful because it brings cryptographic assurances to business processes: “who did what and when”. So yeah a software leveraging cryptography can have a significant impact. But it’s not a real blockchain, and it’s not a revolution, rather an incremental innovation.