Course information (Tentative; small changes are possible) Instructor: Vlad Kolesnikov Office: Online/Coda IISP 9th Fl Email: canvas Office hours: TBD Teaching Assistants: TBD Textbooks. We will mainly use the Princeton bitcoin book http://bitcoinbook.cs.princeton.edu/ Free PDF of the book is available https://d28rh4a8wq0iu5.cloudfront.net/bitcointech/readings/princeton_bitcoin_book.pdf, and I will use the PDF. The book is high-level, but readily formalizable (by discussing detail beyond the presentation of the book). We will formalize part of the discussion of the book. MPC and Zero-Knowledge material will be in part drawn from the book I wrote with Dave Evans and Mike Rosulek. Free version is available: http://securecomputation.org/ Lecture slides will be posted on canvas. Online lectures will be recorded and made available for the use in class. Additional reading: research literature on bitcoin/blockchain and cryptography. Course goal: introduce foundations of cryptography and distributed systems to enable understanding basic principles and advanced ideas in the blockchain space. Content: This course is an introduction to blockchain and underlying technology, mostly crypto. It is intended for senior CS students, especially those interested in cryptography or security. Course will involve some coding, reading research literature and writing formal proofs of security. I plan to focus on the following topics (list not necessarily complete and does not imply any specific order or weight): Crypto background: symmetric (hash, encryption) and asymmetric (signatures) primitives, including formal definitions and discussion. Related distributed systems background. Basic architecture of blockchain and bitcoin. Anonymity Advanced crypto primitives (secure computation and zero-knowledge). Altcoins, including Ethereum and others. Advance blockchain issues (proof of work, proof of space, etc) Economics and social issues of bitcoin. Blockchain as a platform and interaction with on other fields. Crypto-technical discussions will be formal or readily formalizable. We will work with definitions, foundations, and mathematical proofs of security. Prerequisites: mathematical maturity and basic programming expertise (we will have Java projects). Ability to read, understand and write definitions and proofs is helpful - you will prove theorems in this class. No prior background in cryptography is required. I expect that you did well in your undergraduate discrete math class and took basic algorithms and computability/complexity theory classes. For example, I expect students to understand running time of an algorithm, basic probability theory, be familiar with computational models, such as Turing machines, etc. Grade Class participation 5% 1-3 Projects 15% 2-4 Homeworks 30% Class research paper (group work) 20% 1-2 Exams (Likely administered online) 20% 5-10 quizzes (Likely administered online) 10% Quzzes and exam(s) are closed book. No special proctoring software will be used, but you are bound by the Honor Code. The quizzes/exams are designed to test your understanding; googling will be of very limited, if any, benefit and will be a violation of Honor Code, unless it explicitly authorized,. Rules. Georgia Tech and College of Computing academic Honor Code applies (http://www.catalog.gatech.edu/policies/honor-code/). Homeworks are announced and posted on Canvas. You can work on the homeworks individually or in groups for up to 3 people, but you have to write and turn in your own solutions and indicate the name of your collaborator, if any. You cannot use the Internet to find the solutions, unless stated otherwise. No late homeworks will be accepted. Please report any typos you find in the notes, slides, homeworks or the solutions.