Criteria for Making A Successful DApp (Decentralized Application)
What is decentralization?
If you're a Steemer you probably know this already but I'm going to throw it in here anyway. Decentralization is the process of distributing or dispersing functions, powers, people or things from a local or central authority.
So what is a decentralized app?
A decentralized application is an app that runs on a distributed network of computers/ledger. It is a distributed network because it resides on multiple computers which means if one node fails the network continues to work uninhibited. This also allows for immutability and persistence.
So let's get to the criteria of making a successful DApp.
Criteria 1: Open Source
A DApp requires its' users to trust that the application is working in their best interests. Most DApps are set up for what I would call here "positive monetary gain" which means, the developer setup their application, included a featured product and offered it to the public at a certain price. In order for users of your DApp to accept and trust your software, most seasoned users interacting with the application would want to read the source code to make sure everything is running the way it should and that there are no provisions for the developer of the DApp to up and leave with users investments. Closed-source apps regularly raise red-flags with seasoned individuals and typically act as a barrier to adoption of the product.
Criteria 2: Internal Currency
A concerning factor that regularly comes up is how to monetize an application that has essentially given all the power to its' users. Most traditional revenue based models rely on advertising, referrals, access rights to data and subscription fees and you would think that making an application fully open source would wipe all potential streams off the table right?
There are numerous things a developer of a DApp shouldn't do so I won't get into all that but what I will get into is what you should do. The common consensus of creating a revenue-based business model via your DApp is to issue what most refer to tokens/app tokens. The key is to issue a limited number of these tokens which will result in a scarce availability hence making the tokens linked to your product "valuable". Scarce resources could also be a variety of things such as storage space but for simplicity with this explanation, we'll stick to tokens.
Most DApps result in a pay-to-use scheme where users must pay a certain fee in order to engage with the featured products of the application. This, however, is not always the case. In quite a few "crypto-gaming" DApps the developers will offer incentives to potential new users through an airdrop after signing up or a bonus for participating in a pre-sale event.
Criteria 3: Decentralized Consensus(Agreement)
In the past with the traditional consensus models, a transaction always had to go through a "clearing" facility that monitored all transactions. This typically meant that consensus was always met by the governing body only without taking into account the thoughts or needs of the client. This is typically what a centralized service is. Decentralized currencies and applications function using peer-to-peer(P2P) networks. P2P networks have existed for a very long time and cryptocurrencies have in no way pioneered to decentralization model. Examples of P2P networks pre-dating blockchain technology are Distributed Hash Tables like BitTorrent which great for storing and streaming decentralized data to a vast number of users with no centralized authority to govern transactions. In order to build specific things such as application-level constructs i.e status updates and usernames, you would need everyone to agree on a decentralized method utilizing blockchain technology. Whereas blockchain tech serves to only complement DHT's what makes blockchain tech unique is the fact that nodes aren't forced into trusting each other. The blockchain itself is a vast decentralized base of transactions and it's the first database (decentralized) that is highly tamper-resistant.
The innovation behind blockchain is a decentralized consensus model. In the likely scenario, you're designing an application that requires consensus you should consider using the blockchain for the backend of your project. A good and clear example of this would be a naming system where the importance of who has a certain name doesn't matter but what really matters is the overall consensus on who should have that name. Most decentralized protocols in the past required trusted nodes working together whereas the blockchain is an immutable record distributed across the network for consensus that way no other individual can pretend to be named the same. This is usually achieved through the use of smart contracts on a network like the Ethereum mainnet or rather recently the EOS network built on top of the Ethereum mainnet.
What is a smart contract?
A smart contract is essentially a snippet/piece of code that resides on the blockchain enabled by consensus and protected through immutability. When a programmed condition is triggered the smart contract executes the corresponding contractual clause. The thing that differentiates this from making the more traditional API call is that smart contracts as mentioned before, live on the blockchain. Unlike API calls, no third party trust would be required and there is no need to trust a specific server owner.
Criteria 4: No Central Failure Point
Unlike applications of old, DApps cannot be shut down because there is no centralized source to shut down. Once the contracts are deployed to the network it is spread across all network nodes resulting in an immutable smart contract. There are actively a number of decentralized database systems that allow such a model such as BitTorrent and Interplanetary File System, however, my recommendation would be blockchain at the moment. Mostly for security reasons.
As we come to a conclusion, are there any DApps that satisfy all four criteria?
Well, the real answer is that there are numerous cryptocurrencies that satisfy all four criteria but the number of applications following this model has been slow to catch up. Taking social media apps or ride-sharing app Stacks and decentralizing it all has proven to be a worthy task for many in the field but on the broader scale of things, most people are comfortable on centralized applications that already do what they want the way they want it. There are actively a number of players building DApps on top of cryptocurrencies but I don't have to tell you this if you're here you obviously know that already. What most people don't know is that a larger number of developers need worthy examples to jump on the bandwagon and make this sector more of a mainstream product.
The sector has potential and is rapidly growing it will be great to see what comes around by the end of the year. (2018)