Distributed applications (DApps) aren’t like regular applications. They run on top of an entire blockchain network, rather than drawing from one centralized computing source such as a hard drive installation or a remote server. Blockchain transactions are gaining so much traction in the tech world because their immutable ledger allows highly trustworthy transactions that don’t require third-party verification or oversight.
DApps use smart contracts to build applications where blockchain transactions trigger further programming, featuring the same trustworthiness and decentralization that characterize the transactions themselves.
So how do you build a DApp on the blockchain? The first step is one of the most important: deciding on a blockchain protocol.
Your choice of blockchain protocol will depend heavily on how you ultimately want your app to function. There is a wide range of protocols available (though Ethereum has been the go-to foundation for most ICOs over the past year). Protocol choice depends, among other things, on how public you want your app to be and how you want it to establish consensus.
- Public, Private, or Permissioned?
Most blockchains that incorporate cryptocurrencies (e.g., Bitcoin and Ethereum) are public blockchains. They enable universal and anonymous participation–anyone can own and trade Bitcoin or altcoins. For this reason, most developers working on apps for general consumption default to public blockchains. If you’re developing a blockchain app for a particular group of trusted individuals, however, you might opt for a private blockchain, which is invisible to the public. An “in-between” option is a permissioned blockchain, which generally has visible transactions but requires permission for some kinds of participation (e.g., Ripple decides who can serve as a transaction validator on their network).
- What Kind of Consensus Mechanism?
One of blockchain’s most prized attributes is its immutable ledger, which stays immutable through network-wide agreement on its contents. Blockchains use different methods to establish this consensus. Bitcoin and Ethereum both use the energy-intensive proof-of-work consensus, though Ethereum plans to move to proof-of-stake (which requires less energy but arguably concentrates rather than decentralizes computing power) later this year. Beyond these two popular protocols, a host of startups and projects are proposing consensus modifications such as sharding or delegation and novel consensus protocols, such as “proof of activity,” “proof of burn,” and “proof of capacity.”
Both decisions are closely tied to questions of scalability, a topic of raging debate in the blockchain community. When blockchain protocols run into scalability issues, they can quickly become slow and ineffective. Even if your app isn’t overloaded, bottlenecks elsewhere on the network could affect its functionality. Many Ethereum developers learned this the hard way in late 2017 when DApp game CryptoKitties caused so much network activity that it practically froze many other programs. This goes a long way towards explaining why Ethereum is transitioning to proof-of-stake.
Public blockchains are slower than private ones, but for many developers, they may be the only feasible option. These developers may want to look into next-generation blockchain consensus protocols, whose creators argue could provide far greater scalability. Dispatch Labs offers a protocol that establishes consensus through a process they call Delegated Asynchronous Proof of Stake, which combines a novel consensus-generating mechanism with on-chain management of off-chain artifacts. Dispatch features a building platform for DApp developers similar to Ethereum’s called the Dispatch Virtual Machine.
DAOs, or Decentralized Autonomous Organizations, are one of blockchain’s most interesting applications. DAOs use smart contracts to govern behaviors between nodes, re-distributing responsibilities and rights such as internal governance decisions among participants. Most blockchain developers know of DAOs from the Original DAO, an Ethereum-based venture capital fund that lacked an office or a management team and planned to make investment decisions based on internal consensus among token holders. Unfortunately, a series of design flaws caused the Original DAO to collapse shortly after its inception.
The collapse of the Original DAO has put some developers off the concept, yet far more tools now exist to build genuinely stable and secure DAOs. DAOstack, who recently concluded their ICO in a little over a minute, is offering a suite of DAO-building tools they’re calling the “Wordpress for DAOs.” Developers of any experience level can use modular tools to design sophisticated DAOs that easily surpass the security and capabilities of the relatively crude Original DAO.
DAOs aren’t just applications, but entire organizations. Developers looking to form apps with multiple active, contributing participants might find DAOs powerful frameworks. Because DAOs require redistributing responsibilities and powers, however, DAO developers have to be prepared to work in cooperation with their organization rather than govern it from the top down.
Ethereum is currently one of the most popular blockchains for developers, and part of its popularity stems from its robust community. Ethereum developers have access to a wide range of support, discussion groups, and open-source tools. MetaMask, for example, is a popular extension that lets developers interact directly with Ethereum through their browser. Indisputable Labs has released Ethereum-based development tools including Swifthereum, an open source suite of libraries for building Ethereum-based DApps in Apple’s iOS, and Gethdroid, which similarly helps developers make Ethereum-based DApps for Android.
Ethereum’s popularity has created scalability issues (which its founders are working diligently to address), but it’s also generated a robust community for developers to lean on. Few other blockchain protocols boast such a large community and tool base, but many promising newer protocols and platforms still support community development through open-source developer tools, forum discussions, and public code repositories.
DApps are one of the most exciting applications of blockchain technology, unlocking radically decentralized applications. When the right application meets the right blockchain, developers can help make magic happen.