Bitcoin and Blockchain Technology, February-April 2021

Department of Law, University of Milano-Bicocca

e-learning: https://elearning.unimib.it/course/view.php?id=31997

If you have an e-mail @campus.unimib.it please join the 202102-bicocca channel in the Slack BBT workspace using your first and last name (no nicknames); a profile picture would be appreciated, but is not mandatory. Updates and conversations about the course will be posted in the Slack channel.

The course is for the students of University of Milano-Bicocca only; anyone else, please consider https://dgi.io/workshop.

Learning objectives

The course is an introduction to bitcoin and the associated blockchain technology.

Starting from a computationally focused approach to elliptic curves over finite fields and presenting the discrete logarithm problem as the cornerstone of public-key cryptography, bitcoin is introduced as ingenious breakthrough innovation.

Its game theory, computer science (distributed systems, distributed consensus), and monetary theory elements are examined in the attempt to properly convey the interdisciplinarity of the topic and appreciate its relevance.

Technical and programming elements about digital signatures, blockchain, Merkle tree, addresses, transactions, and timestamping are also provided to assess features and limits of the Bitcoin protocol.

Prerequisites

There are no strict prerequisites, even if a computer science mindset and some familiarity with algebra and finance might help to appreciate the course. While a rigorous formal approach is almost impossible in a course touching on so many and so different knowledge areas, intellectual curiosity is stimulated about the interplay between maths, cryptography, economic incentives, technology, monetary theory, regulatory issues, and politics.

Contents

  • Cash, Electronic Money, Central Bank Money, eCash
  • Internet Money
  • Bitcoin Transactions
  • About Money
  • Private Money and the Centralization Dilemma
  • The Double Spending Problem
  • Bitcoin as Digital Gold
  • Bitcoin as Investment Asset
  • Bitcoin Financial Services
  • Discrete Logarithm Problem on Finite Cyclic Groups
  • Modular Arithmetic
  • Finite Fields
  • Elliptic Curves Over Real Numbers
  • DLP on Elliptic Curves Over Finite Fields
  • Hash Functions
  • Partial Hash Inversion
  • Hash Pointer Data Structures: Blockchain and Merkle Tree
  • Design of A Simplified Digital Currency
  • Distributed Consensus
  • Mining
  • P2P Network
  • Protocol Governance
  • Elliptic curve digital signature algorithm
  • Elliptic curve Schnorr signature algorithm: Mu(lti)Sig(nature), threshold signature, batch verification
  • Addresses and WIFs
  • Hierarchical deterministic wallets: BIP32, BIP43, BIP44
  • Mnemonic phrase: BIP39 and Electrum
  • TxIns, TxOs, UTxO, nLockTime
  • Bitcoin script language
  • Transactions
  • Blocks
  • Wallets and Bitcoin Core
  • Testnet, regtest, and wallet workshop
  • Money and innovation: monetary and token engineering
  • Hayek money and dual asset ledger money
  • Blockchain beyond bitcoin
  • Finance and blockchain
  • Timestamping, notarization, and anchoring
  • Smart contracts
  • Distributed ledger technology

Teaching method

  • Slide based lessons with associated bibliography
  • Python 3 programming assignments and technology assignments
  • Workshop labs on Bitcoin Core, Electrum, and OpenTimestamps

Teaching language

Italian lessons, English slides.

Exam

To pass the exam each student must solve all the assignments for every lesson. Please send the assignments to the e-mail that will be indicated with subject BBT202102-BICOCCA #1 for the first lesson, BBT202102-BICOCCA #2 for the second lesson, etc.

Lessons’ calendar and material

Assistant lecturer: Paolo Mazzocchi.

  1. 2021-02-22 Monday 11:30-13:30
    Bitcoin as Digital Gold
    slides
  2. 2021-02-24 Wednesday 11:30-13:30
    Bitcoin as Digital Gold
    slides
  3. 2021-02-25 Thursday 09:30-11:30
    Bitcoin as Digital Gold (Q&A)
    slides
  4. 2021-03-01 Monday 11:30-13:30
    Hash Functions
    slides
    Discrete Logarithm Problem on (Finite Fields and) Elliptic Curves
    slides
  5. 2021-03-03 Wednesday 11:30-13:30
    Discrete Logarithm Problem on (Finite Fields and) Elliptic Curves
    slides
  6. 2021-03-04 Thursday 09:30-11:30
    Elliptic Curve Digital Signature Algorithm
    slides
    Extra: Schnorr Signature Algorithm (BIP340), Diffie-Hellman, Encryption Using AES
    slides
  7. 2021-03-08 Monday 11:30-13:30
    Python workshop on Hash Functions and Elliptic Curve Digital Signature Algorithm
    Blockchain, Mining, and Distributed Consensus
    slides
  8. 2021-03-10 Wednesday 11:30-13:30
    Blockchain, Mining, and Distributed Consensus
    slides
  9. 2021-03-11 Thursday 09:30-11:30
    Blockchain, Mining, and Distributed Consensus (Q&A)
    slides
  10. 2021-03-18 Thursday 09:30-11:30
    Addresses, WIFs, and Bitcoin Message Signing
    slides
  11. 2021-03-22 Monday 11:30-13:30
    Transactions and Scripts
    slides
  12. 2021-03-24 Wednesday 11:30-13:30
    Timestamping and the OpenTimestamps Protocol
    with Paolo Mazzocchi
    slides
  13. 2021-03-25 Thursday 09:30-11:30
    Beyond Bitcoin: Altcoins, Tokens, Smart Contract, and Blockchain Applications
    slides
  14. 2021-03-29 Monday 11:30-13:30
    Beyond Bitcoin: Altcoins, Tokens, Smart Contract, and Blockchain Applications
    slides
  15. 2021-03-31 Wednesday 11:30-13:30
    Digital Signature and Digital Identity: From RSA to eIDAS
    with Emanuele Cisbani
    slides
  16. 2021-04-07 Wednesday 11:30-13:30
    New trends in FinTech: Blockchain and AI
    with Filippo Annunziata
    slides
  17. 2021-04-08 Thursday 09:30-11:30
    Regulation on Markets in Cryptoassets (MiCA)
    with Andrea Conso
    slides
  18. 2021-04-12 Monday 11:30-13:30
    The Tax Aspects of Crypto-Assets
    with Francesco Avella
    slides
  19. 2021-04-15 Thursday 09:30-11:30
    Le misure di prevenzione dei reati finanziari in ambito crypto-asset
    with Vito Barbera
    slides
  20. 2021-04-19 Monday 11:30-13:30
    Wallets and Deterministic Key Chains
    slides
  21. 2021-04-21 Wednesday 11:30-13:30
    CBDC e Euro digitale
    with Francesca Mattassoglio
    slides
  22. 2021-04-22 Thursday 09:30-11:30
    The Cryptocurrency Frontier in Monetary Engineering
    Bitcoin: oro digitale per nuovi standard monetari
    Hayek Money and Dual Asset Ledger
    slides
    Hayek Money: The Cryptocurrency Price Stability Solution

In the last lesson anonymous course evaluation forms will be collected

Python library

https://btclib.org
https://github.com/btclib-org/btclib

Python scripts, Excel spreadsheets, and regtest lab material

https://github.com/btclib-org/bbt

Introductory reading

Technology references

Cryptography references

Monetary theory references