In this chapter we will explore some of the fundamental innovations that make the Ethereum 2 protocol practical, the building blocks from which the higher level protocol is constructed.
None of the building blocks is absolutely brand new – they all depend to a degree on existing technologies – but in each case some aspect of the application to Eth2 is novel. The Ethereum Foundation R&D team deserves huge credit for the research and insights behind these advances.
Be alert, as you read, to the trade-offs that underpin these design choices. The gateway to deep understanding is always in the trade-offs.
Some of the trade-offs are quite interesting. For example, neither the shuffling algorithm nor the state root calculation algorithm are the most efficient that we could have chosen, at least in terms of pure speed. In both cases we preferred algorithms that enable a light client ecosystem over algorithms that might be more performant for full nodes.
The building blocks I've grouped together in this chapter are those that are part of the protocol specification itself. Client implementations often employ other optimisations that are not part of the specification. We'll consider some of those later in the Implementation chapter.
These are the topics that I've picked out for special attention.
- BLS Signatures precipitated the total redesign of Ethereum's proof of stake protocol, and underpin the scale and ambition of Ethereum 2.
- Randomness is a vital aspect of security, but difficult to generate in a deterministic system. The beacon chain accomplishes it with BLS signatures.
- Shuffling is uses randomness to populate committees. But, for the sake of light clients, we use an "oblivious" shuffle rather than the standard Fisher–Yates.
- Committees distribute the workload of the beacon chain.
- Aggregator Selection secretly selects small subsets of committees to do the work of aggregating attestations.
- SSZ: Simple Serialize is a novel serialisation technique that appears everywhere in the protocol. It embodies elegance and efficiency.
- Hash Tree Roots and Merkleization are applications of SSZ. Among other things, they make light clients practical.
- Generalised indices and Merkle proofs (TODO).
- Sync Committees (TODO).