A smart contract cannot act alone; it is a part of a larger application. A decentralized application, or Dapp, exposes the smart contract logic to enable users to transact and record on the blockchain. Part 2 introduces the design and development of Dapps, additional design considerations such as on-chain and off-chain data, and side-channel operations. You’ll also learn about adding security and privacy to your applications by using cryptography and hashing functions. Two applications--a blind auction and a micropayment channel--are introduced to illustrate concepts for accessing blockchain services using the web3 API. You’ll also develop the airline consortium smart contract introduced in part 1 into a full-fledged Dapp by adding a web UI. You’ll learn to use a standard directory structure, and you’ll use Truffle and Node.js (npm) commands to deploy the smart contract and the web application. Highlights of part 2 include migrating your smart contracts to public infrastructure Infura and a test chain Ropsten to allow potentially any decentralized user to access your Dapp. In short, part 2 shows you how to transform and code a smart contract into a full-fledged blockchain-based Dapp stack. This stack features a web frontend and a blockchain distributed ledger for recording transactions and relevant data.