Decentralized Applications: It's Time for an Intervention
Disruptive. Web scale. 2.0. Viral. Big data. Crowdsourced. Cloud.
Everyone has their favorite tech buzzwords they love to hate, but few people stop to think about the lifecycle of a buzzword. Usually these terms start out with a specific meaning. Then the ones that become popular cast off this meaning and emerge like a butterfly from its cocoon into a new usage where the word has become its own brand. Buzzwords then flourish for a while until they mature into a cliché. Once a cliché has achieved peak annoyance, marketing campaigns begin to abandon the buzzword and it dies a quiet death.
Terms of art become buzzwords once they stop being used to communicate a specific technical meaning and instead start being used to evoke the kinds of feelings marketers deems most likely to inspire customers and investors to open their wallets.
Based on the current level of excitement surrounding the term, which is not matched by an equal amount of understanding surrounding the trade offs involved with various problem solving methods, "decentralized" and it's variations have most certainly fallen into buzzword territory.
What does decentralized actually mean?
One of the first clues that you're chasing a buzzword is that many people are talking about something but they don't all agree on a single definition for it. One of the ongoing topics for discussion in the Bitcoin space is decentralized exchanges. But what actually makes an exchange decentralized? Exchanges have many parts, and it's possible for some of those parts to be operated in a P2P fashion while other parts are operated by a single entity.
#bitcoin-otc is a Bitcoin exchange that hosts a centralized order book, but order matching and funds transfer is manual and performed by the individual users. LocalBitcoins is similar, except they also offer centralized escrow service. Open-Transactions servers have the ability to host order books and perform automatic order matching and fulfillment, but users are not limited to a single server - servers are federated so if a user doesn't like the server they are using they can just choose another one with a mouse click or two.
All of these services have aspects which are P2P, and aspects that aren't. Are any of them "decentralized exchanges?" Does absolutely every aspect of a service need to be strictly P2P in order to be classified as "decentralized?" Does it make sense to say an exchange to be "partially decentralized"? If so, once you've defined "decentralized" as a spectrum instead of a specific criteria, does the term really mean anything useful any more?
Perhaps we can clarify the meaning of "decentralized" by examining a system widely recognized as being decentralized and see what aspects of its design make it different from related systems.
Decentralization in Bitcoin
Bitcoin is the culmination of a three decade long effort to create cryptographic digital cash. In order to achieve this goal, Bitcoin needed to possess several characteristics which are difficult to achieve all at the same time. One of the advantages of cash is that it is anonymous and free from prior restraint. Anyone who has cash can spend it however they like without asking for permission from any third party. Currency only retains its value in the long term if the number of units is limited, especially since the advantages that accrue to any party who can issue new units at will are so overwhelming that they tend to misuse the ability.
Limiting the supply of a digital currency means keeping a globally-consistent ledger, and enforcing the rules about how coins may be brought into circulation. However achieving transaction neutrality and fungibility, as well as network reliability, means not introducing any single point of failure or privileged entities capable of exercising prior restraint. In order to achieve both goals, the Bitcoin network must make all decisions via a process of arriving at a unique global consensus. Satoshi's discovery of how to actually create such a process is what lead to Bitcoin mining.
For our purposes in this article, the most relevant feature which distinguishes Bitcoin from predecessors like DigiCash and E-gold is a lack of central points of failure, or more specifically the use of multilateral (decentralized) decision making in favor of unilateral (centralized) decision making.
No single entity controls which transactions will or will not be included in the Bitcoin ledger. No single entity is responsible for enforcing the integrity of the protocol. No single entity has the authority to alter the block reward or other defining characteristics of the currency. This is why Bitcoin is succeeding where other attempts failed.
Decentralization isn't free
Bitcoin's unique characteristics are indeed what allowed it to thrive, but you should already suspect that there is no such thing as a free lunch, and indeed Bitcoin pays a heavy price for its advantages.
Multilateral decision making is inherently slower and more expensive than unilateral decision making. In order for Bitcoin to be a global currency, the entire planet needs to agree to a bit-for-bit identical view of the canonical ledger. Achieving that takes time, if for no other reason than we can't communicate faster than the speed of light. When you add fact that we can't resort to a trusted authority to act as a tiebreaker for disputes it means that no blockchain will ever be able to make decisions as quickly as, for example, a high frequency trading engine.
Using the global public ledger that allows for multilateral decision making means that retaining financial privacy is, to put it lightly, problematic. It's possible to achieve, but doing so is a difficult and delicate process where mistakes are easy to make and also permanent.
Given all these downsides, it should be apparent that decentralization isn't something to aspire to lightly. In fact, it may be better to say that decentralization as a design technique is best reserved as a last resort, only to be used when there are no other suitable alternatives.
Goals vs. methods
If you want to work on projects that will stand the test of time it's important to not lose sight of the big picture. Why does everyone want to build decentralized applications? Is it because "decentralized" just sounds cool and it's what everybody else is excited about? If so, I'm not interested.
I want to see a future digital economy in which nobody is excluded from participation. No third party should have the ability to interfere in the voluntary dealings of other people. Our networks should be resilient, so they are not easily disrupted by attackers of any scale.
Does achieving those goals imply decentralized applications? Sometimes it does, certainly. But not always, and decentralization is merely one tool out of many which we can use. If you focus on the tools themselves instead of what you're trying to build, then it's very easy to get distracted and to miss relevant opportunities.
If you've got a problem where certain scenerios must be prevented at all costs or else the entire system fails, then maybe the cost of a multilateral decision making approach is worth paying in that case. But it's even better if you can design a system to failure-tolerant. If cheating can be easily detected and reversed, then maybe it's no longer essential to prevent it at all costs and you can build it with a more palatable set of trade offs.
The natural enemy of buzzwords is the realization that there is no one-size-fits-all solution to every problem. This means we should stop talking about decentralized applications and instead talk about building useful applications. Is our goal to make personal finance censorship-resistant? Then talk about what censorship-resistance means, and take the time to examine all possible ways of achieving it and choosing the best one on the individual requirements of the problem. Don't just sprinkle decentralization over every problem you come across and expect it to work like magic pixie dust if you want to create useful applications.