paint-brush
What is a Dapp? And What it Most Definitely is Not.by@paul-arssov
948 reads
948 reads

What is a Dapp? And What it Most Definitely is Not.

by paul arssovSeptember 8th, 2019
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

A decentralized app / Dapp is NOT distributed, it IS NOT running on multiple computers, and it may or may not have the peer to peer option. It IS a computer program which runs on a single computer - be it a notebook, tablet, phone, raspberry pi system, etc. It IS NOT dependent on the consensus protocol of the blockchain, or proof-of-work. A request send from a Dapp, if valid, IS always processed by the node and may be incorporated in the next block. The actual way of calling is by HTTP GET/POST requests to 'localhost' - for ex.

Company Mentioned

Mention Thumbnail
featured image - What is a Dapp? And What it Most Definitely is Not.
paul arssov HackerNoon profile picture

1. Definition

To be honest I got irritated!

One after another articles come claiming to know what a blockchain Dapp is but post instead 'fairy tales' of wishful thinking and marketing hype.

Some background - what is called a blockchain is a network composed of nodes which have their own copies of all the transactions since creation of the blockchain.

A decentralized app / Dapp definition is that it is an instance of a computer program which does access to a blockchain through a node of the blockchain, and sends a request on the specific node's copy of the blockchain (usually to transfer coins or to call smart contract functions), and this request gets propagated and written on other nodes copies of the blockchain.

Other instances of the same Dapp or other Dapp-s on the same blockchain may or may not poll the blockchain through the same node or other nodes of the blockchain, and when seeing specific posted requests may or may not chose to respond with posting their own requests on their node's copy of the blockchain.


2. What a Dapp is not, and what it is?

A decentralized app / Dapp is (or not) -

  • IS NOT distributed, it IS NOT running on multiple computers, and it may or may not have the peer to peer option; it IS a computer program which runs on a single computer - be it a notebook, tablet, phone, raspberry pi system, etc.
  • IS irrelevant whether the Dapp is open sourced or not; being open sourced IS NOT making the Dapp decentralized; even when having the source code few people would read it, even fewer will actually fully understand it, and almost no one will modify, build and run their own version;
  • IS NOT calling or running on multiple nodes, but IS calling a single node;
  • IS NOT dependent on the consensus protocol of the blockchain, or proof-of-work / proof-of-stake method used by the blockchain; a request send from a Dapp, if valid, IS always processed by the node and may be incorporated in the next block of the blockchain;

3. How is the access to the blockchain actually done

A blockchain node usually has a 'daemon' - program running in the background, which initially downloads a copy of the blockchain on a local disk and then keeps synchronizing with blockchain.

This 'daemon' program - for ex. called 'bitcoind' for Bitcoin, or 'geth' for Ethereum usually have remote procedure calls (RPC) application programming interface (API) which allow reading of the blockchain blocks and posting or writing requests on the blockchain, as shown:

- Bitcoin RPC API-s - for ex. SendToAddress or SendRawTransaction

- Ethereum RPC API-s - for ex. eth_sendTransaction or eth_call

The actual way of calling is by HTTP GET/POST requests to 'localhost' - for ex. :

- for Bitcoin (mainnet) - http://localhost:8332/

- for Ethereum (geth) - http://localhost:8545/

All Dapp-s, regardless of how many middle software layers they go through, come finally to make HTTP GET/POST requests to a node in order to access the blockchain.

4. Types of Dapps

Based on the way of access to the blockchain there are 2 types of Dapp-s:

- type1 - accessing the blockchain through their own node; even with new of small blockchains this way places a heavy burden to the user of the Dapp as they preferably have to run the node non-stop, and keep synchronizing;

- type2 - accessing the blockchain through a publicly web visible node; such node have to serve multiple users, but the users are relieved from the burden of constant downloading and storing of blockchain data;

Crypto-tokens/coins themselves can be 2 types:

- tokens having their own blockchain - for ex. Bitcoin

- tokens residing as 'tenants' on a blockchain - for ex. ERC-xxx tokens on Ethereum blockchain;

Regardless of not having own blockchain the 'tenants' still have to use either type1 or type2 access to the underlying blockchain - for ex. ERC-xxx tokens need to access the Ethereum blockchain;

An article in praising of the Ethereum blockchain did state that the blockchain has tens to hundreds of thousands of nodes, and proudly announced that there were more than a million downloads of 'metamask' - a browser extension allowing Dapp-s to access Ethereum blockchain.

What the writer of the article did fail to realize is that a million or more users have to access the Ethereum blockchain through few (or a single) 'metamask' node-s.

Which invites the question - can a million instances of decentralized app-s all going through a single centralized node still have the claim of being decentralized?!


5. Does this make sense?

Armed with the knowledge in this article please check articles about what a Dapp is and ask yourself - how much sense does it make what I am reading, how much is true, and how much is wishful thinking and/or marketing hype?

The above article looks at Dapps in the context of use with blockchains.

But is the use of blockchain technology the best way to solve issues? Are there other and better ways?

If skeptical about blockchains and/or curious about what post-blockchain future may look like please check :

let's get rid of the blockchain - init()

let's get rid of the blockchain - on_decentralization()