BLOCKCHAIN E CRYPTOCURRENCIES

Anno accademico 2021/2022 - 1° anno - Curriculum Sistemi di Rete e Sicurezza
Docenti: Dario CATALANO e Mario DI RAIMONDO
Crediti: 6
Organizzazione didattica: 150 ore d'impegno totale, 102 di studio individuale, 24 di lezione frontale, 24 di esercitazione
Semestre:

Obiettivi formativi

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.

  1. Conoscenza e capacità di comprensione (knowledge and understanding): l'obiettivo del corso è quello di far acquisire conoscenze che consentano allo studente di comprendere le idee ed i principi che stanno alla base di Bitcoin e di altre criptovalute; in particolare lo studente acquisirà familiarità anche con i principali strumenti crittografici sottostanti le moderne crittovalute.
  2. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): lo studente acquisirà le competenze necessarie per utilizzare attivamente sistemi basati su blockchain come Bitcoin ed Ethereum.
  3. Autonomia di giudizio (making judgements): Attraverso lo studio di attacchi e di esempi concreti hands-on lo studente acquisirà la capacità di comprendere l’effettiva robustezza delle soluzioni proposte e di utilizzare autonomamente soluzioni in grado di garantire elevati livelli di sicurezza ed affidabilità.
  4. Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio tecnico nell'ambito generale delle moderne crittovalute.
  5. Capacità di apprendimento (learning skills): il corso si propone, come obiettivo, di fornire allo studente le necessarie metodologie teoriche e pratiche per poter affrontare e risolvere autonomamente nuove problematiche che dovessero richiedere l'utilizzo di strumenti quali blockchain, proof of work e smart contracts.

Modalità di svolgimento dell'insegnamento

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.


Prerequisiti richiesti

Il corso presuppone familiarità con la programmazione. Un minimo di background in crittografia è fortemente consigliato.


Frequenza lezioni

Fortemente consigliata.


Contenuti del corso

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]


Testi di riferimento

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



Programmazione del corso

 ArgomentiRiferimenti testi
1Introduzione alla Crittografia e alle CryptocurrenciesCap. 1 di [1] 
2Come Bitcoin realizza decentralizzazioneCap 2 di [1] 
3Meccanica di BitcoinCap. 3 di [1], e pre approfondire [2] 
4Come conservare e gestire Bitcoins.Cap. 4 di [1] 
5Privacy e Anonimato e nelle cryptocurrencies. Cap. 6 di [1] capitolo 6, e per approfondire [5] e [6]. 
6Altri aspetti di Bitcoin: comunità, politica, controversie ed estensioniCap. 7 e 9 di [1] 
7Ethereum e Smart contract applications & security Cap 10 di [1], slides e per approfondire [3] e [4] 
8Approcci alternativi a mining e consenso Cap. 8, slides e per approfondire [7] 
9Laboratorio su Ethereum. Smart Contracts, Ethereum Virtual Machine (EVM) e introduzione alla scrittura di Smart Contracts usando il linguaggio Solidity.[8] 

Verifica dell'apprendimento

Modalità di verifica dell'apprendimento

L'esame consiste di una prova di laboratorio seguita da un esame orale.

Prove in itinere: E' 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.


Esempi di domande e/o esercizi frequenti

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)