Principles of Cryptocurrency Design
CdL Magistrale Informatica - Univ. Roma Tor Vergata
AA 2023/2024
Orario lezioni
Martedì: 11:00 - 13:00 e Giovedì: 14:00 - 16:00
SoGeNe, Aula 13
-
5 marzo 2024: 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.
-
12 marzo 2024: Il protocollo di Dolev-Strong per il problema
Byzantine Broadcast. ([1]: Cap. 3, si veda anche [DL83])
Appunti ed esercizi.
-
14 marzo 2024: 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.
-
19 marzo 2024: 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.
-
21 marzo 2024: Introduzione alle funzioni hash crittografiche ed esempi di applicazioni.
Byzantine Broadcast vs State Machine Replication. ([2]: Cap 1, [1]: Cap.
6)
Appunti ed esercizi.
-
28 marzo 2024: Il modello asincrono e il teorema FLP di
impossibilità ([1]: Cap. 12, si veda anche [FLP85])
Appunti ed esercizi.
-
4 aprile 2024: Dimostrazione del teorema FLP ([1]: Cap. 12, si veda
anche [FLP85])
Appunti ed esercizi.
-
9 aprile 2024: Esercitazione.
-
11 aprile 2024: 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.
-
16 aprile 2024: Blockchain e proof-of-work: dettagli
implementativi ed esempi in python. ([2]: Cap. 2)
Appunti ed esercizi.
Codice.
-
18 aprile 2024: 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.
-
23 aprile 2024: Le transazioni: dettagli implementativi ed
esempi in python. ([2]: Cap 3, si veda anche [S19]: Cap. 5)
Appunti ed esercizi.
Codice.
-
30 aprile 2024: Il linguaggio di scripting in Bitcoin.
Locking e unlocking script. I locking script standard di base:
p2pk, p2pkh, p2sh. ([2]: Cap. 3,
si veda anche [AH23]: Cap. 7)
-
2 maggio 2024: Gli script: dettagli implementativi ed
esempi in python. ([2]: Cap 3, si veda anche [S19]: Cap. 6)
Appunti ed esercizi.
Codice.
-
7 maggio 2024: Cenni a gruppi, campi finiti e curve ellittiche. Chiavi
pubbliche su curve ellittiche e indirizzi Bitcoin. Wallet. ([2]: Cap 4, si vedano
anche [AH23]: Cap. 4 e 5 e [S19]: Cap. 2)
Appunti ed esercizi.
-
9 maggio 2024: Gli indirizzi Bitcoin: chiavi pubbliche, hash e codifica
in base58. Il formato WIF per le chiavi private. Esempi in
python. ([2]: Cap 4, si veda anche [S19]: Cap. 4)
Appunti ed esercizi.
Codice.
-
14 maggio 2024: Lo schema di firma digitale ECDSA. Malleabilità
delle transazioni e il soft-fork SegWit ([B09]: Sec. 4 e BIP 141)
-
16 maggio 2024: Esercitazione.
-
21 maggio 2024: La scalabità di Bitcoin. Applicazioni Layer-2:
Introduzione ai payment channels e alla Lightning Network ([3]:
Cap. 7)
-
28 maggio 2024:
Avanzamento di stato di un payment channel. Routing dei pagamenti
in una rete di payment channels: gli Hash Time-Locked Contracts
([3]: Cap. 8, si vedano anche [PD16] e BOLT 3)
-
30 maggio 2024:
La rete P2P di Bitcoin. Lightning Network: la rete P2P e la rete dei canali.
Onion routing sulla rete dei canali.
([3]: Cap. 10 e 11, si veda anche BOLT 4)
-
4 giugno 2024:
Il problema della ricerca dei cammini nella rete dei payment channels.
Cenni a sicurezza e privacy della Lightning network.
([3]: Cap. 12 e 16)
-
6 giugno 2024:
[Guest lecture by Taki
Abedesselam] Altri meccanismi di consenso distributito per blockchain:
Ethereum e la Proof-of-Stake. ([1]: Cap. 18)
-
11 giugno 2024: Esercitazione.
[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, nella
realizzazione di un progetto pratico e in una prova orale sugli argomenti del
corso.
Letture proposte.
Ricevimento studenti
Durante il periodo delle lezioni (Marzo 2024 - Giugno 2024):
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)