Cryptocurrency Engineering And Design

Cryptocurrency engineering and design

MAS.S62 Spring 2018

Cryptocurrency Engineering and Design

NOTE: This document is a draft and is subject to change.


Instructors: Tadge Dryja ([email protected]) and Neha Narula ([email protected])

Time: MW 10-11:30 AM

Place: E14-341

Contact: [email protected]

You are welcome to contact us via email.

1. Signatures, Hashing, Hash Chains, e-cash, and Motivation

However, if you think your question would be useful for others to see, please file it as an issue in this repository!


Bitcoin and other cryptographic currencies have gained attention over the years as the systems continue to evolve. This course looks at the design of Bitcoin and other cryptocurrencies and how they function in practice, focusing on cryptography, game theory, and network architecture.

Future developments in smart contracts and privacy will be covered as well.

Cryptocurrency engineering and design

Programming assignments in the course will give practical experience interacting with these currencies, so some programming experience is required.

Office hours: 4-6 PM Tuesdays

Office hours location: The big table outside E15-357

Office hours 2018-05-08 are in Koch Cafe -- all spaces in the Media Lab building are taken by the event this day.

TA: James Lovejoy [email protected]


NOTE: The schedule is in flux and subject to change.

#DateLecturerTopicReadingsLecture NotesLabs
12018-02-07Neha and TadgeIntroduction.

Signatures, hashing, hash chains, e-cash, and motivation

Untraceable Electronic Cashtadge's slides, neha's slides
22018-02-12Neha and TadgeProof of Work and MiningBitcointadge's slides
32018-02-14TadgeSignaturesSimple Schnorr Multi-Signatures with Applications to Bitcointadge's slidesLAB 1 DUE
42018-02-20NehaTransactions and the UTXO modelBitcoin Transactionsneha's slides
52018-02-21TadgeSynchronization process, pruningtadge's slides
62018-02-26TadgeSPV and wallet typestadge's slidesNOTE: No office hours 2018-02-27 !
72018-02-28Alin TomescuOP_RETURN and Catenaalin's slides, Catena paper, Catena codeLAB 2 DUE
82018-03-05NehaForksneha's slides
92018-03-07Sharon GoldbergPeer-to-peer networks
102018-03-12TadgePoW recap, other fork typestadge's slides
112018-03-14TadgeFeestadge's slidesNote: Office hours on Thursday the 15th, 4-6 usual place
122018-03-19TadgeTransaction malleability and segregated witnesstadge's slides
132018-03-21TadgePayment channels and Lightning Networktadge's slides
142018-04-02TadgeLightning Network and Cross-chain Swapstadge's slides
152018-04-04TadgeDiscreet Log Contractstadge's slides
162018-04-09TadgeMAST, Taproot, Graftroottadge's slides
172018-04-11TadgeAnonimity, Coinjoin and Signature Aggregationtadge's slides
182018-04-18TadgeConfidential Transactionstadge's slides
192018-04-23Joseph BonneauEthereum and smart contracts
202018-04-25TadgeMore about Ethereum NOTE: Class is in E15-359
212018-04-30David VorickProof of Work at Industrial Scales (note: no video will be taken)
222018-05-02TadgeAlternative consensus mechanismstadge's slides
232018-05-07TadgeNew Directions in Crypto*tadge's slides
242018-05-09NehazkLedger NOTE: Class is in E15-359neha's slides
252018-05-14Final Presentations Day 1
262018-05-16NOTE: Class is in E15-359 Final Presentations Day 2

Labs and Problem Sets

#Due DateAssignment
12018-02-14Hash-based signature schemes.

Cryptocurrency engineering and design

Code your own signatures and sign with them! In the pset01

22018-02-28Mine your name

All labs are due by 11:59 PM on the day specified.

Final Projects

You may form groups of 1-4 students and prepare a presentation and a ~4 page paper on one of the following:

Project proposals are due 2018-04-18 29:59 EDT - submit them via github repo.

Cryptocurrency engineering and design

(e-mail is also OK if you can get git to work)

  1. Design and implement an application or system
  2. Add a new feature to an existing system like Bitcoin, Ethereum, or another cryptocurrency or shared ledger implementation
  3. Propose a formalization in this space for a topic that has not been formalized yet
  4. Pose and solve an interesting problem

Final Project Submission

Fork this repo on github and add your materials to the projects folder.

Make a subfolder with the name of your project so that it's organized. Also, please include a LISCENSE file describing the license for the source code of the project material, as people out there on the internet may be insterested in using this code and / or collaborating.

Cryptocurrency engineering and design

Please submit PRs but Wednesday night, and I'll merge them.