Course history

This page serves as an example syllabus for interested students. You can also check out past specific versions of this course (some are behind university login pages):

Course overview

Bitcoin and Ethereum have quickly become multi-billion-dollar systems and the future potential of decentralized ledgers (blockchains) has captured the imagination of researchers working on applications as diverse as banking and finance, voting, law, corporate governance, gambling and online gaming. This course will cover the technical concepts underlying these systems: append-only ledgers, decentralized consensus, smart contracts and zero-knowledge proof systems. Students will gain working familiarity with both Bitcoin and Ethereum through practical assignments. The course will also survey the wide variety of potential future applications.

Administrative links

Instructor: Joseph Bonneau (jcb@cs.nyu.edu)

Prerequisites

The course assumes a basic familiarity with computer programming. One programming project will be assigned which must be completed in Java and one which must be completed in Solidity (Ethereum's most popular programming language), but no background in either language is specifically required.

A background in cryptography is recommended; for students without this background extra reading may be helpful. Please start with the Primer on Cryptography for Cryptocurrency Students, written by the instructor.

Note to undergraduate students: It is possible to enroll, but be warned that the class will cover a large amount of material and significant reading may be required to keep up. Please contact the instructor first if you are interested.

Assignments

Two programming projects and four written problem sets will be assigned, along with a course project of the student's choosing.

  • Collaboration: You may work with a partner on programming projects (and submit one solution). Problem sets should be completed individually.
  • Grading: Final grades will be equally split between programming projects, homework and the course project.
assignment
Project #1

In this project, students will implement alternate mining strategies in a simulated consensus protocol environment, including block withholding (selfish mining), fee sniping and majority dominance/p>

assignment
Project #2

In this project, students will implement a smart contracts in Solidity to implement on-chain auctions in three formats: Dutch auctions, English auctions and Vickrey auctions.

Reading materials

For course reading, we will be using the textbook Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction by Narayanan, Bonneau, Felten, Miller and Goldfeder (referred to as NBFMG in the syllabus). If you don't wish to purchase the textbook, you may use the author's preprint edition which is available for free online. Note that this version is a rough draft and is known to contain many editorial mistakes. The published version has been professionally edited and also contains nicer diagrams and so forth, but the two are largely compatible content-wise and chapter and section numbers should directly correspond.

Course readings will also include several other freely available online sources, in particular

  • Bitcoin does not have any official technical specification, but the Bitcoin Developer Reference is the closest thing available. It is a good reference for low-level technical details.
  • Ethereum maintains an extensive wiki with reference documentation for many aspects of the system as well as the "yellow paper" which is the most concise and accurate presentation.

Syllabus

 
Lecture 1
Introduction. Cryptographic primitives for blockchains: hash functions, digital signatures. Authenticated data structures (Merkle Trees, linked lists)
 
Lecture 2
Bitcoin basics. Distributed consensus, Nakamoto consensus, proof-of-work.
  • NBFMG Chapter 2
 
Lecture 3
Bitcoin mechanics. Transaction formats, UTXOs, scripts. P2P network. Mining, difficulty adjustment, mining hardware, ecological impact.
 
Lecture 4
Incentive design and Bitcoin community. Alternate mining strategies, selfish mining, feather forking, Goldfinger attacks, censorship. Hard and soft forks, community governance.
 
Lecture 5
Launching a cryptocurrency. Initial mining allocations. Historical examples: Namecoin, Litecoin, Dogecoin. Market metrics, challenges to adoption. The road to Ethereum: application-specific chains.
 
Lecture 6
Introduction to Ethereum. Ethereum data structures and conventions. Merkle PATRICIA trees. Basic solidity syntax. Efficient hash maps implementation.
 
Lecture 7
Ethereum & Solidity Mechanics. Gas fee mechanism. Solidity security considerations: front-running, hash commitments, re-entrancy.
 
Lecture 8
Privacy and Anonymity. Transaction clustering and linking. Mixing services, Coinjoin, Confidential Transactions. Zerocoin and Zerocash. Ethical considerations, KYC laws.
 
Lecture 9
Alternate consensus mechanisms. ASIC-resistant mining puzzles, memory hard hash functions. Useful Proof-of-work. Semi-centralized models. Proof-of-stake.
 
Lecture 10
Performance and Scalability, Part I. Performance metrics for blockchains. Blockchain compression, light clients and stateless clients. Aggregate signatures and BLS. Mimble Wimble and transaction cut-through.
 
Lecture 11
Performance and Scalability, Part II. Sidechains and plasmas. Off-chain channels: unidirectional, bidirectional, Lightning network. Rollups: optimistic and zero-knowledge/verifiable.
 
Lecture 12
Advanced applications: NFTs, decentralized finance, auctions, voting, lotteries
 
Lecture 13
Guest speaker from industry