Fall 2022: ECON 3382
Fall 2022: ECON 3382 Summary
We focus on the fundamentals of Nakamoto Consensus (Bitcoin). We cover cryptography and hashing, blockchains, and voting via proof-of-work (PoW). Students should be able to explain what every important feature of Bitcoin is and why the feature is needed or optional. Students should be able to explain how various blockchain designs affect their function and take informed sides in all the major debates within the cryptosphere. With these fundamentals, we go on to explore Turing complete consensus systems like Ethereum and commodity-currency stablecoins. We also simulate blockchains and construct blockchains in class to gain a better understanding of them. With the participation of Prof. Lewis Tseng, students will propose projects that will hopefully get completed over the winter break and in CSCI 3359 (offered in Spring).
Fall 2022: ECON 3382: Study Questions
These questions are answered in two ways. The first is a dinner conversation. It requires the accurate use of analogies and simple words. This is important for participating in discussions in broad, casual settings. The second is with more precision on a blackboard. This skill set allows one to be critical of white papers. Understanding and translating this complexity to everyday vernacular is important and will be crucial for doing well in this course. Translation: Major parts of this course involve graded mathematics. Finally, Bitcoin is used as a stand-in for all consensus assets that are "similar" to Bitcoin. Ethereum is used as a stand-in for all assets that allow contracts.
Money as a record of transactions.
Why do we need money? What are the properties of money? When are they (un)desirable?
What is "fiat"? What are its advantages and disadvantages? What gives fiat its unique abilities?
When do cash and a ledger record the same thing? When do they not?
How does a central authority maintain records and money balances?
Records without a central authority.
Which record do we use? How do we decide on which record is correct when there is no central authority? Can we vote? What makes voting and the counting of votes “work”? How does Nakamoto Consensus solve this problem of agreement over the “correct” historical record?
Elements of Nakamoto Consensus.
What is an identity in a public consensus system? How does one self-identify? What technology provides security? How does one prove that they have dedicated valuable resources to the voting process? What are hash functions? What are the properties of hash functions? How are those properties important for the voting mechanism? Where do “blocks” enter the picture? Why are they chained? Can the blocks be altered? Who chooses the content of the blocks? Do we need all participants to comply? How many failures can we tolerate?
Tradeoffs in Nakamoto Consensus
Speed vs Security - How many confirmations is enough? What kind of vote aggregation protocols do we use?
Privacy vs Transparency - How private is this system? Is this a good property of money? Is it a good property of an insurance policy? Is it a good property of a reserve commodity?
Interconnectedness vs Simplicity - How should data be packaged? Why should it be packaged that way? Can the data be organized differently?
Equity and Externalities - How is the current state of mining different from when the Bitcoin whitepaper was written? What did Satoshi Nakamoto fail to anticipate?
An alphabet of big questions
Altcoins - Why Bitcoin is “king” despite the fact that “anyone can write similar code”?
Buterin's Trilemma - What is it and why is it such a big deal? Can it be overcome?
Centralization. ASICS and Mining Pools - Why do they exist?
Deflation - Bitcoin has value because it is deflationary. Is this correct?
Externalities - Proof-of-work uses electricity which imposes negative environmental externalities.
Forks, Soft and Hard - How do these effects affect blockchain valuation? Is this a “stock-split?”
Incentive Compatibility - Proof-of-Whatever
There are so many "proofs". What are these mechanisms? How are all the different mechanisms that generate costly voting equivalent? How are they different? Can we maintain individual incentives while reducing externalities? Can we eliminate real costs altogether? What other fixed-for-floating solutions are there? What other forms of real-input-mining exist? What about nominal bets?
Data, data, data (and a hint of the lack of privacy)
What exactly is a blockchain? Where do you get the data from? How do you know the data is “correct”? Can anyone be a node/miner/wallet? What does a transaction look like on the blockchain?
Towards Turing Completeness
BTC's implementation lacked loops. What are the pros and cons of this feature? Why do loops matter so much? What are smart (dumb?) contracts and where do we use them? How is a smart contract equivalent in principle to a history of transactions? How does Turing’s Halting Problem throw a wrench into a naive implementation of Bitcoin+Loops? How do prices solve this problem? What is Ethereum? What is gas and what are gas fees and gas prices? What can Ethereum do that Bitcoin cannot?
Are consensus assets good money?
What are the other major classes of crypto assets and are they consensus assets?
What are Stablecoins and Central Bank Digital Currencies? What is Store of Value, Medium of Exchange and Unit of Account? What does monetary policy in the presence of CBDCs and Stablecoins look like? Was Nakamoto right about BTC as ``money''?
Other applications that can be built on these fundamentals
DAOs, DeFI, Tokenization of Real Assets, NFTs, Prediction, Gambling and Insurance, Decentralized Exchanges.
Spring 2023: CSCI 3359
Spring 2023: CSCI 3359 Summary
We focus on the concept and the fundamentals of distributed systems. We will cover important techniques and theoretical foundations (e.g., various impossibility results and fundamental limitations in distributed systems). Course topics include cloud computing, peer-to-peer systems, distributed storage, fault-tolerant consensus, etc. We will first learn the techniques in their original contexts and further investigate how various techniques are adapted and evolved for blockchain and consensus systems.
The instructor hopes that students will be able to explain fundamental concepts and challenges in distributed systems, and understand how various consensus systems “circumvent” these challenges. Students are expected to take a deep dive into various real-world systems and identify flaws and limitations in their design. Students should be able to take informed sides in all the major technological debates within the domain of consensus systems. For students who have taken ECON 3382, they will continue working on the same or pivoted project (that is along the same direction). For other students, they will work on projects on a smaller scale.
For assignments, CSCI 3359 will have two tracks. One for students who are interested in a software engineering career, and the other for students interested in more foundational topics. For the programming track, students are expected to learn Go on their own. Limited support and guidance from the TAs or instructors will be provided. Students are expected to build, test, and evaluate various systems and algorithms in a distributed fashion. Machine problems for this track require students to explore and implement building blocks of consensus systems and/or blockchain systems. For the foundational track, students will do some lightweight programming using either Go or Python. Majority of the assignments will be studying algorithmic problem sets and/or system designs, which involve using your math and logic skills to prove or disprove certain claims. The assignments allow students to gain insights on real-world blockchain systems.
After taking ECON 3382, students should have enough prerequisite knowledge. Additional background in Algorithms and Computer Networks would help but is not required. If you have any questions about prerequisites, please contact Prof. Lewis Tseng.
Spring 2023: CSCI 3359: Study Questions
These questions are answered in two ways. The first is a dinner conversation. It requires the accurate use of analogies and simple words. This is important for participating in discussions in broad, casual settings. The second is with a blackboard. We will use math and logic rigorously to be precise under more specific conditions. This skill set allows one to be critical of white papers. Understanding and translating this complexity to everyday vernacular is important and will be crucial for doing well in this course. Translation: major parts of the foundational track of this course involve graded mathematics and programming.
What is a Distributed System?
How is it different from our personal computer? Why do we need one? What are some technical challenges?
What is a model?
How do we mathematically define a model? Define a problem? What are some properties that we care about? Why is a model useful? How far is a model from a real-world setting?
Fault models and Failures
What is a fault? Why should we care? How do we define a fault model? What are some real-world examples and impacts of failures?
Cloud Computing vs Peer-to-Peer Computing
What is cloud computing? What is peer-to-peer computing? How is it useful? What are some technical challenges? What are some classical systems? What are the benefits/trade-offs?
Consensus
What is consensus? Why do we care? What are some applications? What are technical challenges? What is impossible?
Permissioned vs Permissionless Systems
What is a permissioned system? What is a permissionless system? Why do we care?
Consensus: Paxos
What is Paxos? Why do we care? What are some applications? What are technical challenges?
Consensus: Randomized Consensus
What is randomized consensus? How is it different from Paxos? How is it different from PoW? Is it practical?
Consensus: Byzantine consensus
What is Byzantine consensus? Why do we care? What are some applications? What are technical challenges? How is it different from PoW?
Consensus: BFT
What is BFT? Why do we care? What are some applications? What are technical challenges? How is it different from PoW? We will cover PBFT and recent developments of DAG-based BFT.
Replication
What is replication? Why do we care? What is a distributed replicated system? What are different forms of storage systems? Why is distributed storage a foundational part in blockchain and consensus systems?
Consistency
What is a consistency property/model? Why do we care? What are some impossibility results? How does a consistency model affect our life? How is it related to blockchain and consensus systems? What is the tradeoff between consistency and performance?
Partition & Transaction in the context of Distributed Storage
What is partitioning/sharding? Why is it useful? What is a transaction in the context of distributed storage/database? What are some limitations? How are they related to blockchain and consensus systems?