Principles of Cryptocurrency Design
CdL Magistrale Informatica - Univ. Roma Tor Vergata
AA 2024/2025
Orario lezioni
Lunedì: 14:00 - 16:00, SoGeNe, Aula 13
Giovedì: 14:00 - 16:00, SoGeNe, Aula 18
-
3 marzo 2025: Introduzione al corso e descrizione del programma di
massima. Introduzione al problema Byzantine Broadcast nel modello
sincrono con PKI setup. ([1]: Cap. 3)
Appunti ed esercizi.
-
6 marzo 2025: Il protocollo di Dolev-Strong per il problema
Byzantine Broadcast. ([1]: Cap. 3, si veda anche [DL83])
Appunti ed esercizi.
-
10 marzo 2025: Sistemi di firme digitali, richiami sul sistema RSA.
Impossibilità del problema Byzantine Broadcast senza PKI setup in
presenza di n/3 o più nodi corrotti. ([1]: Cap. 2 e 4, si veda
anche [FLM86])
Appunti ed esercizi.
-
13 marzo 2025: Analisi di un protocollo probabilistico per il problema
Byzantine Broadcast senza PKI setup che funziona con alta
probabilità in presenza di meno di n/3 nodi corrotti. ([1]: Cap.
5)
Appunti ed esercizi.
-
17 marzo 2025: Byzantine Broadcast vs State Machine Replication.
([1]: Cap. 6)
Appunti ed esercizi.
-
20 marzo 2025:
Il modello asincrono e introduzione al teorema FLP di impossibilità
([1]: Cap. 12, si veda anche [FLP85])
Appunti ed esercizi.
-
27 marzo 2025: Dimostrazione del teorema FLP ([1]: Cap. 12, si veda
anche [FLP85])
Appunti ed esercizi.
-
31 marzo 2025: Esercitazione.
-
3 aprile 2025: L'ambiente permissionless e introduzione al
protocollo di consenso in Bitcoin: proof-of-work per prevenire attacchi
Sybil e consenso sulla longest PoW chain. ([2]: Cap. 2, si vedano
anche [N08] e l'iniziale scambio di mail.)
Appunti ed esercizi.
-
7 aprile 2025: Blockchain e proof-of-work: dettagli
implementativi ed esempi in python. ([2]: Cap. 2)
Appunti ed esercizi.
Codice.
-
10 aprile 2025: Le transazioni: input, output, script. La
coinbase transaction e la generazione di nuovi coin. ([2]: Cap. 3,
si veda anche [AH23]: Cap. 6)
Appunti ed esercizi.
-
14 aprile 2025: Le transazioni: dettagli implementativi ed
esempi in python. ([2]: Cap 3, si veda anche [S19]: Cap. 5)
Appunti ed esercizi.
Codice.
-
17 aprile 2025: Il linguaggio di scripting in Bitcoin.
Locking e unlocking script. I locking script standard di base:
p2pk, p2pkh, p2sh. Inserire dati nella blockchain con
OP_RETURN ([2]: Cap. 3, si veda anche [AH23]: Cap. 7)
Appunti ed esercizi.
-
24 aprile 2025: Gli script: dettagli implementativi ed
esempi in python. ([2]: Cap 3, si veda anche [S19]: Cap. 6)
Appunti ed esercizi.
Codice.
-
28 aprile 2025: Cenni a gruppi, campi finiti e curve ellittiche. Chiavi
pubbliche su curve ellittiche e indirizzi Bitcoin. ([2]: Cap 4, si vedano anche
[AH23]: Cap. 4 e 5 e [S19]: Cap. 2)
Appunti ed esercizi.
-
5 maggio 2025: Gli indirizzi Bitcoin: chiavi pubbliche, hash e codifica
in base58. Esempi in python. ([2]: Cap 4, si veda anche [S19]: Cap.
4)
Appunti ed esercizi.
Codice.
-
8 maggio 2025: Esercitazione.
-
15 maggio 2025: Lo schema di firma digitale ECDSA. Malleabilità
delle transazioni e il soft-fork SegWit ([B09]: Sec. 4 e BIP 141)
Appunti ed esercizi.
[1]
Foundations of Distributed Consensus and Blockchains
Elain Shi
Book manuscript 2020, disponibile qui: https://distributedconsensus.net/
[2]: Bitcoin and Cryptocurrency Technologies
Arvind Narayanan, Joseph Bonneau, Edward W. Felten, Andrew Miller, and Steven Goldfeder
Princeton University Press, 2016

(Una versione preliminare di questo libro e altro materiale collegato è liberamente scaricabili qui:
http://bitcoinbook.cs.princeton.edu/)
[3]: Mastering the Lightning Network
Andrea M. Antonopoulos, Olaoluwa Osuntokun, and Rene Pickhardt
O'Reilly, 2021

(I capitoli di questo libro sono liberamente scaricabili qui:
https://github.com/lnbook/lnbook)
Altri riferimenti
[DL83]: Danny Dolev and H. Raymond Strong. Authenticated algorithms for
Byzantine agreement. SIAM Journal on Computing, 12(4):656–666, 1983.
[FLP85]: Michael J. Fisher, Nancy A. Lynch, and Michael S. Paterson.
Impossibility of distributed consensus with one faulty process. Journal of
the ACM (JACM), 32(2):374-382, 1985.
[FLM86] Michael J. Fischer, Nancy A. Lynch, and Michael Merritt. Easy
impossibility proofs for distributed consensus problems. Distributed
Computing, 1:26–39, 1986.
[N08] Satoshi Nakamoto. Bitcoin: A Peer-to-Peer Electronic Cash System, 2008.
https://bitcoin.org/bitcoin.pdf
[AH23]: Mastering Bitcoin (3rd edition)
Andrea M. Antonopoulos, David A. Harding
O'Reilly, 2023

(I capitoli di questo libro sono liberamente consultabili qui:
https://github.com/bitcoinbook/bitcoinbook)
[S19]: Programming Bitcoin
Jimmy Song
O'Reilly, 2019

(I capitoli di questo libro sono liberamente consultabili qui:
https://github.com/jimmysong/programmingbitcoin)
[B09] Daniel L.R. Brown. Standards for efficient cryptography, SEC 1:
elliptic curve cryptography. Released Standard Version 1 (2009).
Disponibile qui.
[PD16] Joseph Poon and Thaddeus Dryja. The Bitcoin Lightning Network:
Scalable Off-Chain Instant Payments. (2016)
Disponibile qui.
Modalità d'esame
L'esame consiste nella presentazione di un lavoro scientifico oppure nella
realizzazione di un progetto pratico, e in una prova orale sugli argomenti del
corso.
Ricevimento studenti
Durante il periodo delle lezioni (Marzo 2025 - Giugno 2025):
Giovedì 16:00 - 18:00 oppure su appuntamento.
Al di fuori del periodo delle lezioni:
Su appuntamento.
Francesco Pasquale
Università di Roma "Tor Vergata"
Via della Ricerca Scientifica, 1 - 00133 Roma - Italy
Edificio: Sogene - Primo Piano - Corridoio B1 - Stanza 1212
Tel.: +39 06 7259 4670
pasquale@mat.uniroma2.it
(OpenPGP: 0xBF979C2A)