Elements of Decentralized Finance

Instructor

Prof. Pramod Viswanath, Princeton, pramodv@princeton.edu

Teaching assistants

  • Viraj Nadkarni, viraj@princeton.edu
  • Benjamin Finch, btfinch@princeton.edu
  • Ashwin Hebbar, hebbar@princeton.edu

Course Material

Lecture
Date
Theme Topic Lecture material Lab instructions Lecture video Assignments
01/29 Introduction Intro to Course Slides Instructions Video  
02/01 Blockchain Primer Slides Instructions Video  
02/05 Smart Contracts and Solidity Slides Instructions Video  
02/07 DeFi marketplaces Exchanges 1: DEXs Slides Instructions Video  
02/12 Exchanges 2: Bonding curves and CFMMs Slides Instructions Video  
02/14 Exchanges 3: Improving CFMMs Slides Instructions Video  
02/19 Exchanges 4: MEV Deep dive Slides Instructions Video Crypto Zombies 1
02/21 Pricing tokens in DeFi Oracles Slides Instructions Video  
02/26 Smart Contracts, Attacks and Pricing Slides Instructions Video Assignment1
02/28 Banking on DeFi Borrow/Lending protocols Slides Instructions Video  
03/04 Flash loans Slides Instructions Video Crypto Zombies 2
03/06 Financial attacks using lending Slides Instructions Video  
03/18 Bridges and Synthetic tokens Wrapped tokens and bridges Slides Instructions Video Assignment2
03/20 Stablecoins Slides Instructions Video  
03/25 Synthetics Slides Instructions Video Assignment3
03/27 NFT NFT1 Slides Instructions Video  
04/01 NFT2 Slides Instructions Video  
04/03 Governance DAOs Slides Instructions Video  
04/08 Open Hedge Funds in DeFi Slides Instructions Video Assignment4 (optional)
04/10 Advanced Staking Slides Instructions Video  
04/15 EigenLayer Slides Instructions Video  
04/17 Project presentations   Slides Instructions Video  
04/22   Slides Instructions Video Assignment5 (optional)
04/24   Slides Instructions Video  

Course Outline

Blockchains are digital platforms whose consistency and liveness are maintained by a decentralized set of participants. The popular blockchain platforms are programmable (i.e., support applications defined via a Turing complete programming language) and are permissionless (i.e., transactions on the platform are open to anyone; the bar to participate is very lightweight). The combination of programmability, permissionless access and the financial nature of the underlying token (e.g., ETH in the Ethereum blockchain) has led to tremendous innovation in financial products on the blockchain, broadly covered under the rubric of decentralized finance or simply DeFi.

The purpose of this course is to introduce the various novel types of financial instruments enabled by blockchains, classified as “elements” of DeFi. The course is interdisciplinary since it covers both finance and computer science topics. Finance terms are introduced on a need-to-know basis and no hard prerequisites in financial engineering are needed. Basic background in computer science (programming) is expected. The course covers a technical discipline that is developing at a fast pace – course material in the form of slides and notes are provided for each lecture, but the students will be encouraged to read a diverse range of reference material (source codes, whitepapers, web forum discussions). Nine elements of DeFi are discussed:

  1. Token transfers: native blockchain transactions
  2. Market making via smart contracts
  3. Oracles: importing external data
  4. Borrow/Lending: banking functionality
  5. Cross border finance: bridges, wrapped tokens
  6. Stable coins: tying tokens to fiat
  7. Synthetics and Perpetuals: self-adapting financial instruments
  8. NFTs : digital collectibles
  9. DAOs : tokenized governance

The pedagogical style is designed to provide a hands-on experience with the material. Each class will be divided into two parts: the first part will be a lecture designed to highlight the conceptual and algorithmic aspects of the material. the second part will be a lab activity designed to provide a hands-on experience and highlight the practical aspects of interacting with a permissionless public blockchain (Ethereum testnet).

Course Notes

  • Lecture videos, slides, lab instructions, and supplementary reading material will be provided for each lecture.
  • Supplemental reading:

Pre-requisites

The basis prerequisites are a maturity with algorithms (COS 226), probability (ORF 245) and computer systems (COS 316). Background in blockchains (ECE/COS 470 and COS 495) and financial mathematics (ORF 335) will be helpful.

Assignments

We will have a 5 part assignment series to build smart contracts in Solidity programming language through which students explore the core elements of DeFi. The first 3 assignments are mandatory, whereas the rest are optional.

Final Project

In-depth study of one of the elements of DeFi covered in the course. The final project report will be due after the Dean’s date and will serve as the final exam of the course.

Assignments and Grading

The course is evaluated in three formats:

  • [24% of the grade] Five programming assignments – in Solidity programming language through which students explore the core elements of DeFi. Students need to complete the first 3 of the 5 assignments.
  • [56% of the grade] In-class labs – Hands-on activity for students to get a feel for interacting with each element and exploring the action space. Students need to attend any 14 out of the 21 lectures to do that.
  • [20% of the grade] Final project – Should be an in-depth study of one of the elements of DeFi covered in the course. Prompts on potential project topics shall be provided by us. The final project report will be due after Dean’s date and will serve as the final exam of the course.