What Is a Smart Contract?Life Cycle of a Smart ContractIntroduction to Ethereum High-Level LanguagesBuilding a Smart Contract with SoliditySelecting a Version of SolidityDownload and InstallDevelopment EnvironmentWriting a Simple Solidity ProgramCompiling with the Solidity Compiler (solc)The Ethereum Contract ABISelecting a Solidity Compiler and Language VersionProgramming with SolidityData TypesPredefined Global Variables and FunctionsContract DefinitionFunctionsContract Constructor and selfdestructAdding a Constructor and selfdestruct to Our Faucet ExampleFunction ModifiersContract InheritanceError Handling (assert, require, revert)EventsCalling Other Contracts (send, call, callcode, delegatecall)Gas ConsiderationsAvoid Dynamically Sized ArraysAvoid Calls to Other ContractsEstimating Gas CostConclusions