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)
Teaching Assistant: Assimakis Kattis (kattis@cs.nyu.edu)
Lectures: Tuesday:   19:10-21:00,   Room 150, 60 Fifth Ave
Office hours: Tuesday:   15:00-16:00,   Room 404, 60 Fifth Ave
Wednesday:   13:00-14:00,   Room 502, 60 Fifth Ave
Thursday:   13:00-14:00,   Room 502, 60 Fifth Ave
Discussion board: Piazza

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. The other two assignments can be completed in the language of your choice.

A background in cryptography is strongly recommended; note that CSCI-GA 3210-001: Introduction to Cryptography is being offered this term and would make an excellent complement.

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

Assignments

Four programming projects and four written problem sets will be assigned, along with a final exam.

  • Collaboration: You may work with a partner on programming projects (and submit one solution). Problem sets should be completed individually.
  • Deadlines: All course assignments will be due on Thursday evenings at 23:59, unless otherwise specified. Late submission will result in a 25% penalty per day (or fraction thereof) that the work is turned in late.
  • Extensions: All students are granted three automatic, integral 24-hour extensions ("late days") which can be used on any assignment or problem set to submit late with no penalty (and without asking in advance). Beyond that, the penalty applies. Extra extensions will only be granted in extreme circumstances.
  • Grading: Programming projects are worth 40% of the final grade, with the lowest project score being dropped. Each problem set is worth 5% (20% in total). The final exam is worth the remaining 40%.
--
Homework #1
Due: 2017-09-21 22:00 EDT
--
Project #1: Bitcoin transactions
Due: 2017-09-28 22:00 EDT
--
Homework #2
Due: 2017-10-12 22:00 EDT
--
Project #2: Mining strategies
Due: 2017-10-19 22:00 EDT
--
Project #3: Blockchain analysis
Due: 2017-11-02 22:00 EDT
--
Homework #3
Due: 2017-11-09 22:00 EST
--
Homework #4
Due: 2012-12-07 22:00 EST
--
Project #4: Smart contracts
Due: 2012-12-17 22:00 EST (no late days)

Reading materials

Every lecture will be accompanied by outside readings that expand on what is discussed in class or present the same material in a different way. Neither the readings nor the lectures are a replacement for each other; deeply understanding the material will likely require attendance as well as reading. It is possible to read before or after class, depending on your learning style.

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 listed in the syllabus page:

  • We will work through the research survey paper Research Perspectives and Challenges for Bitcoin and Cryptocurrencies by Bonneau, Miller, Clark, Narayanan, Kroll and Felten which includes references to most of the research literature on Bitcoin.
  • A few other technical papers will be listed on the syllabus. If you want more technical papers covering the latest research, Jeremy Clark maintains an extensive online bibliography of Bitcoin research papers which is a great resource if you want more detailed information about a specific topic.
  • 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.
  • For a few topics for which there are no other good options, we may assign readings from the (unofficial) Bitcoin Wiki or the Bitcoin Talk forum. While there is a wealth of knowledge contained in these sources, please be careful when reading them, as a substantial amount of it is technically inaccurate or out of date. In particular, the original white paper Bitcoin: A Peer-to-Peer Electronic Cash System by Satoshi Nakamoto is now inconsistent in several respects with the actually deployed Bitcoin network (though we'll still be assigning it).

Syllabus

 
2017-09-05
Introduction to cryptography & cryptocurrencies [lecture notes]
 
2017-09-12
Bitcoin's protocols [lecture notes]
 
2017-09-19
Bitcoin applications & security [lecture notes] [extra slides]
 
2017-09-26
Bitcoin mining mechanics & P2P network [lecture notes] [extra slides]
 
2017-10-03
Bitcoin mining strategy & attacks [lecture notes]
 
2017-10-10
Community, politics & forks [lecture notes]
 
2017-10-17
Privacy & anonymity in cryptocurrencies (Guest lecturer: Ian Miers, Cornell Tech) [presentation slides]
 
2017-10-24
Overview of Ethereum [presentation slides]
 
2017-10-31
Programming smart contracts in Ethereum [presentation slides]
 
2017-11-07
Smart contract applications & security [presentation slides]
  • NBFMG Chapter 9
 
2017-11-14
Alternative approaches to mining & consensus [lecture notes]
 
2017-11-21
Scalability: off-chain channels, sharding, and cut-through [lecture notes]
 
2017-11-28
Advanced topics (Guest lecturer: Ari Juels, Cornell Tech) [lecture slides, part 1] [lecture slides, part 2]
 
2017-12-05
Business & legal perspectives on cryptocurrencies (Guest lecturer: David Yermack, NYU Stern) [lecture slides]
 
2017-12-12
No class (Legislative Day)
 
2017-12-19
Final exam [practice final]