Simple Decentralized App Architecture
If you don't know what a Decentralized Application (Dapp) is, check out my previous post Why Build Decentralized Applications
Two Key Technologies:
- IPFS: A distributed datastore modeled after BitTorrent and Git. Soon it will have an incentivisation layer in which you pay strangers to store your content. Basically, a P2P AWS.
- Ethereum: A single shared computer living on the network, modeled after Bitcoin. It's essentially a computer everyone can trust to store data and to execute code.
Basic Dapp Architecture
To give context for the diagram, consider the application flow of a crowdfunding Dapp modeled after Kickstarter:
Client Side
- Perform a DNS lookup to receive a hash of your dapp
- Download the dapp from peers on IPFS
- Load your HTML/JS/CSS
- Lookup the most recent crowdfunding projects on Ethereum
a. Each project will contain a hash of the pitch video, content, and rewards - Use the hash to download a project's content from IPFS
- Send ETH (Ethereum's currency) to fund the project
Ethereum Side
- The croudfunding smart contract (aka program) receives the ETH payment.
- Once the deadline for the project crowdsale ends, the contract either pays the project creator or returns the funds to the funders.
In this example, our global state contains the list of current projects, references to their content, and simple logic for the payout. IPFS contains the Dapp code and project content.
With these simple building blocks, it is possible to create powerful applications. So let's start building them!