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 a central bank digital currencies today are considering the use of blockchains to decentralize trust. At a high level, blockchain consists of stack of three key layers: 1) Consensus - agreement among parties 2) Scalability, and 3) Application layer. In this course, we will learn about the foundations that enable each of these layers. Prerequisite: Computer Science 230 Discrete Math; Computer Science 210 Computer Systems or Computer Science 250 Computer Architecture. Computer Science 330 Algorithms is helpful but not required.