Bitcoin and Blockchain Technology, Spring 2019

Department of Statistics and Quantitative Methods, UniversitĂ  Milano-Bicocca

Course page:

Please subscribe the course mailing list sending an e-email to [email protected]

Learning objectives

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

Starting from a computationally focused approach to elliptic curves and presenting the discrete logarithm problem as cornerstone of public-key cryptography, bitcoin is introduced as an interesting application of number theory and the algebraic structure of elliptic curves over finite fields.

The game theory, computer science (distributed systems, distributed consensus), and monetary theory elements of bitcoin are then examined in the attempt to properly convey the interdisciplinarity of the topic.


There are no strict prerequisites, even if a computer science mindset and previous familiarity with number theory, algebra, and finance might help to appreciate the course. Curiosity towards the cultural relevance of the interplay between theory, practice, economic incentives, technology, monetary theory, and politics might result more relevant than a rigorous formal approach on so many and so different knowledge areas.


  • 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:

Teaching language

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


  1. Friday 2019-02-22 09:30-11:30 Edificio U6 aula 21
    slides (ENG):
    video (2017 ITA):
  2. Friday 2019-03-01 09:30-11:30 Edificio U6 aula 20
    Blockchain, Mining, and Distributed Consensus
    slides (ENG):
  3. Friday 2019-03-08 09:30-11:30
    and also
    Tuesday 2019-03-12 11:30-13:30 Edificio U6 aula 20
    Elliptic Curve Digital Signature Algorithm
    slides (ENG):
  4. Friday 2019-03-15 09:30-11:30 Edificio U6 aula 20
    Wallets: Key Encodings and Deterministic Sequences
    slides (ENG):
  5. Friday 2019-03-22 09:30-11:30 Edificio U6 aula 20
    Transactions and Blocks
    slides (ENG):
  6. Friday 2019-03-29 09:30-11:30 Edificio U6 aula 20
    Monetary (and Token) Engineering
    slides (ENG):
    video (2017 ITA):
  7. Friday 2019-04-05 09:30-11:30 Edificio U6 aula 20
    Beyond Bitcoin: Timestamping and DLT
    slides (ENG):
    video (2017 ITA):

Python library

Python scripts, Excel spreadsheets, and regtest lab material


Technical books


Monetary books

Bitcoin donation address 1FEz167JCVgBvhJBahpzmrsTNewhiwgWVG

Bitcoin donation address