Bitcoin
Oramai è diventata una abitudine per me passare il tempo creando contenuto didattico. Lo faccio su youtube in particolare, registrandomi mentre spiego e faccio vedere le più svariate cose relative al campo dell'informatica. E ogni tanto capita anche che lo faccio qui, su questo blog. Voglio quindi alzare l'asticella, e voglio alzare questa proverbiale asticella provando a spiegare una cosa tanto discussa quanto incompresa: il bitcoin.
Ora, sono tante le domande che ci possiamo porre per cercare di capire meglio questa "cosa". Dico "cosa" perché bitcoin oramai è andato ben oltre la tecnologia, la matematica e la crittografica, ed è diventato un fenomeno economico sociale e culturale di larga scala. Diventa assai complesso quindi cercare di spiegare tutto ciò che sta dietro ai bitcoin. L'idea quindi è quella di raccontarne solo una parte, ed essendo io un informatico, tra tutte le parti, mi sento più in dovere di spiegare il lato tecnico del bitcoin, lasciando ad altre persone, più competenti di me, analisi più dettagliate sui rimanenti aspetti.
Consideriamo quindi alcune delle domande più semplici che possiamo porci quando incontriamo per la prima volta questa parole alquanto nuova:
- Cosa sono i bitcoin?
- Come sono implementati i bitcoin?
- Quali sono i limiti tecnici del bitcoin?
- Dove posso imparare qualcosa sui bitcoin?
Tra tutte, l'ultima domanda è senza ombra di dubbio la più importante. Imparare infatti non è un qualcosa che possiamo fare da soli. Da soli, semmai, si potrebbe scoprire bitcoin, o comunque scoprire una struttura di idee abbastanza simile a quelle codificate nel bitcoin che oggi noi tutti conosciamo. Ma se vogliamo imparare, abbiamo bisogno prima di tutto di qualcosa o qualcuno da cui imparare. Abbiamo bisogno di una o più fonti da cui imparare. La ricerca e la scelta di queste fonti assume un ruolo critico, in quanto se scegliamo la fonte sbagliata, non importa quanto impegno ci possiamo mettere dopo, alla fine avremmo imparato o nulla, o, peggio, delle idee sbagliate e nocive. Questo articolo, nella sua realizzazione ideale, vuole cercare di essere una nuova fonte di qualità da cui poter imparare il bitcoin.
Il che lascia un dubbio: e io, per scriverlo, a quali fonti mi sono affidato? Nel mio periodo di studio all'università, ho imparato una lezione, tanto semplice quanto profonda:
Questo è quello che ho fatto io per scrivere questo articolo. Sono partito dall'articolo originale di Satoshi Nakamoto intitolato "Bitcoin: A Peer-to-Peer Electronic Cash System", che ha introdotto il bitcoin, e ho utilizzato altri contenuti più recenti quando c'era qualcosa che non riuscivo a capire, o quando c'era qualcosa che volevo approfondire meglio. Tutti i riferimenti utilizzati saranno comunque riportati nella bibliografica del seguente articolo.

