Book Image

Learn Ethereum

By : Xun (Brian) Wu, Zhihong Zou, Dongying Song
Book Image

Learn Ethereum

By: Xun (Brian) Wu, Zhihong Zou, Dongying Song

Overview of this book

Ethereum is a blockchain-based, decentralized computing platform that allows running smart contracts. This book provides a basic overview of how Ethereum works, its ecosystem, mining process, and the consensus mechanism. It also demonstrates a step-by-step approach for building decentralized applications. This book begins with the very basics of Blockchain technology. Then it dives deep into the Ethereum architecture, framework and tools in its ecosystem. It also provides you an overview of ongoing research on Ethereum, for example, Layer 1 and 2 scaling solution, Stablecoin, ICO/STO/IEO, etc. Next, it explains Solidity language in detail, and provides step-by-step instructions for designing, developing, testing, deploying, and monitoring decentralized applications. In addition, you’ll learn how to use Truffle, Remix, Infura, Metamask, and many other Ethereum technologies. It’ll also help you develop your own cryptocurrency by creating ERC20, and ERC721 smart contracts from scratch. Finally, we explain private blockchains, and you learn how to interact with smart contracts through wallets.
Table of Contents (19 chapters)
Free Chapter
1
Section 1: Blockchain and Ethereum Basics
5
Section 2: Blockchain Development Cycle
8
Section 3: Ethereum Implementations
12
Section 4: Production and Deployment
16
Section 5: Conclusion

Examining smart contract execution under the hood

When interacting with smart contracts on the Ethereum blockchain, the Ethereum web3 API or JSON-API interface uses the contract's application binary interface (ABI) as the standard way to encode and decode the methods we call, as well as the input and output data. The same applies to calls from outside of the blockchain and calls between contracts. Data is encoded according to its type, as described in the ABI specification.

All the functions and events within the smart contract can be described using JSON descriptors, as shown in the following screenshot. A JSON description of the deposit (_tenant string memory) method is shown in the red box, while the RentPaid event is shown in the purple box:

When the deposit method is called, it will generate a function selector, which is calculated as the first 4 bytes of the keccak256...