chapter eleven

11 A roadmap to Dapp development

 

This chapter covers,

· A roadmap for end-to-end Dapp development

· Design and development of an educational credentialing application

· Test-driven prototype development on local test chain

· Configuring and transforming the prototype Dapp for public deployment

· Modular web client to enable decentralized participants

This chapter provides a road map for Dapp development from the beginning to the end. In the last chapters, you’ve learned how to design, develop, deploy, and test smart contracts and decentralized web applications (Dapp). You learned the core idea of blockchain technology and its application. You explored a wide variety of applications starting from a simple counter to asset tokenization. You studied a new language, Solidity, for programming smart contracts and tools such as Remix and Truffle to process and test them. Blockchain programming is not meant for data-intensive image processing, nor is it for computationally intensive scientific computation. In the case of a smart contract (SC), for example, it is not a good practice to use an SC for storing multi-dimensional image processing nor for long-running, complex computations. In this chapter, let’s put all these concepts together not only to reinforce the concepts discussed but also to comprehend how and why blockchain programming is different from traditional web application development.

What will you learn in this chapter

11.1  Motivating scenario: Educational credentialing

11.2  The roadmap

11.3  Problem description

11.3.1    Context for the DCC application

11.4  Analysis and design

11.4.1    Operation flow and finite state machine

11.4.2    Contract diagram

11.5  Developing the smart contract

11.6  Local deployment

11.7  Automated testing using truffle 

11.8  Developing the web application

11.9  Testing the DCC-Dapp

11.10   Public deployment

11.10.1                        Deployment on Ropsten-Infura

11.10.2                        Create web-client for distribution

11.11   Best practices

11.12   Summary