Even though the Internet is a constant reminder of the great things that come when a passionate community of developers, researchers and visionaries collaborate to create an open platform on open standards, the history of computing tells a different tale. It is a story of proprietary technologies dominating open technologies and of market power concentrated in the hands of a few: IBM in the mainframe era, DEC in the minicomputer era, Microsoft in the PC era and more recently Google, Amazon, Facebook, Apple (GAFA) in the mobile and cloud era. While there have been a few community-led efforts to fight back, all have fallen short of toppling the status quo. For example, while Linux succeeded in disrupting Unix-based hardware vendors (HP and Sun in particular) and created huge amounts of value (every modern internet company runs on it), it failed to fundamentally shift the balance in favor of open platforms.
Cryptonetworks, broadly defined as blockchain based networks powered by crypto tokens, are the most promising and ambitious attempt yet to reset industry structure and wrestle control from the closed platforms. They bring the best of what created the Internet and Linux — a thriving passionate community of developers working on an open platform — with an economic model for decentralized value capture that is novel, unique and disruptive. To understand Cryptonetworks you have to understand distributed systems and the software protocols that govern their behavior. The breakthroughs in protocol design that make Cryptonetworks possible are rooted in deep computer science as well as common sense economics, allowing for participants to capture value in an open system.
It is no accident that the rise of modern internet companies (Google, Facebook, Twitter) coincided with the rise of distributed computing, a programming model where a network of computers work together in concert to get things done. As billions of people across the world came online, distributed systems were the only cost-effective way to harness the supercomputing power required to serve growing demand. If you can’t build one powerful machine, you need to make do with a network of hundreds of thousands of machines working together to deliver supercomputing power. To quote an old Sun Microsystems marketing slogan: “The network is the computer.”
Crucially this shift from monolithic applications to distributed systems also marked a subtle shift where algorithms ceded power to software protocols: formal rules that define how network participants share, collaborate and reach agreement. Communication, coordination and consensus become paramount in a distributed network where individual nodes can fail, network links can go down, and messages can get lost or corrupted. The magic lays in the protocols that drive consensus amidst all of the chaos in the network. There is a famous impossibility result in computer science that proves that it is impossible to design a protocol that can handle all eventualities. But the last decade or so has demonstrated that practice can defeat theory. With the right set of tradeoffs and careful protocol design, it is possible to achieve near zero service downtime (When was the last time you couldn’t access the Google search engine?).
Underneath every modern internet service is a protocol stack: at the bottom of the stack is the underlying consensus protocol (e.g. Paxos), layered on top of which are lower-level protocols (e.g. lock services like Chubby), infrastructure protocols that power distributed file systems (Google File System), databases (Spanner, BigTable etc.), orchestration (Kubernetes) and finally, application-level protocols.
If the magic in a monolithic app is in its algorithms, the magic in a distributed app is in its protocols — once you work out the protocol specifications, the algorithm appears almost mundane. (Indeed, reading some of Google’s research papers one is struck by the emphasis on protocol design. The algorithm and implementation details are often just left as an exercise to the reader.)
One way to think about distributed systems is as networks where computation is decentralized: all the nodes in the network work together to deliver the results and no one node is responsible for all the work performed. Is it possible to generalize this further and decentralize not only computation but also ownership of the network? Or more concretely, is it possible to design distributed system protocols that work in networks with untrusted participants and in the presence of adversaries looking to exploit and undermine? The answer is Yes. Bitcoin first showed such a system could be built, and Ethereum expanded it further to allow for the running of arbitrary applications. In this sense, while much of Crypto can appear strange and new, at its core it is nothing more than a distributed system that can operate on an untrusted network.
What can you do with a distributed system that can operate on an untrusted network? It turns out quite a lot. Open and untrusted networks naturally support decentralized ownership. And if you can decentralize ownership, you can begin to break the market power of the incumbent centralized platform providers.
Here’s how this would work. Consider the three parties in any Cryptonetwork:
Now add Crypto-tokens as the underlying medium of exchange and unit of account for “work” (running applications, administration, verification etc.) happening inside the Cryptonetwork. Developers own some number of tokens as a reward for their efforts in creating the protocol. Operators earn tokens for being service providers (i.e. executing and validating work) inside the network. As a network grows, its developers and operators profit as the market forces of supply and demand increases the value of the tokens they hold. Finally, users can passively consume applications but also in some cases earn token rewards for engaging with the network (for instance commenting, posting, curating in a social media network). The last point is critical in incentivizing network usage and overcoming the bootstrap problem faced by every network.
So developers, operators and users work together with aligned incentives to develop, operate and consume a set of services in a completely decentralized platform. Generalized to the limit, this model can support running every conceivable app today and many new ones, resulting in a huge transfer of value away from the incumbent platforms into these networks. This is the promise of Cryptonetworks.
Decentralization brings with it some desirable properties we want from any platform and ecosystem.
First, it creates an environment with permissionless innovation that is pro-startup and anti-incumbent. Startups today need to navigate a complex landscape between walled garden app-stores, mega cloud providers controlling distribution, and platform providers with huge proprietary data advantages. Startups often fail not because they have an inferior product, but because the incumbents have the deck stacked against them. Cryptonetworks can flip the equation in favor of the attacker by creating a level playing field. New product ideas and technologies can be developed, tested and iterated without being blocked by incumbent platforms. Network effects can just as easily be created as they can be destroyed. Data moats (by the function of living in the blockchain) will no longer pose a barrier to entry. Product success becomes a function of user interest and community adoption.
Second, decentralization will increase innovation and experimentation across the entire software stack by galvanizing a global community of participants. While the last decade has seen a dramatic increase in open-source contributions from the incumbent platform players, these projects are open-source in name only. For example, Google may open-source a project, but it alone determines (based on business factors) what and when to open-source. Further, its developers dominate the community, effectively retaining de-facto control over the direction of the project. The project may be open-source, but the community is effectively closed. It’s a sad fact that the most important open-source projects in the last ten years have come from a handful of companies (Google, Facebook, LinkedIn and Twitter). And when you factor the many Apache open-source projects that were inspired by Google research papers (e.g. Hadoop, Hbase, etc.) the picture appears even more dismal. Innovation is being driven by a small few. Cryptonetworks can reverse this trend by once again opening up innovation to a passionate, global community of developers, similar to what created the Internet and Linux.
Cryptonetworks are in their infancy. There is a wide gap between where the technology is and where it needs to be in order to fulfill the promise of a decentralized web. Indeed, a number of fundamental engineering problems (especially around performance and scalability) remain unsolved. But it is safe to assume these challenges will be overcome. Betting against this is a bet against human ingenuity. The hardest part with any invention is the existence proof that something previously thought impossible is possible. Once that breakthrough happens, the rest is inevitable. Satoshi Nakamoto’s Bitcoin showed how distributed systems could function in an untrusted network. The many details needed to complete the initial idea will systematically get worked out over the next few years.
It is undeniable that the Cryptonetwork movement is chaotic and haphazard — with multiple competing projects (Ethereum vs. Bitcoin vs. Ripple etc.), community turmoil (over everything from small features to architecture and overall direction) and hardforks splintering the ecosystem. It is easy to mistake this chaos as something unique to Cryptonetworks, but in fact, it is true of all new technologies. Every new technology goes through an “era of ferment,” a period of experimentation and design competition amongst different teams — each trying to define and promote their version of the future. Normally this tumult is inside the four walls of a company and as a result hard to observe. With the Crypto movement, however, everything is in the open — all the debate, competition and ideological warfare playing out in front of the whole world. But we know from Linux and open-source in general that this can work — a loosely connected band of passionate developers can debate, argue and disagree, but in the end come together and use the power of community to build amazing new technologies.
As with all platform technologies this “era of ferment” will end with the emergence of a dominant design around which the community will coalesce. The plurality of ideas will give way to a singular architecture; competition for the winning platform will give way to competition inside the platform. Once we reach this inflection point, the platform will improve at an exponential rate. In open-source this is best described by Linus’s law: “Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.”
Almost two decades ago, Eric Raymond made the following observation about Linux in “The Cathedral and the Bazaar”:
The Linux community seems to resemble a great babbling bazaar of different agendas and approaches…out of which a coherent and stable system could seemingly emerge only by a succession of miracles.
Today Linux doesn’t seem like a miracle. It doesn’t feel subversive. We take for granted the Linux community can self-govern and produce high-quality software — good enough in fact to power most of the internet today.
And yet we look at the Cryptonetwork revolution — with all its chaos and ferment — and wonder how “a great babbling bazaar of different agendas and approaches” can lead to a stable and self-governing system? We would do well to remember that the Linux project once appeared the same way. The winning Cryptonetwork movement will be the spiritual heir to Linux, bringing together a passionate developer community to create an enduring franchise. But from an economic standpoint, it will be much bigger: the developers who build on the network will also be able to profit from their creations.