Blockchains form a key infrastructure for decentralizing trust from a single entity to multiple different entities. Many fields such as finance, supply chain industry, and the design of central bank digital currencies today are considering the use of blockchains to decentralize trust. A critical component that underlies blockchain technology is consensus among a group of parties running it despite some of them being malicious. In this course, we will study classical results and recent advances in the design of consensus protocols that underlie blockchain technology today.
We will study the different problem formulations — Byzantine Broadcast, Byzantine Agreement, and state machine replication (or blockchains); different settings such as the permissionless and permissioned model; different modeling assumptions related to types of faults, network timing, use of cryptography, setup, adversarial adaptivity, and other assumptions (proof-of-work, proof-of-stake), and lower bounds under some of these settings. We will discuss different approaches (such as Nakamoto-style and classical BFT) to design scalable and practical protocols in terms of confirmation latency, transaction throughput, finality, energy consumption, and accountability for misbehaving participants. At the end of this course, you should understand the similarities and differences that underlie blockchain designs such as Paxos, PBFT, HotStuff (underlies Diem blockchain), Bitcoin, Ethereum, Internet Computer, and Algorand, among others.