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.
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.
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], 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, inoltre tutti i precedenti compiti di laboratorio assegnati negli anni precedenti saranno resi disponibili.