2. Agenda
● Intro
● Come costruire una moneta digitale decentralizzata
○ Funzioni di Hash
○ Crittografia asimmetrica
○ Moneta Digitale
○ Proof of Work
○ Rete P2P
○ Incentivi
● Sviluppi e prospettive future
○ Da dove viene il valore? Rarità digitale
○ Prospettive/rischi
○ Smart Contract & Payment Channels
2
4. Un po’ di storia
Ottobre 2008: un anonimo partecipante ad una sconosciuta
mailing list “Cypherpunks”, che si fa chiamare Satoshi
Nakamoto, annuncia:
“Sto lavorando ad un nuovo sistema di denaro elettronico
completamente peer-to-peer, senza autorità centrali”
“I've been working on a new electronic cash system that's fully
peer-to-peer, with no trusted third party.”
The paper is available at:
http://www.bitcoin.org/bitcoin.pdf”
http://satoshi.nakamotoinstitute.org/emails/cryptography/1/
4
Il primo "Timestamp"
5. Crittografia asimmetrica
Nella crittografia asimmetrica, ad ogni attore coinvolto nella comunicazione è
associata una coppia di chiavi:
Chiave Pubblica: deve essere distribuita
● autentica la firma di un messaggio inviato da chi possiede la chiave privata abbinata
● cifra un messaggio garantendo che solo chi possiede la chiave privata abbinata possa decifrarlo
Chiave Privata: deve essere mantenuta segreta
● genera una firma per un messaggio
● decifra un messaggio cifrato con la corrispondente chiave pubblica
RSA, Diffie-Hellman, ECC
PGP, SSH, TLS
5
6. Moneta digitale - Catena di firme digitali
6
Una transazione è composta da:
● La chiave pubblica del
destinatario
● L’hash della transazione che
trasferì al mittente la proprietà
della moneta
● La firma del mittente
“We define an electronic coin as a chain of digital signatures” S.Nakamoto
7. Moneta digitale - Combine & Split
Si potrebbero trattare le monete individualmente, ma non è per niente comodo.
Decidiamo quindi che è possibile unire e dividere le monete a piacimento.
L’unico requisito è che la somma degli output non sia superiore alla somma degli input*
7
Funny facts:
Overflow bug e fork del 2010
8. La “Zecca” del Bitcoin...
...pubblica periodicamente un hash di tutte le transazioni con un timestamp.
il timestamp prova che una data transazione esisteva prima che il blocco fosse
pubblicato
8
9. La Zecca del Bitcoin
https://anders.com/blockchain/blockchain.html
Possiamo rendere la vita un po più difficile alla Zecca,
richiedendo un proof-of-work per ogni blocco.
9
“Once the CPU effort has been expended to make it satisfy the proof-of-work, the
block cannot be changed without redoing the work.” S.Nakamoto
10. Proof of Work
Qualcosa di potente ha costruito quella cosa, non c’è una scorciatoia per farlo.
10
Questo monumento aveva due scopi: quello meno importante era quello di tomba.
11. Proof of work
Sat Jun 10 00:14:52 2017 - HASH BLOCK - 0000000000000000010ab29ed1922854a826a4af3fcd1b9b294366187124092c
Sat Jun 10 00:26:52 2017 - HASH BLOCK - 0000000000000000015a50c20c5c3ecaa6a7cfb367453f1432aa8e96790d1789
Sat Jun 10 00:33:40 2017 - HASH BLOCK - 000000000000000000eeb5638f7515e0294adfd3ede15c7e446918406b062f7a
Sat Jun 10 00:33:52 2017 - HASH BLOCK - 00000000000000000154468386642e9f26bd3c0799a073c16ce51525b39a5128
Sat Jun 10 00:43:11 2017 - HASH BLOCK - 0000000000000000016efde93e8effc91e3a1bd53081026bd60d4064e0f87532
Sat Jun 10 00:47:51 2017 - HASH BLOCK - 000000000000000000cf2250e09dc981aa3f048ea6592b6e885757f239039552
Sat Jun 10 00:48:54 2017 - HASH BLOCK - 000000000000000000dba4257812f914b28bec522cf2ca9e03f8d303fdc2b3f2
Sat Jun 10 00:50:55 2017 - HASH BLOCK - 0000000000000000003e29202fb667b17b1845faf079758d1c595006f267dc89
Sat Jun 10 01:01:10 2017 - HASH BLOCK - 000000000000000000fb5a493ff021f32d920df04e66cd24a57dd763a05229e4
Sat Jun 10 01:19:14 2017 - HASH BLOCK - 0000000000000000019763174ecc1d54e2f2eda424ae954aefaa5ca9a9ff2940
Sat Jun 10 01:26:41 2017 - HASH BLOCK - 000000000000000000004e8136768bc03578b42c97d813477a61d1522272df0a
Sat Jun 10 01:39:38 2017 - HASH BLOCK - 000000000000000000abb96c1adf704c4345dcd43ae8f4e8117e7b9d77787167
Sat Jun 10 01:51:03 2017 - HASH BLOCK - 000000000000000000b72baed5f880856c7d52f8410252fa8fe1f2730bbcda65
Sat Jun 10 01:57:34 2017 - HASH BLOCK - 0000000000000000007dcfbbeffb078efe41bd2559668974ea8b5edc919f0dda
Sat Jun 10 02:00:19 2017 - HASH BLOCK - 00000000000000000003c3f2c241621daff3b60d6343877f8e3cc48c23b086e3
Sat Jun 10 02:18:12 2017 - HASH BLOCK - 0000000000000000019475cbb23d83d62a68b04b776f3ab2f14b53328a80487c
Sat Jun 10 02:27:43 2017 - HASH BLOCK - 0000000000000000000bb3e14be070376db118c68c5eb578b7b141617621f70d
Sat Jun 10 02:51:36 2017 - HASH BLOCK - 000000000000000000e20db69bc60df74708e3890fc1aba35b41e10ddb3a2d00
Sat Jun 10 02:57:53 2017 - HASH BLOCK - 0000000000000000017aaf7b4b264c7ab202a0f78e8147d3cc91431ebb821ef5
Sat Jun 10 03:06:46 2017 - HASH BLOCK - 00000000000000000152c06c4840d86ee6af03ae1107dd16a853d10f601bc60f
Sat Jun 10 03:07:37 2017 - HASH BLOCK - 0000000000000000019913b687f1c83684e616e71b27f66e59c8687db871552a
Sat Jun 10 03:24:54 2017 - HASH BLOCK - 00000000000000000092518a7a391604a3af52609c69df84c4230cbe4b8d3ded
Sat Jun 10 03:39:28 2017 - HASH BLOCK - 000000000000000000067a6f578054cca5a193768934dfa8cdda01e4dcde5d1d
Sat Jun 10 03:51:35 2017 - HASH BLOCK - 0000000000000000008132c5abc6d2193be226dd109353cca7e8a39b27638eb3
Sat Jun 10 03:54:30 2017 - HASH BLOCK - 00000000000000000081e7ef68029833ebf5db8c458948cc911cf6e2b8fa9a40
Sat Jun 10 03:55:17 2017 - HASH BLOCK - 00000000000000000073932b043cb7f19da464beddadee92858459cf11e361ea
Sat Jun 10 04:09:29 2017 - HASH BLOCK - 000000000000000000e493a736ffc53f54203e044f26c5a18ef0239c05c23495
Sat Jun 10 04:24:00 2017 - HASH BLOCK - 000000000000000000f450bd09e6e4f02008d6dfe195b19042e88ac73567cf9d
Sat Jun 10 04:39:50 2017 - HASH BLOCK - 000000000000000001232023472ea35f1a93e607ad2bd0529b562ceaf0be4c14
11
12. Rete p2p
1. Le nuove transazioni sono distribuite in broadcast a tutti i nodi
2. Ogni nodo raccoglie nuove transazioni in un blocco
3. Ogni nodo lavora per trovare un proof-of-work adeguato
4. Quando un nodo trova un proof-of-work, lo distribuisce in broadcast a tutti i
nodi
5. Un nodo accetta un nuovo blocco solo se tutte le transazioni al suo interno
sono valide e se esso soddisfa il proof-of-work
6. I nodi manifestano di accettare un blocco usando il suo hash come
previous-hash
12
13. Rete p2p
La rete è robusta in quanto semplice e non strutturata.
I nodi lavorano all’unisono con pochissima coordinazione
Non devono identificarsi, visto che nessun messaggio è diretto ad una destinazione
particolare, né è richiesto che la consegna sia affidabile (best effort)
I nodi possono entrare ed uscire dalla rete a piacimento, accettando la catena con maggior
proof-of-work come testimonianza di cosa è successo mentre erano via
Votano con la potenza computazionale, esprimendo di accettare un blocco lavorando su di
esso
Altre regole possono essere implementate con questo meccanismo di consenso
13
16. Termodinamica
C’è un limite fisico al minimo ammontare di energia necessario a cambiare lo stato
di un bit. ( Principio di Landauer )
C’è un limite pratico all’efficienza dei calcolatori
● architettura
● processo produttivo
16
17. Incentivi di funzionamento
● Coinbase
Per convenzione, la prima transazione di ogni blocco “crea” nuove monete in una quantità
prestabilita (50, che si dimezza ogni 4 anni)
Questo crea l’incentivo a supportare la rete, e fornisce un modo per distribuire le monete, visto che
non c’è nessuna autorità centrale che possa farlo.
● Commissioni di transazione
Se gli output di una transazione sono inferiore agli input, la differenza è aggiunta alla coinbase, e va
al nodo che ha trovato il proof-of-work per quel blocco
Questo crea l’incentivo a includere e verificare le transazioni.
17
18. Mining
Inizialmente ogni utente era anche un “minatore”. Quando l’incentivo economico è
diventato abbastanza forte, sono emerse ottimizzazioni:
CPU GPU FPGA ASIC
18
19. Valori scelti arbitrariamente
Funzione di hash: Doppio SHA256
Ricompensa del blocco: 50 bitcoin
Tempo medio tra i blocchi: 10 minuti
Periodo di dimezzamento della ricompensa: 210000 blocchi ~4 anni
Bitcoin totali: 21 milioni
Dimensione massima del blocco: 1 MB
Retarget della difficoltà: 2016 blocchi
Prezzo di 1 bitcoin: Definito dal mercato
19
22. 0 - Partiamo da una chiave privata ECDSA
18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725
1 - Calcoliamo la corrispondente chiave pubblica: (65 bytes, 1 byte 0x04, 32 bytes coordinata X, 32 bytes coordinata Y)
0450863AD64A87AE8A2FE83C1AF1A8403CB53F53E486D8511DAD8A04887E5B23522CD470243453A299FA9E77237716103ABC11A1DF38855ED6F2EE187E9C582BA6
2 - Facciamo un giro di hashing SHA-256 sulla chiave pubblica
600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408
3 - Facciamo un giro di hash RIPEMD-160 sull’output di SHA-256
010966776006953D5567439E5E39F86A0D273BEE
4 - Aggiungiamo il byte di versione all’inizio (0x00 per la Bitcoin Mainnet)
00010966776006953D5567439E5E39F86A0D273BEE
5 - Un altro giro di hash SHA-256
445C7A8007A93D8733188288BB320A8FE2DEBD2AE1B47F0F50BC10BAE845C094
6 - Ancora un altro giro di SHA-256
D61967F63C7DD183914A4AE452C9F6AD5D462CE3D277798075B107615C1A8A30
7 - Prendiamo i primi 4 bytes, questo è il checksum
D61967F6
8 - Aggiungiamo il checksum al risultato del punto 4.
00010966776006953D5567439E5E39F86A0D273BEED61967F6
9 - Convertiamo in base58
16UwLL9Risc3QfPqBUvKofHmBQ7wMtjvM
22
Per trovare una collisione è necessario in media 2107
volte il tempo che ci vuole a trovare un nuovo blocco.
23. Da dove viene il valore? - Rarità Digitale
“The initial price of bitcoin was caused by people who wanted to hold it, not people who wanted to spend it.
Furthermore, each subsequent step in Bitcoin’s advance must begin with more holders, not more spenders”
Daniel Krawisz
23
“The steady addition of a constant of amount of new coins is analogous to gold miners expending
resources to add gold to circulation. In our case, it is CPU time and electricity that is expended.” S.Nakamoto
25. “Luce alla fine del tunnel” o “treno in corsa nella tua
direzione”?
Il concetto di “digitale” spesso è associato all’idea di “veloce, dinamico, facilmente trasformabile”. Spesso
pensando ai supporti magnetici e ottici(HDD, SSD, DVD... ) ci si chiede quanto possano conservare
l’informazione in futuro, rispetto alla carta stampata, di cui abbiamo esperienza da parecchi secoli.
Il concetto di blockchain ci costringe però ad un cambio di paradigma: la differenza è che adesso ci sono
delle solide basi termodinamicamente garantite che permettono di implementare il denaro digitale in
modo indipendente dal sistema finanziario. E nessuno può predire con precisione che effetto può avere
sull’economia la presenza di un concorrente al sistema finanziario.
Difficoltà di previsione: Nel campo dell’intrattenimento l’emergere dello sharing p2p (es: torrent) ha prima
creato il fenomeno “panico e censura”, poi costretto l’industria multimediale a progredire, fino a che è
diventato più comodo per il grande pubblico pagare pochi euro al mese (es: Netflix,Spotify) anziché
cercare i torrent.
25
26. La blockchain del Bitcoin è un sistema di scala planetaria, termodinamicamente garantito, autosufficiente,
che garantisce immutabilità.
Di scala planetaria, perché per realizzarla è necessario sfruttare risorse su scala planetaria.
Termodinamicamente garantito perché è possibile calcolare il minimo ammontare di energia impiegato
per crearlo. La teoria dell’informazione ci garantisce che per “flippare” un certo quantitativo bit bisogna
spendere una determinata quantità di joules, e non ci sono scorciatoie.
Autosufficiente perché la sequenza di bytes che è prodotta come proof-of-work contiene l’informazione di
quanto lavoro è stato cumulativamente fatto.
“Our ancestors said "this is as good as
written in stone". Our grandchildren will say
"It is as good as written on the blockchain".
Because it is the new standard of
immutability and it is globally accessible.”
Andreas Antonopoulos
26
27. 1 - Sviluppi e prospettive future
● Applicazioni notarili
E’ possibile includere piccole quantità di dati arbitrari nelle transazioni. Pubblico un hash di una foto: posso
provare che la foto è stata scattata prima della generazione del blocco che include l’hash (“Tag Temporale”)
● Payment channels
Se una transazione bitcoin fosse un “pacchetto UDP” di denaro, un payment channel sarebbe una
connessione TCP Lightning network
● Smart Contracts
Applicazioni che muovono denaro in base a una programmazione prestabilita e immutabile.
Enti di beneficenza digitali, assicurazioni p2p
● Blockchain forensic
Ce la farà il creatore di WannaCry a spendere i suoi bitcoin senza lasciare nessuna traccia digitale che li
colleghi alla sua identità reale? Tainted coin analysis
27
28. 2 - Sviluppi e prospettive future
● Collaborative Transport
Dopo le auto che si guidano da sole, perchè non avere anche sistemi di noleggio e car sharing automatizzati tutelati
da assicurazioni smart contract?
● Energy Distributions
Vedi sopra, ma con scambio di energia prodotta da pannelli solari (TransActive Grid a New York)
● Data Storage
Un Database può essere ancorato su una blockchain
● Digitalization of documents (Es. Amministrazione Pubblica)
Carta stampata addio, benvenute firme digitali e autenticazione tramite “Proof of Identity”
● Luxury, Medical and Retail good Authentication
Quale metodo migliore di una catena di controllo qualità per gestire beni soggetti a frode?
28
29. Payment Channels - Pagamenti in “streaming”
Preparando delle transazioni senza inoltrare, ed aggiornandole successivamente
(invalidando le precedenti), è possibile implementare una sorta di “conto al bar”,
che viene poi “saldato” sulla blockchain quando la serie di transazioni è conclusa.
Il tutto in maniera “trustless”.
Questo concetto si espande poi in una rete di tipo hubs-and-spokes.
Esempio: Devo 5 euro ad un amico, ed entrambi abbiamo il conto al baretto:
questo, agendo come Hub, toglierà 5 euro dal mio conto e aggiungendoli al suo.
Transazione : pacchetto IP = Payment Channel : connessione TCP
29
30. Smart Contracts
Una forma di contratto digitale
gestito da un programma che gira
su blockchain Ethereum il cui
funzionamento è visibile a tutti: la
tutela delle parti è gestita da un
software e distribuito sulla rete,
quindi “incorruttibile” e
decentralizzato.
Le “API” di questi programmi sono
indirizzi che ricevono ed inviano
denaro.
30
Questo smart contract ripartisce quanto ricevuto tra 2
destinatari, secondo una percentuale scelta da un
terzo
31. Smart Contracts
Una forma di contratto digitale
gestito da un programma che gira
su blockchain Ethereum il cui
funzionamento è visibile a tutti: la
tutela delle parti è gestita da un
software e distribuito sulla rete,
quindi “incorruttibile” e
decentralizzato.
Le “API” di questi programmi sono
indirizzi che ricevono ed inviano
denaro.
31
Fig.1 - Il meccanismo dell’ impegno: Bob può solo
pagare Alice, Alice può solo risarcire entrambi
38. Bitcoin e valore - logica “popolare”
Migliore risposta:
1. Ragioni "industriali": non si altera, è difficile reperirlo (l'estrazione è costosa e rende poco)
2. Ragioni "monetarie": è utilizzato come moneta da sempre proprio perché è raro
3. E’ un bene rifugio: visto che non si altera, può rappresentare un buon investimento... Ma più se ne
domanda, più il prezzo aumenta;
4. Ragioni “speculative”: se si scommette che il suo prezzo aumenterà, le aspettative tenderanno a
realizzarsi
38
39. Bitcoin vs Schema Ponzi
Tratti comuni schema Ponzi:
1. Promessa di alti rendimenti in pochissimo tempo
2. Finti guadagni ottenuti da investimenti di “alta finanza”, non ben specificati
3. Offerta per un pubblico non competente in ambito finanziario
4. Investimento che fa capo ad un solo promotore, oppure azienda
5. Centralizzazione del potere decisionale “dall’alto”
Nel Bitcoin è la rete stessa che decide e possiede il valore della rete in base al
numero di utenti che la utilizzano. Cosa succede se perdesse valore
improvvisamente?
39