FINM 31400

Introduction to Blockchain and Smart Contracts

Summer Quarter
Instructor: Mark Shacklette

This course is a comprehensive technical introduction to relevant topics in the wider ecosystem surrounding blockchain and smart contracts. Our technological focus will include substantive topics in the fundamental problems that blockchains such as Bitcoin and Ethereum are attempting to solve (and are generating), and will focus on implementation details including algorithms, cryptography, security and trust, peer-to-peer networking, distributed ledgers, double spending, consensus algorithms, decentralized applications, smart contracts, and supporting technologies.  With that said, this is not a course in economics or monetary theory, trading cryptocurrencies, nor is it a course on regulatory or legal issues surrounding blockchain and smart contracts, although we will touch on many of these topics throughout the course.  We will also cover broader applications of blockchain+smart contract technology beyond cryptocurrencies and ICOs and NFTs including use cases from finance, voting, real estate, medicine, digital arts, and NFTs (music, art).

Students will spend the first half of the class working individually in laboratories building their own blockchain using actual algorithms leveraged in Bitcoin and Ethereum. Students may work in whatever languages they know best and make the most sense in context.  These may include Java/javascript, C++, python, ruby, C#, rust, go, and others.  The laboratories will be offered each week to reinforce a fundamental understanding of the core topics as the course advances.

In the latter half of the class, students will form teams and each team will deliver a final project targeting a specific blockchain use case using smart contracts of the team's choice (teams will be given options) running on an Ethereum testnet (such as Sepolia, etc.) or private blockchain (such as ganache, etc.).