Designing Decentralized Applications on Blockchain

CS 359B · Spring 2018

This class will help you build fluency with blockchain application development. You will engage hands-on in the design, implementation and evaluation of decentralized applications on cryptocurrency platforms, such as Ethereum, NEO, or QTUM. Along the way, you’ll build your own useful, large-scale dApp.


Watch final student presentations.  

Everyone is welcome to join the class' mailing list and Slack on daapp development.



Logistics

    Instructor
  • Nicolas Kokkalis
    lastname at stanford dot edu (put cs359b in subject)
  • Office hours: Friday 4:30-6:00pm, Gates 387
Teaching assistants
  • Charles Lu
    By appointment
  • Daniel Kharitonov
    By appointment
Weekly schedule
  • Lecture
    Mon and Wed 4:30–5:50pm, Thornton 110
  • Studio
    Mon or Wed 4:30–5:50pm, Thornton 110 (Some weeks)


Class summary

This project-based class focuses on understanding the elements of blockchain application development. Students will learn methods to design, implement and evaluate programs on fault tolerant cryptocurrency systems. Such systems could be viewed as a giant global slow distributed computer with public storage that can communicate to the real world through oracles. Alongside lectures, there will be a quarter-long project where students design, implement and evaluate a novel distributed application on a modern blockchain, such as the ones of the Ethereum or NEO cryptocurrencies. The Bitcoin blockchain will be also briefly discussed as background knowledge.



Syllabus

Below is the syllabus of the class in a calendar formal. Sing in for more information on the class and the projects.

Monday Wednesday
April 2

Blockchain & Bitcoin

Class intro & fundamentals lecture slides

HW #0 (landscape research) out
handout
April 4

Decentralised applications

Dapps landscape lecture

Analysis of a dapp (Fabiano Pereira Soriani, original developer, CryptoKitties)

Studio 1: dApps landscape presentations

Studio 2: In-class brainstorm

HW #1 (project idea pitches) out
handout HW #0 (landscape research) due
handout
April 9

Ethereum & NEO Platforms

Ethereum VM slides

NEO Platform (Da Hongfei, co-founder, NEO)

Tooling (Andy Milenius, MakerDAO CTO)

April 11

Studio: Project idea brainstorm (ideas + feedback)

QTUM Platform

QTUM VM (Patrick Dai, QTUM founder)

HW #1 (project idea pitches) out
handout HW #2 (project proposals) out
handout
April 16

Project proposals

Studio: Project proposals (presentations + feedback)

HW #2 (project proposals) due
handout
April 18

Ethereum Development

Ethereum VM, Solidity 1, development tools slides

Projects and teams finalized

HW #3 (CardinalToken) out
handout HW #4 (project functionality & milestones) out
handout
April 23

Solidity #1

Solidity 2

HW #3 (CardinalToken) due
handout
April 25

Project design

Studio: Mockups (presentations + feedback)

HW #4 (mockups) due
handout HW #5 (breaking ground) out
handout
April 30

Data for dapps

Oracles (Joey Krug, Augur founder) slides

IPFS (Juan Benet, Protocol Labs founder and CEO

HW #5 (breaking ground) due
handout
May 2

Dapp architecture

MyEtherWallet (Kosala Hemachandra, MyEtherWallet co-founder and CEO)

CryptoKitties (Dieter Shirley, CryptoKitties CTO) slides

May 7

Dapp privacy

Privacy (Benedikt Bünz, Stanford PhD student)

Oracle design (Xiahong Lin, Bodhi)

May 9

User identity & dapp scalability

The Road to Utopia - Identity & Blockchain (Zhiwei Li, security researcher) slides

Discreet log contracts (Tadge Dryja, DCI researcher) slides

HW #6 (midterm) out
handout
May 14

Midterm demos

Studio: Midterm demos (presentations + feedback)

HW #6 (midterm) due
handout
May 16

Smart contract security & solidity #2

Solidity 3 slides

Smart contract security (Nemil Dalal, CryptoFin founder) slides

May 21

DAOs & Off-chain protocol scalability

DAOs (Hudson Jameson, Ethereum Foundation) slides

Fault tolerance for dapps (Matthew Gould & Braden Pezeshki, BuyethDomains) slides

Off-chain protocols (Christian Decker, Blockstream) slides

May 23

Advanced topics

Tools and deployment 2 slides

dApp security (Florian Tramèr, Stanford PhD student) slides

Threshold relay & probabilistic slot consensus (Dominic Williams, Dfinity president & chief scientist)

May 28

Memorial day: no class

May 30

Putting it all together

Recap slides

HW #7 (smart contract security) out
handout
June 4

Next steps after class

Panel slides

June 6

Final Presentations

Wrap-up slides

Studio: Final presentations (presentations + feedback)

Slides

Login here and email the instructor if you want access to the slides, HW and other teaching matterial.