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):
- Autumn 2023 (NYU)
- Autumn 2022 (NYU)
- Spring 2022 (Melbourne Uni)
- Spring 2021 (NYU)
- Spring 2020 (NYU)
- Autumn 2018 (NYU)
- Autumn 2017 (NYU)
- Autumn 2016 (Stanford)
- Autumn 2015 (Stanford)
- Autumn 2014 (Princeton)
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.
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> |
|
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.
|
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
|