Error message
Warning: Undefined array key 0 in amp_entity_view_alter() (line 156 of modules/contrib/amp/amp.module).amp_entity_view_alter(Array, Object, Object) (Line: 545) Drupal\Core\Extension\ModuleHandler->alter('node_view', Array, Object, Object) (Line: 304) Drupal\Core\Entity\EntityViewBuilder->buildMultiple(Array) (Line: 238) Drupal\Core\Entity\EntityViewBuilder->build(Array) call_user_func_array(Array, Array) (Line: 111) Drupal\Core\Render\Renderer->doTrustedCallback(Array, Array, 'Render #pre_render callbacks must be methods of a class that implements \Drupal\Core\Security\TrustedCallbackInterface or be an anonymous function. The callback was %s. See https://www.drupal.org/node/2966725', 'exception', 'Drupal\Core\Render\Element\RenderCallbackInterface') (Line: 788) Drupal\Core\Render\Renderer->doCallback('#pre_render', Array, Array) (Line: 377) Drupal\Core\Render\Renderer->doRender(Array, ) (Line: 204) Drupal\Core\Render\Renderer->render(Array, ) (Line: 238) Drupal\Core\Render\MainContent\HtmlRenderer->Drupal\Core\Render\MainContent\{closure}() (Line: 583) Drupal\Core\Render\Renderer->executeInRenderContext(Object, Object) (Line: 239) Drupal\Core\Render\MainContent\HtmlRenderer->prepare(Array, Object, Object) (Line: 128) Drupal\Core\Render\MainContent\HtmlRenderer->renderResponse(Array, Object, Object) (Line: 90) Drupal\Core\EventSubscriber\MainContentViewSubscriber->onViewRenderArray(Object, 'kernel.view', Object) call_user_func(Array, Object, 'kernel.view', Object) (Line: 111) Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher->dispatch(Object, 'kernel.view') (Line: 187) Symfony\Component\HttpKernel\HttpKernel->handleRaw(Object, 1) (Line: 76) Symfony\Component\HttpKernel\HttpKernel->handle(Object, 1, 1) (Line: 58) Drupal\Core\StackMiddleware\Session->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\KernelPreHandle->handle(Object, 1, 1) (Line: 191) Drupal\page_cache\StackMiddleware\PageCache->fetch(Object, 1, 1) (Line: 128) Drupal\page_cache\StackMiddleware\PageCache->lookup(Object, 1, 1) (Line: 82) Drupal\page_cache\StackMiddleware\PageCache->handle(Object, 1, 1) (Line: 48) Drupal\Core\StackMiddleware\ReverseProxyMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\NegotiationMiddleware->handle(Object, 1, 1) (Line: 51) Drupal\Core\StackMiddleware\StackedHttpKernel->handle(Object, 1, 1) (Line: 704) Drupal\Core\DrupalKernel->handle(Object) (Line: 18)
What Is Decentralized Application (dApp): Explanation for Beginners
What are dApps?
Do you still remember the 2017 Amazon Web Services mega-outage that led to nearly a third of the Internet being inaccessible for five hours? This occasion shows exactly how centralized our web is. To put it into perspective, just a handful of mammoth-size IT giants in the likes of Google, Facebook and, of course, the aforementioned Amazon has too much control concentrated in their hands. Such near-monopolies in the IT world are not immune to failures while their omnipresence also raises concerns about censorship, abuse of power, and other vital issues. Subsequently, that created a need for decentralization.
What is a dApp? Decentralized applications (dApps), unlike Uber, Twitter, Facebook (you name it), are not controlled by a single organization. In order to grasp the idea behind dApps, one has to recall BitTorrent, a P2P network for file sharing that came into the limelight back in 2004. The technology relies on tight cooperation of all participants — while some users contribute the content, others are consuming it. Numerous P2P applications represented the most simplistic form of a dApps, and then they have been drastically modernized with the appearance of the disruptive Blockchain technology. Notably, their modus operandi practically remains the same (storing and sharing data), but these apps became more complex, while the number of possible use cases has dramatically increased.
All information is stored on Blockchain, an incorruptible digital ledger. The irreversible nature of this technology is considered to be one of its most salient features. What if somebody wants to create a decentralized version of Twitter? In this case, none of your tweets could be deleted by a centralized authority — they will be stored forever (unless you somehow edit them).
Major features
After we’ve briefly discussed the definition of dApp, let’s proceed to the most characteristic features of dApps for you to know how to distinguish them from other apps.
-
Open source. There is a well-known expression “it takes a village to raise a child” that perfectly defines the essence of dApps since anyone with certain background knowledge can edit the structure of such apps in order to improve their usability.
-
Native token. A reward to the users of a certain ecosystem is usually paid in native tokens (the so-called “appcoins”). At the same time, centralized apps charge transaction fees in order to monetize their projects.
Advertisement -
Absence of a centralized governing body. dApps do not need an intermediary in order to function properly. Furthermore, there is no need to check the validity of information since Blockchain stores everything in an unalterable form (in case with Bitcoin, for instance, all transactions are publicly visible).
-
Zero downtime. The whole idea of Blockchain practically eliminates the possibility of a failure (like in the aforementioned case with Amazon Web Services). There is no single server that the whole system depends on. Instead, numerous independent nodes are running on the Blockchain network. Furthermore, decentralized databases like Blockchain are — significantly — less prone to security breaches than a single database.
What are the main types of dApps? Generally, all decentralized applications can be divided into two major groups — those that were created before and after the emergence of the Blockchain technology. Subsequently, Bitcoin, Tor, and other P2P-based applications all belong to the first group. However, the second group of dApps can be also divided into three other subtypes.
Types of dApps
Type |
Function |
Type I |
The first type of dApps has its own Blockchain (case in point: Ethereum, which provides dApps developers with a foundation layer). |
Type II |
dApps of the second type run their protocols on the Blockchain of Type 1. |
Type III |
Eventually, there is also the third type of Blockchain dApps that are utilizing the protocol of Type 2. |
Obviously, the main distinction between these applications lies in their degree of specialization. You can actually draw a parallel between the first type of dApps and an ordinary operation system (Windows, Android, iOS, etc.): it provides a background for other types of applications. Type 2 is a basic multifunctional app that is built on top of that OS, while Type 3 serves some more specific purposes.
The Ethereum dApp development process usually involves the following steps.
-
Creating a white paper that presents all the features of the would-be app;
-
Holding an ICO to find investors;
-
Building the app with the help of raised funds.
Examples
Now that we’ve covered the essentials of decentralized apps in detail, let’s consider some of the major examples of such apps. These are all Ethereum-based dApps built with the help of Ethereum Virtual Machine (EVM) that was launched back in 2015.
Etherisc
Etherisc is a travel-oriented app that utilizes smart contracts in order to provide insurance for flight delays and cancellations. For instance, you can receive a payout in a snap if your flight gets delayed by more than 45 minutes. Hence, you can cut the red tape that is typical for traditional insurance companies.
Golem
Golem is a project with an ambitious plan to create the largest supercomputer in the world. The Golem dApp (similarly to the Sia network) gives its users an ability to rent computing resources from other users who are part of the global P2P network. While the project is poised to be big, GNT, the native token, has already fallen off the radar.
Ethlance
As U.Today reported earlier, Blockchain also has the potential to reshape the global freelance market, and Ethlance, a global freelancing marketplace, could be a stepping stone. It allows establishing a direct contact between a freelancer and a client, eliminating the necessity to pay a fee to an intermediary. All transactions are conducted with the help of smart contracts.
Still, all these apps aren’t even inching closer toward rivaling the existing centralized alternatives — they barely have any user base and social media presence. Why?
card
The great adoption issue
The harsh reality is that all decentralized applications still struggle to gain mainstream adoption. For instance, Andreessen Horowitz-backed CryptoKitties turned out to be the textbook definition of a bomb — its popularity practically diminished in a matter of months. Back in December, during the great crypto boom, people would shell out a whopping $140,000 for an opportunity to have a unique digital cat, but now the startup is left with minuscule user base (which its CEO plans to expand by foraying into the Asian market). However, it doesn’t stop there — Augur, a decentralized prediction service that raised $5 mln, barely has 50 users. Even Bancor, a banking Blockchain app with a jaw-dropping $153 mln raised last year, is now struggling to live up to the hype with less than 500 daily users.
The biggest hindrance is probably the poor usability of dApps — they should be as fast and intuitive as ordinary centralized apps are. One of the main reasons behind their failure to win over the general public is considered to be a huge level of volatility in the crypto space. While Bitcoin remains remarkably stable, other ICOs are still experiencing constant price fluctuations, and ICO participants usually belong to the “hodl” crowd. Subsequently, dApps cannot grow a proper user base since there is no reason to trade certain goods or services when their value could drastically change in a matter of days (or even hours).
Given how little decentralized apps have been around, there is always a room for wider adoption, but first, the developers have to bring down the educational barrier between the user and the app.