Bitcoin and Blockchain Technology, Fall 2019

Department of Statistics and Quantitative Methods, University of Milano-Bicocca

Course page: https://elearning.unimib.it/course/info.php?id=25308

Please subscribe the course mailing list sending an e-mail to [email protected]; you are also invited to join the 201910-bicocca channel in the Slack BBT workspace.

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 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, and politics.

Contents

  • Hash functions, hash pointers, blockchain, Merkle tree
  • Modular arithmetic and algebra of sets
  • Elliptic curves over real numbers and a finite field 𝐹
  • Asymmetric cryptography on elliptic curves
  • Elliptic curve digital signature algorithm
  • Elliptic curve Schnorr signature algorithm: Mu(lti)Sig(nature), threshold signature, batch verification
  • Diffie-Hellman
  • Pedersen commitment
  • Confidential transactions
  • Design of a simplified digital currency
  • Distributed consensus
  • Mining
  • P2P network
  • Protocol governance
  • 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

At the end of the course students are invited to compile the course evaluation form: https://docs.google.com/document/d/1AEQTb99cVhqnVu7CxgVorP5PzB7RrSHH_ZK9Qvv2u3s/edit

Teaching language

Italian or English, the latter if foreign students are present.

Lessons’ calendar and material

Workshops are with Paolo Mazzocchi, assistant lecturer.

  1. Wednesday 2019-10-09 16:30-18:30 edificio U6 aula 33
    Bitcoin as Digital Gold
    slides: https://drive.google.com/open?id=1FpudunEQrBY8WLTSLzwThOoFxMKGTCho
  2. Wednesday 2019-10-16 16:30-18:30 edificio U6 aula 33
    Blockchain, Mining, and Distributed Consensus (part 1)
    slides: https://drive.google.com/open?id=1_rGy7wdI8iWx6w6LG_CGCmmLnAIFhncz
  3. Wednesday 2019-10-23 16:30-18:30 edificio U6 aula 33
    Blockchain, Mining, and Distributed Consensus (part 2)
    slides: https://drive.google.com/open?id=1_rGy7wdI8iWx6w6LG_CGCmmLnAIFhncz
  4. Wednesday 2019-10-30 16:30-18:30 edificio U6 aula 33
    Elliptic Curve Digital Signature Algorithm (part 1)
    slides: https://drive.google.com/open?id=1MZu_4zbI8khdYhbGJg9SwWkNA5x-Tb_W
  5. Wednesday 2019-11-06 16:30-18:30 edificio U6 aula 33
    Elliptic Curve Digital Signature Algorithm (part 2)
    slides: https://drive.google.com/open?id=1MZu_4zbI8khdYhbGJg9SwWkNA5x-Tb_W
  6. Wednesday 2019-11-13 16:30-18:30 edificio U6 aula 33
    Wallets: Key Encodings and Deterministic Key Sequences
    slides: https://drive.google.com/open?id=1zWuYqRip3TfgjjV2a0YL_C_KlJGc0o57
  7. Wednesday 2019-11-27 16:30-18:30 edificio U6 aula 33
    Transactions and Blocks (part 1)
    slides: https://drive.google.com/open?id=1xEcBCyN3yLN40A3Ny8k-2PQ-xKJw1RlA
  8. Wednesday 2019-12-04 16:30-18:30 edificio U6 aula 33
    Transactions and Blocks (part 2)
    slides: https://drive.google.com/open?id=1xEcBCyN3yLN40A3Ny8k-2PQ-xKJw1RlA
  9. Wednesday 2019-12-11 16:30-18:30 edificio U6 aula 33
    Beyond Bitcoin: Between Hype and Reality (part 1)
    slides: https://drive.google.com/open?id=12jGsSBY5sMwgRQwvjwlnG6J9xOxi0P0Z
  10. Friday 2019-12-13 12:30-14:30 edificio U6 aula 22
    [Catch-up lesson slot to be used only in case of previous cancelled lessons]
  11. Tuesday 2019-12-17 14:30-16:30 edificio U6 aula 20
    Beyond Bitcoin: Between Hype and Reality (part 2)
    slides: https://drive.google.com/open?id=12jGsSBY5sMwgRQwvjwlnG6J9xOxi0P0Z
  12. Wednesday 2019-12-18 16:30-18:30 edificio U6 aula 33
    The Frontier of Monetary Engineering
    slides: https://drive.google.com/open?id=1T2z4vfRvEv_wooerJI7FgD8IkxeTihlj
  13. Friday 2019-12-20 12:30-14:30 edificio U6 aula 22
    [Catch-up lesson slot to be used only in case of previous cancelled lessons]

Python library

http://github.com/dginst/btclib

Python scripts, Excel spreadsheets, and regtest lab material

https://github.com/fametrano/bbt

Introductory reading

  • Ferdinando M. Ametrano,
    “Bitcoin: oro digitale per nuovi standard monetari” (2018),
    http://bit.ly/2NQg9VJ

Technology references

Cryptography references

Monetary theory references


Bitcoin donation address 1FEz167JCVgBvhJBahpzmrsTNewhiwgWVG