Computer Science
>
>

Principles of Blockchains

Fall 2022

Princeton University

This course by Princeton University provides a full-stack design overview of blockchains, focusing on Bitcoin's design, scaling strategies, and additional considerations such as privacy and finality. It features a practical approach, with students implementing a Bitcoin client in Rust by the end of the course.

Course Page

Overview

Blockchains are decentralized digital trust engines and are a potential replacement to “digital platforms” that we encounter in today’s world. Digital platform companies occupy 7 of the largest companies in the world based on market capitalization (eg: Apple, Google, Microsoft, Amazon, Alibaba, Tencent). Blockchains came into prominence through Bitcoin, a cryptocurrency, introduced in 2009. In the decade since its inception, blockchain designs have evolved significantly, although the corresponding evolution of applications (beyond cryptocurrencies) have not caught up yet. In this course, we study a full-stack design of blockchains: we view the blockchains as a whole integrated system involving networking, incentives, consensus, application layer support. The course covers the foundations of blockchains, and is divided into 3 parts: in the first part we study the Bitcoin design in detail. Although very secure and remarkably incentive compatible in the real world, Bitcoin has very poor performance in many ways: throughput, latency, energy, compute, storage and communication. In the second part we study the various efforts to scale the performance of Bitcoin in all the different dimensions, while maintaining the incentive compatibility and security of Bitcoin. In the final part, we study aspects of blockchain design that were simply not considered in Bitcoin (e.g., privacy, finality). In the spirit of Nakamoto (who implemented and tested the Bitcoin client before writing the white paper), this course will be implementation-heavy. We will use the Rust programming language for our assignments and projects for the foundation component of the course. By the end of the course, you will implement a Bitcoin client in Rust.

Prerequisites

The basic technical prerequisites are a background in probability and algorithms. Decent amount of software programming background is essential.

Learning objectives

No data.

Textbooks and other notes

Supplemental reading:

  • Bitcoin and Cryptocurrency Technologies, A. Narayanan, J. Bonneau, E. Felten, A. Miller and S. Goldfeder, Princeton University Press. Henceforth termed as PUP (Princeton university press).
  • Introduction to Cryptocurrencies, a basic online course by Haseeb Qureshi.

Other courses in Blockchain

Courseware availability

Lecture slides and notes available at Course Material

Summary videos and full videos available at Course Material

Assignments available at Bitcoin Client Project

Final Exam available at Final Exam

No other materials available

Covered concepts