Negli ultimi dieci anni Bitcoin ed Ethereum sono diventati sistemi da decine (se non centinaia) di miliardi di dollari. Inoltre il potenziale dei cosiddetti decentralized ledgers (blockchain) ha attratto l’interesse di ricercatori e sviluppatori in ambiti che spaziano dalla finanza al voto elettronico, passando per corporate governance e online-gaming. Obiettivo del corso è studiare i concetti fondamentali alla base di tali sistemi: append-only ledgers, consenso decentralizzato, smart contracts e zero-knowledge proof systems. Gli studenti acquisiranno familiarità con il sistema Bitcoin attraverso un approccio concreto che prevede, tra le altre cose, l’approfondimento della programmazione legata a Bitcoin e, soprattutto, ad Ethereum. Infine, una parte del corso ospiterà interventi di esperti che lavorano in aziende legate direttamente o indirettamente al mondo delle criptovalute.
Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi.
Le lezioni sono tenute in aula con l'ausilio di slide. Le slide non sostituiscono i testi di riferimento, ma, oltre che agevolare la comprensione della lezione, forniscono un dettaglio puntuale sul programma svolto.
Qualora l'insegnamento venisse impartito in modalità mista o a distanza potranno essere introdotte le necessarie variazioni rispetto a quanto dichiarato in precedenza, al fine di rispettare il programma previsto e riportato nel syllabus.
1. Introduzione e breve panoramica dei contenuti del corso.
2. Introduzione alla crittografia e alle cryptocurrencies.
Firme digitali. Breve introduzione alle firme digitali. Caso Concreto Firme DSA. Commitment schemes e loro proprietà. Hash functions crittografiche e loro proprietà. Blockchain e Merkle Trees. Cryptocurrencies elementari e perché non funzionano.
Materiale: [1] Capitolo 1
3. Il protocollo di Bitcoin
Il problema del consenso. Come Bitcoin realizza consenso. Incentivi e Proof of work. La meccanica di Bitcoin. Transazioni. Primissimi dettagli su bitcoin scripts. Semplici applicazioni e limiti. La rete Bitcoin.
Materiale: [1] Capitoli 2, 3
4. Bitcoin applications, security e mining
Come “conservare” bitcoin. Wallets, hot e cold wallets. Chiavi distribuite. Secret Sharing. Introduzione a threshold cryptography. Schemi di firma distribuiti. Mining. Mining hardware. Il costo di produrre bitcoin e il conseguente impatto energetico.
Materiale: [1] Capitoli 4, 5
5. Privacy e Anonimato e nelle cryptocurrencies.
Il problema dell’anonimato in Bitcoin. Come de-anonimizzare Bitcoin. Contromisure. Criptovalute e anonimato. Zero Knowledge proofs. Zerocoin e Zerocash. Vantaggi e svantaggi.
Materiale: [1] capitolo 6, e per approfondire [5] e [6].
6. Ethereum e Smart contract applications & security
Materiale: [1] Capitolo 10 e per approfondire [3]
7. Approcci alternativi a mining e consenso
Proof of Stake. Proof of stake vs proof of work. Problemi inerenti a proof of stake: grinding attack, nothing at stake problem. Ulteriori prerequisiti crittografici. Pseudorandom Functions e Verifiable Random Functions. La soluzione di Algorand.
[1] Capitolo 8 e per approfondire [7]
8. Laboratorio
Ethereum, Smart Contracts, Ethereum Virtual Machine (EVM) e introduzione alla scrittura di Smart Contracts usando il linguaggio Solidity.
Materiale: [3], [8]
Testo principale
[1] Arvind Narayanan, Joseph Bonneau, Edward Felten, Andrew Miller, Steven Goldfeder
Bitcoin and Cryptocurrency Technologies: A Comprehensive Introduction
(Author’s preprint edition disponibile gratuitamente al sito: https://bitcoinbook.cs.princeton.edu/)
Altre letture consigliate:
[2] Bitcoin Developer Reference https://bitcoin.org/en/developer-reference
[3] Ethereum “white” paper: https://github.com/ethereum/wiki/wiki/White-Paper
[4] Ethereum “yellow” paper: http://gavwood.com/paper.pdf
[5] Zerocoin: Anonymous Distributed e-cash from Bitcoin.
[6] Zerocash: Decentralized Anonymous Payments from Bitcoin
[7] Algorand: Scaling Byzantine Agreements for Cryptocurrencies
[8] Guida "Solidity": https://solidity.readthedocs.io
Argomenti | Riferimenti testi | |
---|---|---|
1 | Introduzione alla Crittografia e alle Cryptocurrencies | Cap. 1 di [1] |
2 | Come Bitcoin realizza decentralizzazione | Cap 2 di [1] |
3 | Meccanica di Bitcoin | Cap. 3 di [1], e pre approfondire [2] |
4 | Come conservare e gestire Bitcoins. | Cap. 4 di [1] |
5 | Privacy e Anonimato e nelle cryptocurrencies. | Cap. 6 di [1] capitolo 6, e per approfondire [5] e [6]. |
6 | Altri aspetti di Bitcoin: comunità, politica, controversie ed estensioni | Cap. 7 e 9 di [1] |
7 | Ethereum e Smart contract applications & security | Cap 10 di [1], slides e per approfondire [3] e [4] |
8 | Approcci alternativi a mining e consenso | Cap. 8, slides e per approfondire [7] |
9 | Laboratorio su Ethereum. Smart Contracts, Ethereum Virtual Machine (EVM) e introduzione alla scrittura di Smart Contracts usando il linguaggio Solidity. | [8] |
L'esame consiste di una prova di laboratorio seguita da un esame orale.
Prove in itinere: è prevista la possibilità da fare 1 o più prove in itinere sui contenuti teorici del corso.
La verifica dell’apprendimento potrà essere effettuata anche per via telematica, qualora le condizioni lo dovessero richiedere.
Illustrare il funzionamento di hash pointers e di alcune strutture dati ad essi correlati (qauli blockchain o Merkle Tree.)
Esercizi sugli strumenti e le primitive crittografiche introdotte (es dimostrare che un dato protocollo non è zero knowledge)
Esempi di smart contract in Solidity saranno visti a lezione insieme a tutti i precedenti compiti di laboratorio.