Osservazione: Per quanto l'articolo è firmato a nome di Satoshi Nakamoto, non si sa bene cosa c'è dietro a questo pseudonimo, e non si sa neanche se c'è una sola persona o una organizzazione di persone che vanno sotto lo stesso nome. Io per semplicità scriverò sempre "Nakamoto scrive...", ma bisogna ben intendere che forse c'è il lavoro di più persone dietro queste parole.
Detto questo, spero che questo articolo sia interessante, e spero che alla fine avrete imparato qualcosa di più su questa tecnologia, che sicuramente è interessante, ma che è anche molto poco compresa a livello mediatico.
Buona lettura!
Basi di crittografia#
Per poter capire il paper di Nakamoto servono alcune basi nel campo della crittografia. Sarebbe troppo dispensioso descrivere in dettaglio tutte le nozioni richieste. Mi limiterò dunque ad elencarle e a fare qualche esempio per ciascuna nozione. Rimando ad un blog posto futuro il compito di spiegare meglio queste cose.
- Che cos'è la crittografia?
- Crittografia a chiave simmetrica
- Crittografia a chiave asimmetrica
- Funzioni hash crittografiche
- Firma digitale
Cominciamo dalla prima questione: che cos'è la crittografia? Per farla breve la crittografia studia come le informazioni possono essere protette. Sono varie le protezioni che possiamo garantire alle nostre informazioni. Tra queste troviamo:
- confidenzialità
- integrità
Astratto#
La prima parte di ogni articolo scientifico è l'abstract. Il compito dell'abstract è quello di riassumere, in poche parole, l'intero contenuto dell'articolo, per definire il contesto in cui l'articolo si muoverà, e quali sono gli effettivi risultati ottenuti nell'articolo.
Nakamoto inizia
A purely peer-to-peer version of electronic cash would allow online payments to be sent directly from one party to another without going through a financial institution.
L'idea dell'articolo è quella di descrivere un sistema di moneta digitale peer-to-peer. Per capire cosa significa "peer-to-peer", dobbiamo considerare come funzionano i classici sistemi di moneta. Nei classici sistemi di moneta abbiamo un ente centrale, come ad esempio una banca, che si mette in mezzo ogni transazione che viene effettuata con quella particolare moneta. Questa posizione centrale viene utilizza dalla banca per verificare la validità delle varie transazioni. Se io posso comprare un oggetto su Amazon, è perché la mia carta di debito è associata ad un conto bancario, e quel conto bancario ha ancora dei soldi rimanenti (si spera). Quando comunico ad Amazon la mia intenzione di comprare l'oggetto di interesse, Amazon si mette in comunicazione con dei sistemi di pagamento, che, passando per la Banca, verificano che il mio pagamento sia valido.
Il sistema proposto nel paper, Bitcoin appunto, vuole rimuovere completamente il ruolo della Banca centrale, in modo da avere un sistema completamente peer-to-peer, dove con "peer" si intende "pari". Idealmente in un sistema peer-to-peer tutti giocano e rispettano le stesse regole, e non c'è differenza di potere tra i vari nodi della rete. Questo, almeno, in teoria.
Se il sistema bancario classico utilizza un paradigma client-server, in cui i client sono gli utilizzatori del servizio erogato dal server, questo nuovo sistema vuole utilizzare un paradigma peer-to-peer, in cui ciascun nodo può sia utilizzare che erogare il servizio di interesse. Nel caso particolare di Bitcoin, la sicurezza del sistema stesso non è qualcosa che dipende da un singolo nodo della rete, ma è un qualcosa che dipende dalla rete stessa, ovvero dall'insieme di nodi che fanno parte della rete.
Come vuole procedere Nakamoto per creare questo nuovo sistema di pagamento peer-to-peer? Utilizzando la crittografia! Continua infatti,
Digital signatures provide part of the solution, but the main benefits are lost if a trusted third party is still required to prevent double-spending.
Per "digital signatures" si intendono le firme digitali, che sono uno strumento ripreso dalla crittografia e in particolare dalla crittografia a chiave pubblica. La firma digitale riprende la rispettiva firma analogica: è uno strumento matematico che ci permette di garantire che una particolare persona ha visto e validato il contenuto di un particolare messaggio.
Fin dall'inizio è poi menzionato il problema del double-spending. Per spiegare il double-spending consideriamo la seguente situazione: vogliamo vendere un vecchio gioco a cui oramai non dedichiamo più tempo e abbiamo trovato un potenziale acquirente. Ad un certo punto il compratore ci dice di aver inviato i soldi, e noi, di conseguenza, gli inviamo il gioco. Cosa succede però se dopo aver ricevuto i soldi, il compratore modifica il sistema informativo che gestisce le transazioni, e cancella del tutto la transazione da lui effettuata? Se riuscisse in questo intento, ci farebbe perdere il guadagno che avevamo ottenuto, e lui avrebbe di nuovo quei soldi, oltre ad avere il gioco comprato da noi. In altre parole, sarebbe possibile per il compratore fuffarolo spendere la stessa moneta due volte. Questo è esattamente il problema del "double-spending", in inglese appunto "doppia spesa": come possiamo essere sicuri che la moneta che riceviamo non è stata già spesa in passato?
Nei classici sistemi monetari, il problema del double spending viene risolto nel momento in cui tutti noi ci affidiamo alla stessa entità, ovvero le banche. La banca centrale infatti mantiene la lista di tutte le transazioni che vengono effettuate e di tutte le persone che le effettuano. Da queste è poi in grado di calcolare quali sono i saldi delle varie persone, e dunque conosce cosa ciascuno di noi è in grado di comprare e cosa invece va oltre la portata del nostro saldo.
Come possiamo rimuovere la banca, e comunque dare le stesse garanzie?
In realtà non possiamo dare le stesse identiche garanzie. È però possibile, e Bitcoin lo mostra, dare alcune delle vecchie garanzie anche in un contesto puramente peer-to-peer.
We propose a solution to the double-spending problem using a peer-to-peer network.
The network timestamps transactions by hashing them into an ongoing chain of hash-based proof-of-work, forming a record that cannot be changed without redoing the proof-of-work. The longest chain not only serves as proof of the sequence of events witnessed, but proof that it came from the largest pool of CPU power.
As long as a majority of CPU power is controlled by nodes that are not cooperating to attack the network, they'll generate the longest chain and outpace attackers
Qui Nakamoto descrive i componenti principali che formano Bitcoin. Come prima cosa, abbiamo un peer-to-peer network, ovvero una rete di tipo peer-to-peer. Viene poi introdotto il concetto di blockchain, inteso come una sequenza di record che vengono generati tramite un processo chiamato proof of work. Questi record formano una catena, una blockchain, in quanto sono collegati tra loro tramite delle funzioni hash crittografiche. Nakamoto menziona inoltre che la sicurezza della rete