CS 620 - Spring 2019
Special Topics in Distributed Systems - Blockchains
Instructors: Vinay Ribeiro & Umesh Bellur
Special Topics in Distributed Systems - Blockchains
Instructors: Vinay Ribeiro & Umesh Bellur
Course Schedule Labs Exams
Blockchain is a popular technology that has wide application in various fields including finance. Blockchains are tamper proof and help build "trust" in a distributed setting. Starting with Bitcoin, blockchain technology has advanced significantly in the past decade, with the advent of smart-contract supporting blockchains such as Ethereum, and permissioned blockchains such as Hyperledger and Corda.
This course will start by building background in distributed systems with topics such as leader election algorithms, proving correctness in synchronous and asynchronous systems, failure handling in distributed systems. The second part of the course starts with an introduction to blockchains and then delves deeper into current research in the area. Topics include failure models and consensus in distributed systems (Raft, PBFT etc.), consensus in permissionless blockchains (Proof of Work, Proof of Stake, Algorand), smart contracts in Ethereum, Attacks in Bitcoin (selfish mining etc.), Scalability challenges (scaling throughput and computation) and proposed solutions (Bitcoin-NG, Fruitchain, Lightning network, Canopus, YODA etc.).
Programming assignments will include implementing a consensus protocol in a distributed system, implementing a simulator for blockchains, Ethereum smart contracts etc. Students will be expected to read and present papers in class, as well as participate actively in discussions within class.
Pre-requisites: Data Structures (CS213), Operating Systems (CS347), Computer Networks (CS348) OR CS744 for PG students.