Decentralization is one of the most hotly-contested topics to debate in our time. An era where such a form of currency exists, that you cannot touch… but can buy the touchable via; cryptocurrency. Now coming to a point where holding such discussions is not sci-fi but rather a matter of the actual financial reality took a lot of innovation. This article discusses one aspect of that innovation which is the advent of DApps.
In order to get a good grasp of what dApps are, we will be looking at the topic in the following manner:
- The Traditional way in which apps worked
- A Loud Change
- dApps and the technology it relies upon
Before jumping on the actual bulk of the topic, it is necessary to provide the context in order to maximize the learning process. Think of how crazy an article such as this one, would have been if we were to only go back two decades ago. Two decades ago when even thinking about an idea such as blockchain could hardly have led to a real conversation and in contrast, how the tech industry derived inspiration from the way some cryptocurrencies work is the main core idea of this article.
In this article, we intend to explore the new verge of app development. We intend to explore how fueled by the rise of cryptocurrencies and their blockchain networks came a new way to think about processing data and how we could build the future in line with ideas of confidentiality and open accounting. And yes, like with every other article, we intend to explore this topic covering a lot of the major segments relevant to it, in great detail.
Let us jump to the first point in focus
The traditional way in which apps worked
Going back to the early days when PCs weren’t that common, the prospect of even going into the field of developing apps was far from your everyday student’s future goal. However, it was due to the minority of students willing to do the brain work of going into the field of programming and hardware and software development did we then have the majority of innovative changes along the way.
Starting from the 1970s and up until the early ‘90s, there were companies such as IBM, Apple and PET which were competing to bring the first successful Personal Computer into people’s homes.
What we recognize as a computer today may very well be science fiction for the people of the past. Noting that most computers before the 90s only featured hard disk storage ranging in several MBs, the prospect of computers like the ones we have today was purely the talk of the mighty future.
However, in 1984, the first personal computer that could be used by your average everyday layman was introduced by Apple by the name of Macintosh. This could be where the majority of your public started getting settled in with the idea that “computers are here, and they’re here in a way we can do things with them”. This could be correlated to the rise of software development in the years to come.
Software Development, when in its early stages, usually meant developing a program only to be used on PCs not that heavily dependent on the internet for the majority of their functioning. As programs themselves are merely lines of code that tell computers the tasks they have to perform, along with information on how to execute the said task, they can be written with a variety of intentions in mind. During the early periods of computers being accepted into households, programmers did code programs but they were only for offline purposes.
Take Microsoft Solitaire, for example. A game developed in 1990, for users to house on their computers whether or not they may have an internet connection available. The program would contain lines of codes including all the instructions that the program would need so that the user can interact with the program in a completely meant-for manner. This would ensure that the user interacts with the complete program without requiring a connection to the internet.
There did exist internet explorers as well however, with most internet explorers at the time, the main functioning of retrieving websites is sourced from a group of lines that are coded within the program that can be executed even when the program does not have access to the internet. Think about it, even if you’re offline, you can still open your web browser. Sure, it won’t load up any online websites but you can still open the browser.
These offline softwares are fairly easy to understand in terms of their networking. The instructions are located in the memory from where the computer accesses these and executes the lines of code hence, “running the program”. With the old orthodox fashion of having offline software, there was no need to access the internet in order to have the program run.
This changed as the rise of the internet came around. There came the rise of numerous chat apps, antiviruses that update themselves automatically and even multiplayer games. These softwares started a new wave or a form of user experience which was dependent on connection to the internet. This could mean a form of user experience that was available offline, which could be enhanced by connecting to the internet. This meant that developers had to incorporate the idea of hosting a functioning piece of their software online.
This could be simply explained as a system where the code to retrieve information from the relevant locations stored on the web is stored in the main software code housed in the user’s computer. Now, the user requires an internet connection in order to allow the software to retrieve information stored on the internet. The location where the relevant information is stored is usually on data banks such as servers.
Servers are conventionally stored under the supervision of the developers’ or associated parties hosting information of developers on their servers. The developers are in control of the data stored on the server as codes that allow softwares in the users’ computers to function are coded by the developers themselves. This was how developers used to roll out online updates to their softwares in the past and still do now.
This is where software development and operation started to get revolutionized. From distributing CDs and USB Dongles, in order to carry out software installs, updates and even verification. In the old days, there were requirements such as having the developer’s distributed CD or USB Dongle connected to the computer in order to allow the software to be run. Nowadays, however, developers roll out online verification via the use of double-checking the software’s status using data stored on the server.
A Loud Change
Soon came the age of portable computers; smartphones. Whether it be the voice of the “Hello Moto” rocking through the speakers of those flippable fun phones to the infamous speech of Steve Jobs in his black turtleneck taking out from his pocket, the one device which would revolutionize the new era of personal computers; there was approaching a new page in the book of software development; apps.
No matter how much the smartphone wars may be fought, the first major platform which allowed for the downloading of applications on their smartphone was actually Apple’s App Store on its iOS. Android was not that late to catch up too, however, and hence, an application market was established. Apple’s App Store and Google’s Play Store were housing thousands of apps and developers were quickly moving and adapting to the new technological advancements of the time.
Now the properties of the apps housed in these stores varied, however, there is a trend that is relevant to the entire topic and one which is useful to point out here. The apps got increasingly online. As smartphones were starting to carry data connectivity and WIFI capabilities, developers got more leeway to try to experiment with using different systems in order to deliver their desired user experience.
With this came a more increasing awareness of data and its collection from both users and corporations who figured out how valuable user data is. Facebook, for example, claims it is free to use the social network, and while it remains true to that statement its main business model relies on utilizing the data it collects from users in order to show them targeted ads from corporations that pay Facebook in return. This started to cause concerns in the minds of users of Facebook and other applications which processed user data about how their data is being processed and their anonymity.
Mistrust really started to stem from the fact that it was solely the corporations or the companies running these applications which were in control of the servers which housed the data of the users and while many later allowed the users to look at all the data collected, there was limited control over what could be shared and how it was processed.
Where the users have less control over what is being offered to them, there are always instances where the users try to get the control back in their hands or at least away from the few hands it conventionally used to lie in. Take currency for example, where users did not like the way banks were in complete control of major aspects of what was essentially their hard-earned money.
If bankers made any mistakes, it would be at the cost of the integrity of the financial system upon which depended the livelihood of the masses. As a result, the users wanted a much more integral system that was not in control of the banks. In pursuit of a decentralized system came the adoption of cryptocurrencies; mainly Bitcoin.
Note that it was the pursuit of the decentralized which encouraged the masses to adopt bitcoin. The thought of centrality in particular domains does not settle well with people and while there are a lot of reasons for why that may be true, they will be discussed in the latter portion of this article.
Now that we have established the ideas of decentralization in this article coupled with the history of software and application development, the time is right to finally present dApps.
DApps and the technology it relies upon
Short for decentralized applications, dApps are the new wave of technological advancements in the software development industry in terms of how data is collected and processed. Decentralized applications may not look different to the end user however, their functioning depends on a system many are already familiar with; the blockchain.
Blockchain, as many of you may already be familiar with, is a network dependent on members who volunteer to participate in it acting as nodes. Transactions are processed by each node of the network and is done openly so a blockchain system can be said to allow the functioning of what many would refer to as a public ledger. The system of blockchain allows bitcoin to have all the advantages its users love it for. For example, the anonymity its users safeguard is also a by-product of the blockchain system of bitcoin.
As information that is to be processed is processable by any “node” or member of the blockchain, it is a method of open accounting. There is indeed a public ledger maintained and because it is accessible by anyone, it can be said to have a way via which any party can perform scrutiny.
Hence, what dApps are can easily be answered by looking at their distinctive features and how they set them apart from the normal kind of applications you encounter on the net.
Decentralized apps use a network of blockchain to process data and in doing so, ensure that the data being processed is openly done so. In doing so, dApps are very practically impossible to censor.
This means that the processing of the data of the app is carried out by members of the blockchain and as an incentive for carrying out the processing of data, they are usually rewarded tokens. A good example of this is how mining benefits the user in return for processing important transaction data for the maintenance of the Bitcoin blockchain, in the quickest amount of time before anybody else.
Apart from a blockchain that is maintained via incentivisation, the blockchain is immutable. This means the blockchain cannot be changed. Any processing of data, can hence not be erased. This allows the ‘open accounting’ or the ‘public ledger’ part of the blockchain-based technology to really play its part and this allows there to be a viable ledger that is public.
Since the blockchain is open to be scrutinized by the public, the public has access to the blockchain inside out. This means that even the code of the dApps itself is open to see by the public. This means that how the app operates, and how it processes data exactly, is open for the public eye to see. This is a level of transparency found limited in the majority of common popular apps seen these days.
This also means that as the information of the program code is not held by the developer, so is the case with regards to any updates to the program code as well. Any changes or updates to the entire system must be rolled out by a form of consensus mechanism and will not rely solely on the hands of the developer.
Looking at the features of dApps, they can carry out a variety of operations as they can be coded for endless possibilities.
At the core of decentralized applications is the existence of smart contracts. Smart Contracts are, as the name suggests, contracts that are coded to self-execute once certain predetermined conditions are met. These smart contracts are coded into the system running dApps and hence are usually immutable.
Smart Contracts usually facilitate transactions between sellers and buyers and since the contracts are coded into the system itself, they do not require trust. Hence known as ‘trustless’ where the parties do not need to trust on the other to do their end of the transaction. Rather, the transaction is automatically carried out by the system itself. For example, buying NFTs on a marketplace governed using dApp technology.
As dApps have processing done via the nodes of the blockchain, it essentially has zero downtime. Smart Contracts are also available at each node and hence increasing the speed at which data is processed.
However, it should be noted that since the blockchain is immutable, smart contracts must be ensured to the point users are confident it does exactly what it intends to do. Any party which has found an exploit in the smart contracts, or if the smart contracts themselves have a bug; such situations will be difficult to tackle as blockchains are not editable.
Conclusion
In order to conclude the topic of dApps, let’s look at how we approached this topic in the article. First, we started off with the history of how softwares used to be developed in the early days and how their development evolved in the coming decades to the point where people wanted a shift towards decentralized processing of data. Hence, we start off with the idea of dApps and how they are different from the majority of the popular softwares seen these days.