NOTE: A few days, ago, I wrote about decentralization as the foundational concept behind Web 3. In this post, I wanted to dig into this a bit further - specifically focusing on why the power shift between application developers to protocol developers is so important. Again, there are a number of amazing articles that helped me develop my understanding of this topic.
The Internet we know today exists because of two fundamental aspects of software: protocols and applications.
Applications are what end users interact with. Applications provide additional higher order functions - like presentation, logic, and memory. These higher order functions necessary to create any useful product or service for end users: the presentation layer provides interfaces to interact with, the memory layer (or data layer) provides the ability to store data, and the logic layer provides additional functional capability. Applications use open protocols for communication. For example, Gmail uses the SMTP protocol.
Put together, applications and protocols are the building blocks for today’s internet applications. This structure is reflected in popular development frameworks like MVC.
Applications today have all the control over the presentation, logic and data of their products and services. This has allowed for incredible innovations, convenience to end users, and ultimately a lot of value created. Application developers today represent some of the most valuable companies in the world. Most importantly, there is an implicit trust built into this architecture - that application developers will always act in the best interest of it’s users.
We have seen this is not always the case. Application developers can abuse, neglect or be irresponsible with this level of control, and it has major negative downstream impact. The popularity of mobile and internet services makes this level of control a social and political issue around the world. We are seeing this play out in various ways.
From the beginning of the Internet until recently, there really was no technical solution to the problem of applications having full control of layers of internet products. Put another way, there was no way to bake in trust into applications without a central party. Providing that same level of service meant control over presentation, logic and data.
In 2008, this changed with the arrival of Bitcoin and it’s underlying invention - the Blockchain.
In technical terms, the Blockchain is a database distributed across multiple computers in the form of a ledger, that uses cryptographic techniques to ensure data cannot be tampered with once “written to the chain”. While distributed databases were possible before the blockchain, there was no way to ensure all computers had the same data (without a ‘central’ authority) without some novel cryptographic functions that made this possible. As Ben Horowitz put it, “you don’t have to trust any computers - you just have to trust the math”.
With this technology, multiple computers can come to agreement on the state of an application’s data and logic without a central party. This is a framework for data and logic to live outside the application layer, and into the protocol layer itself.
Without knowing how it all works, just this simple fact is important - that we can build useful services without giving up control of the data and logic to a single application developer. This can be an existential threat for some of the most valuable companies in the world which are built on the existing structure of value in the application layer.
Decentralization is the process of making this change - of products and services moving into the shared protocol layer, with fundamentally different incentives and power structures than what exists today.