6.S974, Decentralized Applications, Fall 2018


The goal of 6.S974 is to understand recent efforts in decentralized applications, to learn what the main design trade-offs are, and to identify areas for new research.

Users often entrust their data to web sites (e.g. e-mail, photo-sharing, blogging, and social net sites) in return for the ability to share their data and to interact with other users. However, such web sites typically give users little direct control over their own data: the web site sets the rules for who can see the user's data, the web site's software and employees can look at or reveal a user's data, only the web site's own software can be used with the user's data, and it is rarely easy for the user to move their data from one web site to a competitor. The goal of decentralized applications is to give users more control over their own data, while supporting flexible sharing and interaction with other users over the Internet. While there exist some promising technologies for decentralized application infrastructure, change is rapid and there are likely many areas where advances are possible.

Class meetings will will consist of discussions of recent papers and deployed systems. Each student will lead discussion of one or more papers; do a handful of small labs; and design and build a substantial project, including a written report (roughly 6 pages) and presentation to the class. There will be no exams.

Signing Up

If you'd like to take this course, please send e-mail to rtm@mit.edu with the two or three papers for which you'd most like to lead discussion, and a few sentences about your relevant background and interests.


We'll examine existing systems in order to understand the design space. Here are some questions we'll gnaw on: I don't know the answers, and I'm not even sure what the right questions are; I hope to learn as much as anyone from this course.

Paper Discussion

Most class meetings will consist of paper discussions. Everyone should read each paper and be prepared to argue about it, both about technical details and the extent to which the paper's design and ideas seem promising. Each paper discussion will be led by a student. For the paper(s) you're assigned to lead, you should come to class prepared with:

Everyone should feel free to post questions about the papers on Piazza.


Everyone should do a project of their choice. Group projects are encouraged. The goal is to explore an idea, evaluate whether it makes sense, and write up the results. Milestones include a proposal, project conferences, a write-up in the form of a research paper, submitted code, and an in-class presentation and demo (see the calendar for dates). Project topics should be along similar lines to the papers we read. If you're not sure, please ask me. Here are some thoughts to serve as starting points for your own project ideas:


If it's clear you put significant effort into class discussion, the paper(s) for which you were the lead, the labs, and your project, you'll get an A.


You'll need a 6.033-level understanding of the web, SSL, security, public key cryptography, and Bitcoin. You'll need to program in order to play with the systems we'll look at and to do a project; JavaScript will likely be the most useful language.