CMSC 491/691: Special Topics in Computer Science: Blockchains Fall 2019

  • Welcome to the CMSC 491/691 Class!
  • Instructor: Haibin Zhang
  • hbzhang at umbc dot edu (best way to reach me)
  • Office: ITE 357
  • Office Hours: MoWe 3:45pm - 4:45pm
  • Time: MoWe 2:30pm - 3:45pm
  • Location: Janet & Walter Sondheim 101

Academic conduct

  • The UMBC academic integrity policy is available at http://oue.umbc.edu/ai/ All writing and presentation must be entirely your own. You need to reference things that are not yours. If you have done a similar project previously, please let me know and let's discuss if new things could be built upon your previous project. You need to explicitly acknowledge any help you received for any writing and presentation. If you do not include a statement, it is assumed you work completely independently.
  • Cases of academic dishonesty will be dealt with seriously. Depending on its severity, it can be an F for the course.

Grading

  • Attendance and participation: 10%
  • Paper reviews and other small tasks: 20%
    • I will provide papers for you to review. Sample papers and sample reviews will be provided. Be critical and scientific. You do not need to trust/believe what the papers claimed. (What are the benefits and drawbacks? How can you do better?)
  • Midterm Presentation: 10%
    • You should start your project early. (You should submit a research proposal at some point before the mid-term.) By the mid-term, you should have started your project and have made some project, or at least should have had a good plan on how to proceed. You will be given suggestions by your colleagues and me. Feel to change your topics after the mid-term.
  • Final presentation: 10%
    • Time to show your achievements! Not the project due day. Still have some time to improve your projects.
  • Project: 50%

Project

  • The project will be evaluated in novelty and complexity. If your project is theoretical, you should have a proof validating your claims; if you project is applied, you should have implementation and evaluation.
  • When you do the presentations and projects, form a team of size two or three. Two is encouraged. Three is good too, but as you could imagine, the standard for a 3-person project should be a bit higher. You need my permission to work in a group of three students.
  • After the team is formed, I will spend time with each team in the class to discuss how you could carry out your research. Should be the fun part of the course. I encourage you to attend my office hours to discuss your research projects in more detail.
  • If you code, I recommend you maintain the code in github or bitbucket. It is easier for you and me to track the progress and understand the code complexity.
  • Sample projects: improving some open source projects (Hyperledger Fabric, Tendermint); threshold cryptography library; an interesting DApp; MPC with a real-world use case; devise a new blockchain system and prove it is better; cryptographic engineering projects; multi-cloud deployment of blockchains; implementation and comparison of existing blockchains (with some interesting findings); attacks on existing blockchains (with ethics and procedures discussed in class). Out-of-box ideas are highly encouraged!
  • Research has risks. Your project may not end up with what you expected, with high probability. Do not be discouraged! It is already good to learn why your original idea did not work; you may find new problems to study during the process and change your topics. Research is adaptive and dynamic.
  • Note: Entries for future dates are tentative and subject to change as the semester progresses.
No. Class Date Topic Slides Reading
1 Aug 28 Introduction and overview
a brief overview of blockchains
Lecture 1
2 Sep 2 Labor Day. No Class.
3 Sep 4 Introduction to distributed systems: models and assumptions Lecture 2 Cachin book Chapter 2 (this and the following three lectures)
4 Sep 9 Introduction to cryptography
Private-key cryptography (private-key encryption, MAC)
Lecture 3
5 Setp 11 Private-key cryptography
authenticated encryption
hash functions, hash function applications
random oracle model
Lecture 4
6 Sep 16 Public-key cryptography
number theory
public-key encryption
digital signatures
Lecture 5
7 Sep 18 Bitcoin and permissionless blockchains Lecture 6
8 Sep 23 Byzantine reliable broadcast Lecture 7
9 Sep 25 BFT and permissioned blockchains Lecture 8
10 Sep 30 Lab on modern cryptography Lecture 9 Charm Crypto
11 Oct 2 Lab on smart contracts Lecture 10 We will distribute a VM with smart contracts installed
12 Oct 7 Some Popular Permissioned Blockchain Systems Lecture 11 An ATC presentation
13 Oct 9 Comparison among permissionless and permissioned blockchains Slides via emails
14 Oct 14 Applications of Blockchains
15 Oct 16 A detailed look at Hyperleger Fabric
16 Oct 21 Mid-term presentation
17 Oct 23 Mid-term presentation
18 Oct 28 Separating roles of blockchains and case studies Proposal and report progress due
19 Oct 30 Lab 3: Hyperledger Fabric VM distributed via email
20 Nov 4 Group discussion; feedback for midterm report
21 Nov 6 Multi-party computation and blockchains Slide sent via email
22 Nov 11 Secret sharing, erasure-coding Slide sent via email
23 Nov 13 Chain replication for high throughput Slide sent via email
24 Nov 18 Asynchronous blockchains (BFT)
25 Nov 20 Group discussion
26 Nov 25 Causality-preserving BFT and blockchains
27 Nov 27 Private blockchain for Fabric using SGX Invited talk by Marcus Brandenburger from IBM Zurich
28 Dec 2 Final presentation
29 Dec 4 Final presentation
30 Dec 9 No class