A peer-to-peer (P2P) network connecting participants and propagating transactions and blocks of verified transactions, based on a standardized “gossip” protocol
Messages, in the form of transactions, representing state transitions
A set of consensus rules, governing what constitutes a transaction and what makes for a valid state transition
A state machine that processes transactions according to the consensus rules
A chain of cryptographically secured blocks that acts as a journal of all the verified and accepted state transitions
A consensus algorithm that decentralizes control over the blockchain, by forcing participants to cooperate in the enforcement of the consensus rules
A game-theoretically sound incentivization scheme (e.g., proof-of-work costs plus block rewards) to economically secure the state machine in an open environment
One or more open source software implementations of the above (“clients”)
This was the time when the Ethereum protocol was entirely my own creation. From here on, however, new participants started to join the fold. By far the most prominent on the protocol side was Gavin Wood…
Gavin can also be largely credited for the subtle change in vision from viewing Ethereum as a platform for building programmable money, with blockchain-based contracts that can hold digital assets and transfer them according to pre-set rules, to a general-purpose computing platform. This started with subtle changes in emphasis and terminology, and later this influence became stronger with the increasing emphasis on the “Web 3” ensemble, which saw Ethereum as being one piece of a suite of decentralized technologies, the other two being Whisper and Swarm.
Frontier—The initial stage of Ethereum, lasting from July 30, 2015, to March 2016.
Ice Age—A hard fork to introduce an exponential difficulty increase, to motivate a transition to PoS when ready.
Homestead—The second stage of Ethereum, launched in March 2016.
DAO—A hard fork that reimbursed victims of the hacked DAO contract and caused Ethereum and Ethereum Classic to split into two competing systems.
Tangerine Whistle—A hard fork to change the gas calculation for certain I/O-heavy operations and to clear the accumulated state from a denial-of-service (DoS) attack that exploited the low gas cost of those operations.
Spurious Dragon—A hard fork to address more DoS attack vectors, and another state clearing. Also, a replay attack protection mechanism.
Metropolis Byzantium—Metropolis is the third stage of Ethereum, current at the time of writing this book, launched in October 2017. Byzantium is the first of two hard forks planned for Metropolis.
Ethereum runs on the Ethereum main network, which is addressable on TCP port 30303, and runs a protocol called ÐΞVp2p.
Ethereum’s consensus rules are defined in the reference specification, the Yellow Paper (see “Further Reading”).
Ethereum transactions are network messages that include (among other things) a sender, recipient, value, and data payload.
Ethereum state transitions are processed by the Ethereum Virtual Machine (EVM), a stack-based virtual machine that executes bytecode (machine-language instructions). EVM programs, called “smart contracts,” are written in high-level languages (e.g., Solidity) and compiled to bytecode for execution on the EVM.
Ethereum’s state is stored locally on each node as a database (usually Google’s LevelDB), which contains the transactions and system state in a serialized hashed data structure called a Merkle Patricia Tree.
Ethereum uses Bitcoin’s consensus model, Nakamoto Consensus, which uses sequential single-signature blocks, weighted in importance by PoW to determine the longest chain and therefore the current state. However, there are plans to move to a PoS weighted voting system, codenamed Casper, in the near future.
Ethereum currently uses a PoW algorithm called Ethash, but this will eventually be dropped with the move to PoS at some point in the future.
Ethereum has several interoperable implementations of the client software, the most prominent of which are Go-Ethereum (Geth) and Parity.
The Ethereum Yellow Paper: https://ethereum.github.io/yellowpaper/paper.pdf
The Beige Paper, a rewrite of the Yellow Paper for a broader audience in less formal language: https://github.com/chronaeon/beigepaper
ÐΞVp2p network protocol: http://bit.ly/2quAlTE
Ethereum Virtual Machine list of resources: http://bit.ly/2PmtjiS
LevelDB database (used most often to store the local copy of the blockchain): http://leveldb.org
Merkle Patricia trees: https://github.com/ethereum/wiki/wiki/Patricia-Tree
Ethash PoW algorithm: https://github.com/ethereum/wiki/wiki/Ethash
Casper PoS v1 Implementation Guide: http://bit.ly/2DyPr3l
Go-Ethereum (Geth) client: https://geth.ethereum.org/
Parity Ethereum client: https://parity.io/
Smart contracts on a blockchain
A web frontend user interface
A decentralized (P2P) storage protocol and platform
A decentralized (P2P) messaging protocol and platform