Index
A
- ABI (application binary interface), The Ethereum Contract ABI-Selecting a Solidity Compiler and Language Version
- account
- address object, address object
- addresses, Ethereum Addresses-Detecting an error in an EIP-55 encoded address
- air-gapped system, Separating Signing and Transmission (Offline Signing)
- airdrops, Other Notable Ethereum Forks
- application binary interface (ABI), The Ethereum Contract ABI-Selecting a Solidity Compiler and Language Version
- application-specific integrated circuits (ASIC), Ethash: Ethereum’s Proof-of-Work Algorithm
- approve & transferFrom workflow, ERC20 workflows: “transfer” and “approve & transferFrom”, Demonstrating the “approve & transferFrom” workflow-Demonstrating the “approve & transferFrom” workflow
- arithmetic over/underflows, Arithmetic Over/Underflows-Real-World Examples: PoWHC and Batch Transfer Overflow (CVE-2018–10299)
- ASIC (application-specific integrated circuits), Ethash: Ethereum’s Proof-of-Work Algorithm
- assert function
- assymetric cryptography (see public key cryptography)
- attack surface, Security by Maturity
- attribution, Using Code Examples
- Auction DApp, A Basic DApp Example: Auction DApp-From App to DApp
- authenticity proofs, Data Authentication
- await construct, Asynchronous Operation with Await
B
- backward compatibility, Ethereum vs. Bitcoin, Ethereum’s Development Culture
- balance, world state and, Ethereum State
- Bamboo, Introduction to Ethereum High-Level Languages
- Bancor, Real-World Examples: ERC20 and Bancor
- batching, The JSON-RPC Interface
- batchTransfer function, Real-World Examples: PoWHC and Batch Transfer Overflow (CVE-2018–10299)
- big-endian, defined, Quick Glossary
- BIP-32 standard
- BIP-39 standard, Seeds and Mnemonic Codes (BIP-39), Mnemonic Code Words (BIP-39)-Working with mnemonic codes
- BIP-43 standard, Navigating the HD wallet tree structure
- BIP-44 standard, Navigating the HD wallet tree structure
- BIPs (see Bitcoin improvement proposals)
- Bitcoin
- Bitcoin Core, Components of a Blockchain
- Bitcoin improvement proposals (BIPs), Quick Glossary
- bitcoind client, Components of a Blockchain
- blind calls, Raw call, delegatecall
- block gas limit, Block Gas Limit
- block object, Block context
- block timestamp manipulation security threat, Block Timestamp Manipulation-Real-World Example: GovernMental
- block, defined, Quick Glossary
- blockchain
- BlockOne IQ, Oracle Client Interfaces in Solidity
- brainwallets, mnemonic words vs., Mnemonic Code Words (BIP-39)
- broadcast (multicast) oracle, Oracle Design Patterns
- browser wallets, Browser Wallets
- burn (see ether burn)
- Buterin, Vitalik, Quick Glossary
- bytecode, Quick Glossary
- bytecode operations, The EVM Instruction Set (Bytecode Operations)-The EVM Instruction Set (Bytecode Operations)
- Byzantium fork, Quick Glossary, Ethereum’s Four Stages of Development
C
- CALL opcode, DELEGATECALL
- calls, external, Unchecked CALL Return Values-Real-World Example: Etherpot and King of the Ether
- Casper, Casper: Ethereum’s Proof-of-Stake Algorithm
- Casper CBC, Casper: Ethereum’s Proof-of-Stake Algorithm
- Casper FFG, Casper: Ethereum’s Proof-of-Stake Algorithm
- chain code, Extended public and private keys
- chain identifier, Raw Transaction Creation with EIP-155
- ChainLink, Decentralized Oracles
- checks-effects-interactions pattern, Preventative Techniques
- checksum
- child private keys, Hardened child key derivation
- Cipher Browser, Mobile (Smartphone) Wallets
- class inheritance, Class Inheritance
- clients, Ethereum, Ethereum Clients-Conclusions
- code examples, obtaining and using, Code Examples
- cold-storage wallets, Extended public and private keys
- command-line interface, Software Requirements for Building and Running a Client (Node)
- comments and questions, How to Contact Us
- compiler directive, Selecting a Solidity Compiler and Language Version
- compiling
- concurrency, nonces and, Concurrency, Transaction Origination, and Nonces
- consensus, Consensus-Conclusions
- consensus rules, Quick Glossary
- constant (function keyword), Functions
- Constantinople fork, Quick Glossary, Ethereum’s Four Stages of Development
- constructor function, Contract Constructor and selfdestruct
- constructor/contract name modification security threat
- contact information, How to Contact Us
- contract accounts, Externally Owned Accounts (EOAs) and Contracts
- contract creation transaction, Quick Glossary, Special Transaction: Contract Creation-Special Transaction: Contract Creation, What Is a Smart Contract?
- contract data type, Contract Definition
- contract definition, Solidity, Contract Definition
- contract destruction, Contract Constructor and selfdestruct
- contract invocation, Transmitting a Data Payload to an EOA or Contract
- contract name modification/constructor security threat
- contract object, Contract Inheritance-Contract Inheritance
- convert function (Vyper), Variable Typecasting
- counterparty risk, Counterparty Risk
- cryplet, Computation Oracles
- cryptographic hash functions, Cryptographic Hash Functions-Which Hash Function Am I Using?
- cryptography, Cryptography-Conclusions
- CryptoRoulette honey pot, Real-World Examples: OpenAddressLottery and CryptoRoulette Honey Pots
- currency units, Ether Currency Units
D
- DAG (directed acyclic graph), Ethash: Ethereum’s Proof-of-Work Algorithm
- Dagger-Hashimoto algorithm, Ethash: Ethereum’s Proof-of-Work Algorithm
- DAO (Decentralized Autonomous Organization), Ethereum’s Four Stages of Development, The Decentralized Autonomous Organization (The DAO)-Timeline of the DAO Hard Fork
- Dapp, Testing Smart Contracts
- dapp.tools, dapp.tools
- DApps (decentralized applications), Decentralized Applications (DApps)-Conclusions
- Auction DApp example, A Basic DApp Example: Auction DApp-From App to DApp
- backend (smart contract), Backend (Smart Contract)
- data storage, Data Storage
- decentralized message communication protocols, Decentralized Message Communications Protocols
- defined, Quick Glossary
- elements of, What Is a DApp?-Decentralized Message Communications Protocols
- Ethereum as platform for, From General-Purpose Blockchains to Decentralized Applications (DApps)
- frontend (web user interface), Frontend (Web User Interface)
- IPFS and, IPFS
- Swarm and, Swarm
- web3 and, The Third Age of the Internet
- data authentication, oracles and, Data Authentication
- data field, Transaction Value and Data-Transmitting Value to EOAs and Contracts
- data mapping, ERC20 data structures
- data payload, transmitting to EOAs and contracts, Transmitting a Data Payload to an EOA or Contract-Transmitting a Data Payload to an EOA or Contract
- data storage
- decentralized applications (see DApps)
- Decentralized Autonomous Organization (see DAO)
- declarative programming, Introduction to Ethereum High-Level Languages
- decorators, Vyper, Decorators
- deed
- default function (see fallback function)
- default visibility specifier security problem, Default Visibilities-Real-World Example: Parity Multisig Wallet (First Hack)
- defensive programming, Security Best Practices
- delegatecall method, Raw call, delegatecall
- DELEGATECALL opcode security threat, DELEGATECALL-Real-World Example: Parity Multisig Wallet (Second Hack)
- denial of service (DoS) attacks, Denial of Service (DoS)-Real-World Examples: GovernMental
- deployment bytecode, Contract Deployment Code
- deployment scripts, Truffle migrations—understanding deployment scripts-Truffle migrations—understanding deployment scripts
- deterministic (seeded) wallets
- development culture, Ethereum, Ethereum’s Development Culture
- difficulty setting, Quick Glossary
- Diffie, Whitfield, Public Key Cryptography and Cryptocurrency
- digital fingerprint, Cryptographic Hash Functions
- digital signatures, Keys and Addresses, Digital Signatures-Raw Transaction Creation with EIP-155
- creating, Creating a digital signature
- defined, Quick Glossary
- ECDSA and, The Elliptic Curve Digital Signature Algorithm
- ECDSA math, ECDSA Math-ECDSA Math
- mechanism of operation, How Digital Signatures Work
- private key and, Public Key Cryptography and Cryptocurrency
- separating signing and transmission, Separating Signing and Transmission (Offline Signing)-Separating Signing and Transmission (Offline Signing)
- signature prefix value (v) and public key recovery, The Signature Prefix Value (v) and Public Key Recovery
- signing in practice, Transaction Signing in Practice
- verifying, Verifying the Signature
- Wikipedia definition, The Elliptic Curve Digital Signature Algorithm
- directed acyclic graph (DAG), Ethash: Ethereum’s Proof-of-Work Algorithm
- discrete logarithm problem, Public Key Cryptography and Cryptocurrency
- distributed state machine, Ethereum as, Ethereum: A General-Purpose Blockchain
- DoS attacks (see denial of service attacks)
- Dual_EC_DRBG, Ethereum’s Cryptographic Hash Function: Keccak-256
- duress wallet, Optional passphrase in BIP-39
- dynamically sized arrays, Avoid Dynamically Sized Arrays
E
- ECDSA (see Elliptic Curve Digital Signature Algorithm)
- EIP-155 Simple Replay Attack Protection standard, Raw Transaction Creation with EIP-155
- EIP-55 (Ethereum Improvement Proposal 55)
- EIPs (Ethereum Improvement Proposals), Ethereum Improvement Proposals (EIPs)
- Ellaism, Other Notable Ethereum Forks
- elliptic curve cryptography, Public Key Cryptography and Cryptocurrency, Elliptic Curve Cryptography Explained-Elliptic Curve Arithmetic Operations
- Elliptic Curve Digital Signature Algorithm (ECDSA)
- Embark, Embark, Testing Smart Contracts
- Emerald Platform, Emerald Platform
- Emerald Wallet, Choosing an Ethereum Wallet
- EMOD (Ethereum Modification), Other Notable Ethereum Forks
- empty input test, Which Hash Function Am I Using?
- encryption, Cryptography
- (see also keys and addresses)
- ENS (Ethereum Name Service), Quick Glossary, The Ethereum Name Service (ENS)-Resolving a Name to a Swarm Hash (Content)
- bottom layer: name owners and resolvers, Bottom Layer: Name Owners and Resolvers-Resolvers
- choosing a valid name, How to choose a valid name
- DApps and, The Ethereum Name Service (ENS)-Resolving a Name to a Swarm Hash (Content)
- design of, The ENS Specification-Top Layer: The Deeds
- history of, History of Ethereum Name Services
- managing your ENS name, Managing Your ENS Name
- middle layer: .eth nodes, Middle Layer: The .eth Nodes
- Namehash algorithm, The Namehash algorithm
- registering a name, Registering a Name-Registering a Name
- resolvers, Resolvers
- resolving a name, ENS Resolvers-Resolving a Name to a Swarm Hash (Content)
- resolving a name to a Swarm hash, Resolving a Name to a Swarm Hash (Content)
- root node ownership, Root node ownership
- specification, The ENS Specification
- top layer: deeds, Top Layer: The Deeds
- Vickrey auctions, Vickrey auctions
- entropy
- entropy illusion security threat, Entropy Illusion
- EOA (Externally Owned Account)
- ephemeral private key, ECDSA Math
- equity tokens
- ERC (Ethereum Request for Comments), Quick Glossary
- (see also EIPs (Ethereum Improvement Proposals))
- ERC20 token standard, The ERC20 Token Standard-ERC20 implementations
- ERC223 token standard proposal, ERC223: A Proposed Token Contract Interface Standard
- ERC721 non-fungible token standard, ERC721: Non-fungible Token (Deed) Standard-ERC721: Non-fungible Token (Deed) Standard
- ERC777 token standard proposal, ERC777: A Proposed Token Contract Interface Standard-ERC777 hooks
- error handling, Solidity, Error Handling (assert, require, revert)
- ETC (see Ethereum Classic)
- ETF (EthereumFog), Other Notable Ethereum Forks
- eth nodes, Middle Layer: The .eth Nodes
- Ethash, Quick Glossary, Ethash: Ethereum’s Proof-of-Work Algorithm
- ETHB (EtherBTC), Other Notable Ethereum Forks
- Ether (cryptocurrency), Quick Glossary
- ether (generally)
- ether burn, Transaction Recipient, Special Transaction: Contract Creation
- EtherBTC (ETHB), Other Notable Ethereum Forks
- Ethereum (generally)
- about, What Is Ethereum?-What This Book Will Teach You
- and EVM, Introducing the World Computer
- as general-purpose blockchain, Ethereum: A General-Purpose Blockchain
- basics, Ethereum Basics-Conclusions
- birth of, The Birth of Ethereum
- Bitcoin compared to, Compared to Bitcoin
- blockchain components, Components of a Blockchain, Ethereum’s Components
- clients (see clients, Ethereum)
- control and responsibility, Control and Responsibility-Control and Responsibility
- currency units, Ether Currency Units
- DApps and, From General-Purpose Blockchains to Decentralized Applications (DApps)
- development culture, Ethereum’s Development Culture
- EIPs, Ethereum Improvement Proposals (EIPs)
- EOAs and contracts, Externally Owned Accounts (EOAs) and Contracts
- Ethereum Classic compared to, Ethereum and Ethereum Classic
- fork history, Ethereum Fork History-Other Notable Ethereum Forks
- four stages of development, Ethereum’s Four Stages of Development
- MetaMask basics, Getting Started with MetaMask-Exploring the Transaction History of an Address
- purpose of, Compared to Bitcoin
- reasons to learn, Why Learn Ethereum?
- standards, Ethereum Improvement Proposals (EIPs)
- Turing completeness and, Ethereum and Turing Completeness
- wallet choices, Choosing an Ethereum Wallet
- web3 and, The Third Age of the Internet
- Ethereum Classic (ETC)
- Ethereum Improvement Proposals (see EIP entries)
- Ethereum Modification (EMOD), Other Notable Ethereum Forks
- Ethereum Name Service (see ENS)
- Ethereum Virtual Machine (see EVM)
- EthereumFog (ETF), Other Notable Ethereum Forks
- EthereumJS, Raw Transaction Creation and Signing, EthereumJS
- EthereumJS helpeth, Inter Exchange Client Address Protocol, EthereumJS helpeth: A Command-Line Utility
- EtherInc (ETI), Other Notable Ethereum Forks
- EtherJar, EtherJar
- Etherpot smart contract lottery, Real-World Example: Etherpot and King of the Ether
- ethers.js, ethers.js
- EtherZero (ETZ), Other Notable Ethereum Forks
- ethpm project, Contract Libraries
- Ethstick contract, Real-World Example: Ethstick
- ETI (EtherInc), Other Notable Ethereum Forks
- events
- EVM (Ethereum Virtual Machine), The Ethereum Virtual Machine-Conclusions
- about, What Is the EVM?
- and Ethereum high-level languages, Introduction to Ethereum High-Level Languages-Introduction to Ethereum High-Level Languages
- as world computer, Introducing the World Computer
- block gas limit, Block Gas Limit
- comparison with existing technology, Comparison with Existing Technology
- compiling Solidity to EVM bytecode, Compiling Solidity to EVM Bytecode-Compiling Solidity to EVM Bytecode
- contract deployment code, Contract Deployment Code-Contract Deployment Code
- defined, Quick Glossary
- disassembling bytecode, Disassembling the Bytecode-Disassembling the Bytecode
- Ethereum state updating, Ethereum State
- gas accounting considerations, Gas Accounting Considerations
- gas accounting during execution, Gas Accounting During Execution
- gas and, Implications of Turing Completeness, Gas-Who decides what the block gas limit is?
- gas cost vs. gas price, Gas Cost Versus Gas Price
- instruction set (bytecode operations), The EVM Instruction Set (Bytecode Operations)-The EVM Instruction Set (Bytecode Operations)
- opcodes and gas consumption, Ethereum EVM Opcodes and Gas Consumption
- Turing completeness and Gas, Turing Completeness and Gas
- EVM assembly language, Quick Glossary
- EVM bytecode, Introduction to Ethereum High-Level Languages
- EVM OPCODES, The EVM
- Expanse, Other Notable Ethereum Forks
- explicit typecasting, Variable Typecasting
- extended keys, Extended public and private keys
- external calls, Unchecked CALL Return Values-Real-World Example: Etherpot and King of the Ether
- external contract referencing security threat, External Contract Referencing-Real-World Example: Reentrancy Honey Pot
- external function, Functions
- Externally Owned Account (see EOA)
F
- fallback function, Quick Glossary, A Simple Contract: A Test Ether Faucet, Functions
- fast synchronization, The First Synchronization of Ethereum-Based Blockchains
- faucet, defined, Quick Glossary
- Faucet.sol contract (test example)
- adding constructor and selfdestruct to, Adding a Constructor and selfdestruct to Our Faucet Example
- adding events to, Events-Catching events
- catching events, Catching events
- compiling, Compiling the Faucet Contract-Compiling the Faucet Contract, Compiling with the Solidity Compiler (solc)
- creating, A Simple Contract: A Test Ether Faucet-A Simple Contract: A Test Ether Faucet
- interacting with, Interacting with the Contract-Viewing the Contract Address in a Block Explorer
- METoken approve & transferFrom workflow demonstration, Demonstrating the “approve & transferFrom” workflow-Demonstrating the “approve & transferFrom” workflow
- METoken project, Sending ERC20 tokens to contract addresses-Sending ERC20 tokens to contract addresses
- on the blockchain, Creating the Contract on the Blockchain-Creating the Contract on the Blockchain
- sending ether to, Funding the Contract-Funding the Contract
- viewing contract address in a block explorer, Viewing the Contract Address in a Block Explorer
- withdrawing funds from, Withdrawing from Our Contract-Withdrawing from Our Contract
- Federal Information Processing Standard (FIPS), Ethereum’s Cryptographic Hash Function: Keccak-256
- fees (see gas)
- Fibonacci sequences, The Vulnerability-The Vulnerability
- finney, Quick Glossary
- FIPS (Federal Information Processing Standard), Ethereum’s Cryptographic Hash Function: Keccak-256
- FIPS-202, Ethereum’s Cryptographic Hash Function: Keccak-256
- first synchronization
- floating-point representation security risk, Floating Point and Precision-Real-World Example: Ethstick
- flood routing, Transaction Propagation
- forks, Quick Glossary, Ethereum Fork History-Other Notable Ethereum Forks
- frameworks, Frameworks-ZeppelinOS
- front-running attacks, Race Conditions/Front Running-Real-World Examples: ERC20 and Bancor
- Frontier, Quick Glossary, Ethereum’s Four Stages of Development
- full node
- function declarations, ordering of, Function and Variable Ordering
- function invocation, Transmitting a Data Payload to an EOA or Contract
- function modifiers, Function Modifiers
- function overloading, Function Overloading
- fungible tokens, Tokens and Fungibility
- (see also ERC20 token standard)
G
- Ganache
- gas
- accounting considerations, Gas Accounting Considerations
- accounting during execution, Gas Accounting During Execution
- as counter to Turing completeness, Implications of Turing Completeness
- avoiding calls to other contracts, Avoid Calls to Other Contracts
- basics, Sending Ether from MetaMask
- block gas limit, Block Gas Limit
- conserving, Gas Considerations-Estimating Gas Cost
- cost vs. price, Gas Cost Versus Gas Price
- defined, Quick Glossary
- dynamically sized arrays and, Avoid Dynamically Sized Arrays
- estimating cost of, Estimating Gas Cost-Estimating Gas Cost
- EVM and, Gas-Who decides what the block gas limit is?
- EVM opcodes and gas consumption, Ethereum EVM Opcodes and Gas Consumption
- negative costs, Negative gas costs
- on test networks, Sending Ether from MetaMask
- tokens and, Issues with ERC20 Tokens
- transactions and, Transaction Gas-Transaction Gas
- gas cost, gas price vs., Gas Cost Versus Gas Price
- gas limit, Quick Glossary
- gasLimit field, Transaction Gas
- gasPrice field, Transaction Gas
- generator point, Public Keys, Generating a Public Key
- genesis block, Quick Glossary
- Geth (Go-Ethereum), Software Requirements for Building and Running a Client (Node)
- git, Software Requirements for Building and Running a Client (Node)
- global state trie, Reading and Writing Data
- Go, Software Requirements for Building and Running a Client (Node)
- (see also Geth (Go-Ethereum))
- GovernMental Ponzi scheme
- graphics processing unit (GPU), mining and, Ethash: Ethereum’s Proof-of-Work Algorithm
H
- halting problem, Ethereum and Turing Completeness, Turing Completeness and Gas
- hard forks, Quick Glossary, Ethereum’s Four Stages of Development, Ethereum Fork History-Other Notable Ethereum Forks, The DAO Hard Fork-Timeline of the DAO Hard Fork
- (see also DAO; other specific hard forks, e.g.: Spurious Dragon)
- hardened derivation
- hardware wallets, Wallet Best Practices, Extended public and private keys
- hash collision, Cryptographic Hash Functions
- hash functions, Cryptographic Hash Functions-Which Hash Function Am I Using?
- hash, defined, Quick Glossary
- HD wallet seed, Quick Glossary
- Hellman, Martin, Public Key Cryptography and Cryptocurrency
- helpeth command-line tool, Inter Exchange Client Address Protocol, EthereumJS helpeth: A Command-Line Utility
- hierarchical deterministic wallets (BIP-32/BIP-44), Hierarchical Deterministic Wallets (BIP-32/BIP-44)
- Homestead, Quick Glossary, Ethereum’s Four Stages of Development
- honey pots, Real-World Example: Reentrancy Honey Pot-Real-World Example: Reentrancy Honey Pot
- hybrid programming languages, Introduction to Ethereum High-Level Languages
I
- IBAN (International Bank Account Number), Inter Exchange Client Address Protocol
- ICAP (Inter-exchange Client Address Protocol), Quick Glossary, Inter Exchange Client Address Protocol-Inter Exchange Client Address Protocol
- Ice Age, Quick Glossary, Ethereum’s Four Stages of Development
- ICOs (see Initial Coin Offerings)
- IDE (Integrated Development Environment), Quick Glossary
- immediate-read oracles, Oracle Design Patterns
- immutable deployed code problem, Quick Glossary
- imperative programming, Introduction to Ethereum High-Level Languages
- implicit typecasting, Variable Typecasting
- index numbers, for normal/hardened derivation, Hardened child key derivation
- infinite loops, Implications of Turing Completeness
- inheritance, Contract Inheritance-Contract Inheritance, Class Inheritance
- Initial Coin Offerings (ICOs)
- inline assembly, Inline Assembly
- Integrated Development Environment (IDE), Quick Glossary
- intended audience, Intended Audience
- Inter-exchange Client Address Protocol (ICAP), Quick Glossary, Inter Exchange Client Address Protocol-Inter Exchange Client Address Protocol
- interface object type, Contract Definition
- internal function, Functions
- internal transaction (message), Quick Glossary, Withdrawing from Our Contract
- International Bank Account Number (IBAN), Inter Exchange Client Address Protocol
- invariant checking, The Vulnerability
- invocation, Transaction Value and Data, Transmitting a Data Payload to an EOA or Contract
- IPFS (InterPlanetary File System), Quick Glossary, IPFS
K
- Keccak-256 hash function, Quick Glossary, Ethereum’s Cryptographic Hash Function: Keccak-256
- key derivation function (KDF), Quick Glossary, Nondeterministic (Random) Wallets
- key derivation methods, Wallet Technology Overview
- key exchange protocol, Public Key Cryptography and Cryptocurrency
- key pairs, Keys and Addresses, Public Key Cryptography and Cryptocurrency
- key-stretching function, From mnemonic to seed
- key-value tuple, Ethereum: A General-Purpose Blockchain
- keychains, Wallet Technology Overview
- keys
- keys and addresses, Ethereum Addresses and Transactions in this Book, Keys and Addresses
- (see also cryptography; private keys; public keys)
- keystore file, Quick Glossary, Nondeterministic (Random) Wallets
- King of the Ether, Real-World Example: Etherpot and King of the Ether