To recap, last week we described the working of a blockchain with an example of people using a distributed ledger which was accessible by all parties and all transactions were visible to everyone. This is possible through decentralization which is one of the pillars of blockchain technology.
What is Decentralization?
Decentralization means there is no central point of control. Instead, decisions are made over a distributed network of computers (via consensus, to be discussed later!). Decentralization removes responsibility and capability from a central location and devolves it across a network of connected computers.
In a decentralized setup, parties need not trust each other or need a centralized party to carry out that trust function. For e.g., a stock exchange with several non related parties (banks, depository, traders, brokers, clearing house, customers etc) who do not trust each other is a good use case for blockchain. The Australian Stock Exchange has recently introduced DLT as a Service. DLT means "Distributed Ledger Technology".
In a centralized network, all the systems & database are centralized in one location or under one authority. All users rely on this central authority to maintain and record transactions. For example, in a bank, customers rely on the bank's systems to correctly adjust their balances when a transfer occurs.
The central authority fully controls the whole system, including updating back end databases or by upgrading software that implements the system.
It can be seen that a central authority is a single point of failure which means in case this authority gets compromised, all the data and software under this authority's control gets compromised too.
This is the architecture of any web 2.0 application where most data is centrally stored and managed on the servers of "trusted" institutions.
I referred to Web 2.0 above. What is Web 2.0?
For a high level summary of how a typical web 2.0 application works, let us take an example of a social media website. A web application typically has three parts :
The Front End - which defines the user interface or typically what the user sees when he / she accesses the website. What does the site look like and how the user interacts with the website. E.g., the login page. Websites are structured using HTML (Hypertext Markup Language), stylized using CSS (Cascading Style Sheet) and user interactions are defined through JavaScript
The Back End - which defines the logic of the website. E.g., user registration, signing up, login, querying data etc. The back end logic is usually defined using python or Java etc.
The Database - which stores data like user logins, passwords along with any other relevant information like posts, comments, likes etc.
The below diagram makes it more clear
So basically, the user interacts with the front end, which in turn communicates with the back end which in turn communicates with the database. Depending on the user interaction, the back end queries the database and gives back the result to the front end which the user sees and responds accordingly. For example, when a user logs in to a website,
the user enters the user name and password on the login page (Front end)
The back end queries the database for the username and the password (the actual password is normally not stored in the database but an encrypted version of it through a process called hashing).
If the username exists and the password hash matches in the database, then the back end accepts the user login and the same is shown as successful to the user through the front end by successfully allowing the user to login.
The rise of Web 2.0 was largely driven by
a. Mobile internet access - which dramatically broadened the usage of the Web when we moved from dial up access for a few hours from a desktop to an "always connected" state in everyone's pocket.
b. Social Media - All the likes, dislikes, comments, photo sharing, video sharing, content etc. Need I say more?
c. Cloud - Companies shifted from buying & maintaining their own expensive and dedicated hardware upfront to renting storage, compute power & IT tools. This resulted in companies benefiting from low-cost resources that scaled as their businesses grew.
Blockchain is leading what we are seeing as the next paradigm shift in internet applications which is called Web 3.0.
Unlike Web 2.0 applications, for Web 3.0 applications, there are neither centralized web servers where the back end resides nor centralized databases that stores data or information. Instead the blockchain infrastructure is used to build apps on decentralized machines that are connected to each other through the internet.
In a blockchain, we deal with peer-to-peer network where each computer is linked to one another. An elaborate blog on decentralization by Vitalik Buterin (The founder of Ethereum) is worth a read for those interested in diving further. One key point which he made was
Blockchains are
politically decentralized (no one controls them) and
architecturally decentralized (no infrastructural central point of failure)
but they are logically centralized (there is one commonly agreed state and the system behaves like a single computer)
How are these computers in a blockchain linked to each other and how do they maintain the same balances or show the same transactions in each of their linked systems or in other words, how do they maintain the same agreed "state"?
Also, how does the interaction between the user and the application happen in a web 3.0 environment? These are the rabbit holes we will get into as we go along!!