Week | Topic | Slides/Content | Assignments | Due |
---|---|---|---|---|
1 | Course Overview Overview and Applications Underpinnings of blockchains Public-key cryptography, Digital Signatures
Hash functions and properties |
00, 01a : 01b
Do you need a Blockchain? Polyswarm podcast |
Lab 0
Labs 1.1, 1.2 |
|
2 |
Consensus protocols
Blockchain Development
Crash vs Byzantine
fault-tolerance
Voting-based (BFT, Paxos) Lottery-based (Proof-of-work, Proof-of-stake) Bitcoin, Hyperledger overviews
|
01c : 01d
Consensus article FLP and CAP article Bitcoin overview |
Labs 1.3, 1.4 | |
3 |
Ethereum & Smart Contracts overview (DApps)
Solidity programming (language overview, basic types and constructs) |
01e : 02a
Ethereum beige paper |
Labs 2.1, 2.2 | Lab notebook #1 (Fri) |
4 |
Solidity programming
(Web3.js, ERC20, ICOs)
Ethereum tools (Metamask, EtherScan, MyCrypto, Remix) |
02b : 02c | Labs 2.3, 2.4 | |
5 | Blockchain security overview
DASP Top 10, SICTF
intro
D6: Bad Randomness
D3: Arithmetic issues (Types), D2: Access Control |
03a, 03b : 03c, 03d
(Not so)smart contracts |
Labs 3.1, 3.2
Labs 3.3, 3.4 |
Lab notebook #2 (Fri) |
6 |
D5: Denial of Service, D4: Unchecked low-level calls, D: Centralization
D: 51% attacks, D1: Re-entrancy |
03e, 03f : 03g, 03h | Labs 3.5, 3.6 Lab 3.7 |
|
7 |
D7: Front-running, D8:
Time manipulation, D10: Unknown unknowns
D9: Off-chain attacks
Advanced topics
Vyper
|
03i, 03j : 04a | Labs 3.8, 3.9 Labs 4.1, 4.2, 4.3 |
|
8 |
Final project/Vyper Guestbook walkthrough
Vyper/Geth full-node walkthrough Symbolic execution (Manticore/Donation walkthrough) |
04b : 05a |
Final project
Labs 5.1, 5.2, 5.3 Labs 5.4, 5.5, 5.6 |
Lab notebook #3 (Fri) |
9 |
Manticore Lockbox walkthrough
|
Lab notebook #4 (Fri) | ||
10 |
Advanced Topics
Final project time |
06a | Lab notebook #5 (Fri) | |
Finals |
Final project (Fri) |
Attendance and participation | 5% |
Lab notebooks and code repository | 65% |
Final Project | 30% |