CS795: Blockchain Technologies 
George Mason University, Computer Science, Spring 2017

Instructor: Prof. Foteini Baldimtsi (foteini@gmu.edu)
Office Hours: Mondays 2:00PM-4:00PM, Engineering 5333 (also by appointment)
Lectures: Mondays 4:30PM-7:10PM, Location:  Art and Design Building, Room 2026
Class Website: http://www.baldimtsi.com/teaching/cs795_sp17

Course Summary

This class will serve as an introduction to the exciting new world of blockchain technologies. We will start our journey studying Bitcoin (the cryptocurrency everyone talks about) which is one of the first popular application of blockchains. We will study in detail how bitcoins are generated/mined, how transactions are being made and how the blockchain makes it possible to keep everything secure, fast and reliable without depending in any ``trusted party'' such as a government or a financial institution. We will explain the limitations of Bitcoin and will explore new systems and cryptocurrency proposals that overcome them. Then, we will look at the smart contract technology that enforces the automated execution of electronic commitments among parties without the need for a mediator.  Finally, we will explore further applications of blockchain such as identity management or distributed data storage.

Prerequisites: No specific prerequisites. Familiarity with networks, security and cryptography will be helpful. There will also be some programming assignments and students should be familiar with programming in C, Java or another language.

Required Materials

Text Book: Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder. Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction, Princeton University Press, 2016. (Required). Freely available here.

There will also be on-line news articles and research publications that you will be required to read and present during lectures.


Homeworks: 15% (2 assignments that will require both programming and problem solving) 
Paper Presentation: 30% Every student will present one research paper in class.
Labs: 5% (There will 2-3 in class labs/ in-class demos)
Class Participation: 5% 
Final Project: 45% (You will work on project in blockchain technologies with a writeup/coding and in class presentation) 

Communications: We will use piazza to communicate with you and upload HWs and Labs. You are welcome to use Piazza to set up study groups, to post interesting security incidents you read about (please tag these as "interesting incident in the news"), or to discuss the course with other students. If you have a question about the course you should: (a) Come to office hours, OR (b) Post to Piazza. You are welcome to post to Piazza anonymously, but please don't use private posts to ask technical questions. The rest of the class is probably also interested in your question, so make it public! 

Ethics: You have to read and follow the GMU honor code

Class Schedule:

 Lecture  Topics  Suggested Readings  HWS
Course logistics
Introduction to blockchains
Textbook Chapter 1
SoK: Research Perspectives and Challenges for Bitcoin and Cryptocurrencies

01/30 Crypto Toolbox Bitcoin Basics Textbook Chapter 1
Hashcash, ECDSA signature details
Bitcoin: A Peer-to-Peer Electronic Cash System
HW1&2 out
02/06 Bitcoin Mechanics  Textbook Chapter 3
Consensus Mechanisms, Mining Textbook Chapter 2
Notes by Roger Wattenhofer
HW1 in and Paper Selection
02/20 Anonymity, Crypto e-cash
ZK proofs
ZK proofs Part1, and Part 2
Final Proj.
02/27 Anonymous Cryptocurrencies  HW2 in
03/6  Making Bitcoin Anonymous Final Project 1st checkpoint
03/20 Bitcoin Attacks  
 03/27 Scaling Decentralized Cryptocurrencies

Off-chain transactions
 04/3 MicroPayments and Distributed Storage  Final Project 2nd checkpoint
 04/10  Alternative Consensus   
 04/17  Smart Contracts  Ethereum
 04/24  NO CLASS    
 05/1  Odds and ends  
 05/8  Final Project Presentations  

"Systemization of Knowledge-Anonymity in Blockchain Protocols and Related Security Attributes"<\p>

Greg Hampe, Chola Chhetri


"Usability and Understandability of Zcash: Limitations of a GUI front-end"

Ben Caroll


"CLI for nTumbleBit"

Subhankar Ghosh


"Implementing a Hybrid Blockchain"

Anand Parahsar


"On the Relationship Between Blockchains and Secure Broadcast"

Dan Starrin


"Physically Isolated Execution (PIE) with applications to blockchain technologies"

Ahmed Ferozpuri


"Storage systems utilizing Blockchain"

Animesh Jain, Ishan Khaparde


"Wallet application for Ripple"

Abhishek Madhusudhan, Suyameendra Wadki


"SmartAds: A smart decentralized advertising platform"

Jaivendra Sing