The University of Chicago
Department of Computer Science
MPCS 56605/FINM 31400 Course Syllabus
Introduction to Blockchain: Bitcoin, Ethereum and
Smart Contracts
Online Offering Only - No Hyde Park Campus Class
Summer 2023
Instructor: Mark
Shacklette
Office:
Online
Zoom Only
Office Hours: Mondays 2:30 PM - 3:45 PM and
by Appt.
email: mark@cs.uchicago.edu
(read hourly or so)
mshack@post.harvard.edu
(read hourly or so)
Teaching staff:
EVERYONE: Our discussion platform has moved from Piazza to Ed Discussion via Canvas. Please access Ed here. An Ed Discussion Quickstart guide is located here.
SUBJECT | COURSE | TITLE | TIME | BUILDING |
324 | 56605 | Introduction to Blockchain: Bitcoin, Ethereum
and Smart Contracts |
Monday, 4:10pm - 6:00 PM (CST) |
Zoom Online* |
Texts: Required
Bitcoin and Cryptocurrency Technologies: A Comprehensive
Introduction, Narayanan, et. al. Princeton, 2016.
ISBN: 978-0691171692
Building Ethereum Dapps, Roberto Infante, Manning Press, 2019. ISBN: 978-1617295157
Mastering Ethereum: Building Smart Contracts and DAPPS, Antonopoulos and Wood, O'Reilly, 2017. ISBN: 978-1491971949
Hands-On Smart Contract Development with Solidity & Ethereum, Solorio et. al., O'Reilly, 2020. ISBN: 978-1492045267
Proof of Stake: The Making of Ethereum and the
Philosophy of Blockchains, Vitalik Buterin, ed. Schneider,
Seven Stories Press, 2022. ISBN: 9781644212486
Texts: Highly Recommended
Out of the Ether, Matthew Leising, Wiley, 2021, ISBN:
9781119602934
Learn Ethereum, Wu et. al., Packt Publishing, 2019, ISBN: 9781789954111
Recommended
Reading
II. PREREQUISITE:
All MPCS students in this course are required to have passed
core programming. No exceptions. FinMath students
are expected to have equivalent experience.
Additionally, the following courses are suggested
prerequisites for taking this course. Those with this or
equivalent background will find this course easier going:
Mathematics for Computer Science: Discrete Mathematics (MPCS
50103 or equivalent)
Algorithms (MPCS 55001 or equivalent)
Solid comfort with one (or more) of the following
programming languages: Java (Javascript), C/C++, Python,
Ruby, C#, Go, Rust, Objective-C/Swift. If you have a
preferred familiarity with any Functional/Lisp/Haskell dialect
(i.e., CLOS, Scheme, Haskell, etc.), we should talk.
Students will learn Solidity during the progression of the course.
All students will need to have available sufficient disk space
for chains and test chains. You will need ~600 Gig available
for Ethereum and about ~600 Gig available for Bitcoin, at a
bare minimum. A 3-4 TB external drive will be most
helpful.
For those university students not enrolled in the MPCS or
Financial Mathematics:
For those students wishing to audit this course:
III. COURSE DESCRIPTION
This course concentrates on three major themes: Blockchain concepts, derivative implementations (Bitcoin & Ethereum), and smart contract development.V. ACADEMIC INTEGRITY
Students are expected to have read and understood the
University's policy on Academic Integrity. This policy is detailed
in the Student Manual of University Policies and Regulations,
available online at https://masters.cs.uchicago.edu/page/program-policies.
VI. METHOD OF INSTRUCTION
Methods include lecture and homework (labs)
assignments.
VII. OTHER COURSE INFORMATION
Attendance:
No formal attendance taken. There may be information presented in class that is not in the texts. You will find the lectures helpful in doing the laboratory exercises.
Make-up Work:
Students are expected to read the assigned texts before class in
order to be able to full participate in the discussions and course
activities.
VIII. METHOD OF EVALUATING STUDENT PROGRESS
Assigned work evaluated as follows:
6 Labs (12.0 points each) |
72.00% |
Final Project Delivery
(Teams-Peer Grade)* |
12.00%* |
Final Project Delivery (Instructor Grade) |
16.00% |
Total: |
100%
|
Grading scale:
95-100: A
90-94: A-
87.6-89: B+
83-87.5: B
80-82.9: B-
76-79: C+
Lab Deliverables will be graded on a 12-point basis. Deliverable due dates are noted on the lab pages. All labs and homework are due by 4:00 pm on the due date. For instructions about how to submit your lab work using GitHub , see...
All
assignments are due as specified on this syllabus and lab and
other deliverables. Any and all lateness will suffer
penalties. The penalty for late labs will be 2.0 points
off for each 24-hour period the lab is late, through six days
late (6*2.0=12.0). After six days delay, the lab will no
longer be accepted for grading and will receive a 0.
NB: The end of the quarter is the time at which the final grade you have earned through your work in the quarter is recorded with the registrar. There is no extra credit offered in this course, either at the beginning or at the end. If you are dissatisfied with the grade you have earned at the end of the quarter, your only options will be to retake the course the next time it is offered, or accept the grade you earned.
NB: The instructor reserves the right to alter the course contents, dates, times or percentage of credit based on time allowed and class progress through the course material. The instructor also reserves the right to curve grades if he deems it in the best interest of the majority of students.
IX. COURSE SCHEDULE
Articles* (Abbreviations Key for Required texts (see esp. Required Reading under Schedule below):
Abbreviation |
Title & Author |
Location |
H&S |
How to Time-Stamp a Digital
Document, Haber & Stornetta |
How to Time-Stamp a Digital Document |
Menger |
On the Origin of Money,
Menger |
On the Origin of Money |
Nakamoto |
Bitcoin: A Peer-to-Peer
Electronic Cash System. "Satoshi Nokamoto" |
Bitcoin: A Peer-to-Peer Electronic Cash System |
Buterin |
White Paper |
Ethereum Whitepaper | ethereum.org |
Wood |
Ethereum: A Secure Decentralised
Generalised Transaction Ledger |
http://gavwood.com/paper.pdf |
Tual |
Stephan Tual, A Primer to Decentralized
Autonomous Organizations |
A
Primer to Decentralized Autonomous Organizations (DAOs) |
ERC20 |
ERC-20 Token Standard |
ERC-20: Token Standard (ethereum.org) |
ERC721 |
ERC-721 Non-Fungible Token Standard |
ERC-721: Non-Fungible Token Standard (ethereum.org) |
Szabo0 |
Formalizing and Securing Relationships |
Formalizing and Securing Relationships on Public Networks | Satoshi Nakamoto Institute |
KOB |
Neal Kin, Vladimir Oksman, Charles Bry Patent, August 15, 2008 | Patent Pub. No.: US2010/042841A1 |
Merkle1 |
A Digital Signature Based On A Conventional Encryption Function, Merkle | A Digital Signature Based On A Conventional Encryption Function |
Luciano |
"Cryptology: From Caesar
Ciphers to Public-Key Cryptosystems," Luciano and Prichett,
The College Mathematics Journal, Vol. 18, No. 1
(Jan., 1987), pp. 2-17 |
Cluster pub directory:
~mark/pub/56605/pfds/Luciano.Cryptology.pdf |
Kumar |
Sanjeev Kumar Mandal1, A.R Deepti |
Cluster pub directory: ~mark/pub/56605/pfds/Vigenere1.pdf |
Wiki1 |
Wikipedia article on letter
frequency analysis |
Wikipedia
Link |
Bonneau1 |
On Bitcoin as a public randomness source. Bonneau et. al. | On Bitcoin as a public randomness source |
Rogaway |
Cryptographic Hash-Function Basics: Definitions, Implications, and Separations for Preimage Resistance, Second-Preimage Resistance, and Collision Resistance, Rogaway & Shrimpton, 2004 |
|
Kim |
Updating and Distributing
Encryption Keys, Neal Kim, Vladimir Oksman, Charles Bry. |
Patent Pub. No.: US2010/042841A1 |
Eyal |
Majority is not Enough:
Bitcoin Mining is Vulnerable. Eyal et. al. |
http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf |
Boehm |
Bitcoin: A First Legal Analysis with reference to German and US-American law. Boehm, et. al. | http://fc14.ifca.ai/bitcoin/papers/bitcoin14_submission_7.pdf |
Raskin* |
Raskin & Yermack, Digital
Currencies, Decentralized Ledgers, and the Future of Central
Banking |
Cluster pub directory:
~mark/pub/56605/pfds/DIGITAL CURRENCIES, DECENTRALIZED
LEDGERS, AND THE FUTURE OF CENTRAL BANKING.pdf |
Hooper* |
Bitcoin: Digital
Currency or Digital Tulip, Hooper |
Cluster pub directory: ~mark/pub/56605/pfds/bitcoin-digital-currency-or-digital-tulip.pdf |
Katsenelson* | Bitcoin-Millennial's Fake
Gold, Katsenelson |
Cluster pub directory: ~mark/pub/56605/pfds/bitcoin-millennials-fake-gold.pdf |
Kahn* |
Cryptology Goes Public, Kahn |
Cluster pub directory: ~mark/pub/56605/pfds/CryptologyGoesPublic.pdf |
DiffieHellman* |
New Directions in Cryptography, Diffie &
Hellman |
Cluster pub directory: ~mark/pub/56605/pfds/Diffie.Hellman.Original.Paper.pdf |
Economist1* |
The Economist: The great chain of being
sure about things |
Cluster pub directory:
~mark/pub/56605/pfds/Economist_The great chain of being sure
about things - Blockchains.pdf |
Economist2* |
The Economist: The trust machine |
Cluster pub directory: ~mark/pub/56605/pfds/Economist_The trust machine The promise of the blockchain.pdf |
Back* |
Hashcash - A Denial of Service
Counter-Measure, Back |
Cluster pub directory: ~mark/pub/56605/pfds/hashcash.pdf |
Damgard* |
A Design Principle for Hash Functions |
Cluster pub directory: ~mark/pub/56605/pfds/Damgard.A.Design.Principle.for.Hash.Functions.pdf |
Lamport* |
The Byzantine Generals Problem, Lamport |
Cluster pub directory: ~mark/pub/56605/pfds/lamport.byzantine.generals.problem.pdf |
Merkle2* |
One Way Hash Functions and DES, Merkle |
Cluster pub directory: ~mark/pub/56605/pfds/Merkle.One.Way.Hash.Functions.and.DES.pdf |
Szabo1* |
Secure Property Titles with Owner Authority,
Szabo |
Cluster pub directory:
~mark/pub/56605/pfds/Nick.Szabo.Secure Property Titles with
Owner Authority.pdf |
Dobbertin* | RIPEMD-160: A Strengthened Version of
RIPEMD, Dobbertin et. al. |
Cluster pub directory:
~mark/pub/56605/pfds/RipeMD-160.pdf |
Lebowitz* |
Salt, Wampum, Benjamins - Is Bitcoin Next?,
Lebowitz |
Cluster pub directory: ~mark/pub/56605/pfds/salt-wampum-benjamins-is-bitcoin-next.pdf |
Shamir* |
How to Share a Secret, Shamir |
Cluster pub directory:
~mark/pub/56605/pfds/shamir.how.to.share.a.secret.pdf |
Leibowitz |
Coindesk: Bitcoin Explained |
https://www.coindesk.com/bitcoin-explained-global-currency-wall-street-veteran/ |
Bonneau2 |
SoK: Research Perspectives and Challenges for
Bitcoin and Cryptocurrencies. Bonneau et. al. |
http://www.jbonneau.com/doc/BMCNKF15-IEEESP-bitcoin.pdf |
Hussman* |
Three Delusions: Paper Wealth, a
Booming Economy, and Bitcoin |
three-delusions-paper-wealth-a-booming-economy-and-bitcoin.pdf |
Bryan |
Island Money |
Cluster pub directory: ~mark/pub/56605/pfds/IslandMoney.pdf |
BIP-37 |
BIP-37 Peer Services |
https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki |
Bloom |
Burton H. Bloom, "Space/Time Trade-offs
in Hash Coding with Allowable Errors" |
http://astrometry.net/svn/trunk/documents/papers/dstn-review/papers/bloom1970.pdf |
Decker |
Decker, Wattenhofer, Information Propagation
in the Bitcoin Network |
Cluster pub directory: ~mark/pub/56605/pfds/InformationPropagationInBitcoinNetwork.pdf |
Demers |
Demers et. al., Epidemic Algorithms for
Replicated Database Maintenance |
Cluster pub directory: ~mark/pub/56605/pfds/demers.epidemic.algorithms.pdf |
Rauch |
Rauch, et. al., Distributed Ledger Technology
Systems: A Conceptual Framework |
Cluster pub directory: ~mark/pub/56605/pfds/DLTS.pdf |
Szabo |
Trusted Third Parties are Security Holes |
Cluster pub directory: ~mark/pub/56605/pfds/Szabo.TrustedThirdParties-SecurityHoles.pdf |
*Articles starred may be found on the cluster under my pub
directory (~mark/pub/56605/pdfs). All numbers refer to chapters in texts, not pages,
unless otherwise noted (as "pp. xxx").
The following abbreviations reference the following works (see
esp. Required Reading under Schedule below):
Abbreviation | Referenced Text |
BCT | Bitcoin and Cryptocurrency Technologies. Narayanan et. al. |
ME |
Mastering Ethereum, Antonopoulos
& Wood |
BED |
Building Ethereum Dapps, Infante |
SCD |
Hands-On Smart Contract Development with
Solidity and Ethereum, Solorio et. al. |
POS |
Proof of Stake, Buterin, ed. Schneider |
Class/Date | Lecture Topics |
Required Reading |
Homework Assignments &
Other Due Dates |
Class 1
June 12 |
What is Blockchain and why
does it matter? Course Introduction & Peer Grading Fundamental concepts |
BCT: Forward ME: Chapter 1 H&S Nakamoto SCD: Chapter 1 KOB |
Lab 1 - Environment Setup & Tools Installation (Bitcoin & Ethereum) |
Class 2 June 19 |
NO CLASS (see async
lectures below) Juneteenth Holiday Async Lecture: Foundations of Cryptography Async Lecture: Money, Currency, Ledgers |
Buterin Wood Szabo0 (Introduction & Contracts Embedded in the Real World sections only) Tual POS: "Prediction Markets: Tales from the Election" Bryan Raskin Hooper |
|
Class 2 June 26 |
Introduction to Cryptography - Classic ciphers Hashing and Hash Functions and Hash Pointers Asymmetric Cryptography: - Keys & Digital signatures |
ME: Chapters 2-4 Menger Rauch Lebowitz Rogaway Damgard |
Lab 2 - Brute Force Cryptanalysis and Letter Frequency Cryptanalysis |
Class 3 July 3 |
Foundational Algorithms - Binary Trees - Merkle trees - Elliptic curves - SHA-256 - RIPEMD-160 - Keccak-256 - Encoding schemes |
BCT: Chapter 1 ME: Chapter 5 |
Lab 3 - Tamper-Proof Merkle
Tree of Hash Pointers Project Team Formation Determinations Due |
Class 4 July 10 |
The Blockchain: Ethereum Transaction Fundamentals The Ethereum Virtual Machine Mining & Consensus (Bitcoin and Ethereum) Ethereum Wallets |
ME: Chapter 6 BED: Chapters 1-4 SCD: Chapters 2, 4 Luciano Wiki1 POS: The Meaning of Decentralization POS: The Value of Blockchain Technology |
Lab 4
- Your Own Blockchain & Your First Smart Contract |
Class 5
July 17 |
Ethereum: Introduction to the Ethereum Blockchain and Smart Contracts Cryptocurrency Tokens in Dapps: ERC-20 and ERC-721 Introduction to Solidity Programming & IDE: Data, Functions, Events |
Merkle1 BCT: Chapter 2 ME: Chapters 7, 10 BED: Chapter 5 SCD: Chapter 5 Kim Lamport POS: Self-Enforcing Contracts and Factum Law POS: Ethereum: A Next-Generation Cryptocurrency and Decentralized Application Platform |
Lab 5
- Mine Your Blockchain & Implementing the ERC-20 Token
Interface in Solidity Team Check-Ins with TAs this week |
Class 6
July 24 |
Introduction to Solidity
Programming Bloom Filters |
BCT: Chapter 4 ME: Chapter 9 BED: Chapters 6-8 SCD: 6-7, 9-11 Bloom POS: Markets, Institutions, and Currencies--A New Method of Social Incentivization POS: The Most Important Scarce Resource is Legitimacy |
Lab 6
- Smart Contracts - Testing Smart Contracts Team Project Proposals Due |
Class 7 July 31 |
Advanced Contracts and Deployment Cryptocurrency Tokens in Dapps: NFTs and ERC-721 Oracles and Off-Chain Data Ingestion |
BCT: Chapter 5 ME: Chapters 10-12 SCD: Chapter 8 Eyal Boehm Back POS: A Proof-of-Stake Design Philosophy |
Team Check-Ins with TAs this week |
Class 7 August 8 |
Advanced issues in Smart
Contract Development: The Ethereum Name Service (ENS) Decentralized storage networks (IPFS and Swarm) Security and loopholes |
ME: Chapter 13 BCT: Chapter 6 Hussman POS: Crypto Cities POS: On Free Speech |
Team Final Project Work |
Class 9
August 14 |
Final
Team Project Delivery and Class Presentations FINAL PROJECT CODE SUBMISSIONS BY NOON CST THURSDAY AUGUST 17th 2023 |
Szabo ME: Chapter 7 BIP-37 BCT: Chapters 8, 9, 10 Decker Demers |
Team Final Project Presentations (click here for instructions) |
EVERYONE: Our discussion platform has moved from Piazza
to Ed Discussion via Canvas. Please access Ed here. An Ed Discussion
Quickstart guide is located here.