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 buiding 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.
Here's what we shall be covering: