Apps vs. DApps
Some of my peers at Makers will have heard me evangelise about Ethereum, it’s the second largest cryptocurrency behind Bitcoin. Ethereum’s market cap currently sits at just over $4 Billion and has experienced roughly a 500% increase since the turn of the year, highlighting the recent surge in interest of the blockchain platform.
Last week at Makers Academy was our intro to the web week where we built a simple web based battle game. It got me thinking about the many differences between web apps and Decentralised Apps (or DApps).
What’s a DApp?
In it’s simplest terms a DApp is a software application that has it’s back end running on a decentralised peer-to-peer network, from now on any when I refer to DApps I’ll be referring specifically to DApps running on the Ethereum Blockchain since it’s the most popular place to run them.
Key Differences: Apps vs. DApps
1. DApps cost money to use
Due to the nature of Blockchains DApps cost a tiny fee every time they are interacted with, right now this cost must be paid by the caller of the DApp (and not the owner). The reason for the fee is that the DApp must be executed on thousands of nodes across the globe, the small fee is a way to compensate those operating these nodes (it also puts people off spamming the network).
The fee has some serious implications for DApp developers, more complicated DApps cost more to interacte with so devs are rewarded for writing efficient code. Another side effect is that data storage is prohibitively expensive “on-chain” so in general developers must do this somewhere else. This comes with it’s own unique challenges that I will explore next week since it’s currently Database week at Makers.
2. DApps can store value
DApps are able to store value inside themselves, for example a it’s possible to create a lottery DApp that stores Ether (the native cryptocurrency of the Blockchain) and hands it out to a random participant after a certain number (e.g. 100 Ether) are stored in the contract. This is fundamentally different from, say the National lottery, which merely acts as a trusted 3rd intermediary between participants (but does not store any value in the ‘app’). One of the key advantages of DApps is the ability to remove this trusted intermediary layer and thus provide greater value to the end user.
The ability to store and move value inside self managed applications can also lead to some fascinating economic models e.g. this blockparty DApp by Makoto Inoue that rewards attendees of events for turning up through equally distributing the deposits to those who did turn up between them.(No fees and no middlemen).
3. DApps never Die!
Once a DApp is pushed to the network it will stay there forever, anyone can use it’s services and trust that it will remain there. The big advantage here for DApps is the trust that services will not shut down — there have been countless times where online services have been discontinued to the frustration of their users.
N.B. There is a self-destruct function that can kill a DApp if called by the creator but users will be able to see which contracts have this included and which don’t.
DApps provide a greater level of synergistic possibilities, the reason for this is once a DApp is on the Blockchain anyone can interact with and use it, and many DApps will at some level be compatible with each other — for example one DApp in development, Digix, will put gold (with fractional ownership) on the Blockchain in the form of a token (DGX). Many other DApps (Augur, WeTrust, Rex etc.) have stated they will integrate DGX into their DApps, this is an incredibly simple procedure and can be done without the explicit permission of Digix.
5. DApp security is scary
Due to the fact DApps can store value, they cannot be removed, the back-end lives in public and anyone can interact with them at anytime DApp security is, in my opinion, much more important than app security. This is highlighted by a weakness in the highest valued DApp ever, the DAO. It was drained of over $50 million dollars of Ether. It’s clear DApps even tighter security than apps and extremely robust security audits are a must. This is compounded by the relatively new and untested language solidity being the go to language of DApps.
6. DApps are slow
As things stand the Ethereum network can currently handle about 15 transactions per second — this means there are some serious limitations if your DApp is going to need a lot of interaction from users. Having said this there are plans to radically improve scalability and numbers as high as 10,000 transactions per second have been mentioned by Ethereums wunderkind creator Vitalik Buterin. All transactions are also sent to the network in blocks with no guarantee that yours will be included — this can lead to longer wait times and frustrate the user.
7. DApps are Censorship Resistant
Since a DApp can not be taken down from the network the only way to remove the DApp is to shut down the network (a very hard task since 1000’s of unique nodes would have to be disconnected). The implication is that if you want to create the next Silk Road or Wikileaks a DApp is probably a better option than an app, you can be arrested but your code & DApp should remain. If there is overwhelming community support to remove a DApp it is possible through a hard fork however this is controversial and unlikely to happen except in extreme circumstances.
Rock Paper Scissors
For our Makers weekend challenge we were asked to build a Rock Paper Scissors App so I decided to see if anyone had built a DApp with the same function… and they had! It’s essentially a gambling DApp where the DApp owner takes a 1% fee, this is an example of a bad DApp since there really is no point in the 1% fee — of course I can fork the code remove the fee and push a better DApp to the Blockchain for anyone to use :)