Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Blockchain

weLaika
June 13, 2017

The Blockchain

Immaginate come potrebbe diventare il mondo se il denaro potesse muoversi con la stessa frizione con cui oggi fluisce l’informazione in rete, attraversando in modo uniforme i confini nazionali/politici/culturali, al punto da renderli irrilevanti.

weLaika

June 13, 2017
Tweet

More Decks by weLaika

Other Decks in Technology

Transcript

  1. 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
  2. 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"
  3. Funzione di Hash E’ una funzione che mappa un messaggio

    arbitrariamente lungo in una stringa di lunghezza prefissata, cercando di far in modo che da questa stringa non si possa risalire al messaggio che l'ha generata. MD4,MD5 SHA1,SHA256 WHIRLPOOL KEKKAK Demo: https://anders.com/blockchain/hash.html 5
  4. 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 6
  5. Moneta digitale - Catena di firme digitali 7 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
  6. 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* 8 Funny facts: Overflow bug e fork del 2010
  7. 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 9
  8. 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. 10 “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
  9. Proof of Work Qualcosa di potente ha costruito quella cosa,

    non c’è una scorciatoia per farlo. 11 Questo monumento aveva due scopi: quello meno importante era quello di tomba.
  10. 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 12
  11. 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 13
  12. 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 14
  13. 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. 15
  14. 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 16
  15. 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 19
  16. Mining Inizialmente ogni utente era anche un “minatore”. Quando l’incentivo

    economico è diventato abbastanza forte, sono emerse ottimizzazioni: CPU GPU FPGA ASIC 20
  17. 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 23 Per trovare una collisione è necessario in media 2107 volte il tempo che ci vuole a trovare un nuovo blocco.
  18. 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 24 “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
  19. “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. 26
  20. 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 27
  21. 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 28
  22. 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? 29
  23. 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 30
  24. 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 Questo smart contract ripartisce quanto ricevuto tra 2 destinatari, secondo una percentuale scelta da un terzo
  25. 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. 32 Fig.1 - Il meccanismo dell’ impegno: Bob può solo pagare Alice, Alice può solo risarcire entrambi
  26. Fonti: Bitcoin: A Peer-to-Peer Electronic Cash System, Satoshi Nakamoto, 2009

    https://bitcoin.org/bitcoin.pdf Blockchain demo: https://anders.com/blockchain/ , Anders Brownworth Smart Contracts: https://medium.com/@chriseth/babbage-a-mechanical-smart-contract-language-5 c8329ec5a0e 35