Building dapps on Ethereum - part 1: overview
In this blog post series I’m going to cover how to build decentralised applications, so called “dapps”, for the Ethereum network. Specifically for Ethereum’s latest release called Homestead. We will cover topics such as the development environment, essential blockchain concepts, how to develop so called smart contracts, the user interface, automated testing, and the importance of Ethereum browsers such as Status.im. In this very first part I’m providing an overview of the bigger picture of how things relate to each other.
Smart contract backend
All decentralised applications use smart contracts that are deployed on the “blockchain backend”. Smart contracts handle the most important data processing and storage for your application (but not necessarily all of it). Check out my blog post about a practical example of using the blockchain to understand more about what smart contracts are.
Later in this series we will learn how smart contracts are developed with the Solidity programming language and how the development cycle is made easier by using the Truffle framework.
User interface
Smart contracts on the blockchain aren’t very useful without a user interface. A UI can be built in any language or environment that can talk to Ethereum over a network connection. However, to reinforce the concept of decentralisation it’s good if the user interface code is executed only by the client, without traditional server-side code. This can be achieved in many ways, e.g. a traditional desktop application written in C++ or with a client-side HTML and Javascript app.
Later in this series we will learn how the Truffle framework also can be utilised to build a Javascript app along with the Web3 Javascript API.
Hosting
For hosting this HTML and Javascript app we will initially use a traditional centralised web server. However, this is counter productive to the decentralised philosophy because you need to trust a central web server to serve the correct version of the app. So for this reason we will later explore decentralised hosting options such as IPFS.
Browser
The final thing to consider is a browser that can render your HTML5 user interface. Traditional “web 2.0” browsers won’t be enough in the case of decentralised apps for the following reasons:
- They don’t have a wallet for digital currency (such as Ether) built-in. This is needed to make transactions super easy.
- They would have to rely on a central/external RPC service to interact with the actual blockchain. We don’t like central things!
Later in this series we will learn about the Mist desktop browser and the Status.im mobile browser, and how to develop for these.
In my last post I briefly touched on barriers of entry to Ethereum. The Status.im browser is especially important and interesting in this regard. Status.im is a kind of “instant messenger meets browser” or “mobile operating system for Ethereum” that can be compared to WeChat which is incredibly popular in China. Browsers like these take a whole new spin on interaction on the (decentralised) web – very important topic!
Continue reading
- Part 2: smart contracts
- Part 3: user interface
- Part 4: decentralised hosting using Swarm
- Part 5: Ethereum Name Service and Swarm
Featured image: Creative Commons Attribution 3 - https://www.ethereum.org/assets