Translate

giovedì 24 aprile 2014

IL BITCOIN SECONDO MARCO POLCI!


Prima di iniziare, una premessa: questa serie di articoli ha lo scopo di informare su cos’è e come è fatto il Bitcoin, in modo che se ne possa parlare con maggiore consapevolezza. Chi decide di trattare i Bitcoin o strumenti analoghi lo fa a proprio rischio se ne assume la responsabilità.

Questa volta vado a fondo nei meccanismi informatici di Bitcoin per capire su cosa poggia la sua sicurezza, visto che l’ideatore (Satoshi Nakamoto) non voleva basarsi sulla fiducia verso un intermediario che facesse da garante.
Nel primo articolo un lettore ha commentato sarcasticamente, quasi come se parlasse di fantascienza, che per essere veramente sicuro, ci vorrebbe un software automodificante in grado di ripararsi e correggere ogni modifica. Senza saperlo c’è andato molto vicino.


Qui siamo in presenza di un sistema che è in grado di rigettare qualsiasi operazione fatta da una sua parte modificata per non rispettare le regole, con il limite che la parte modificata non superi il 50% del totale. Attenzione, ho usato volutamente la parola “sistema” e non “software”.
Procediamo per gradi per comprendere a fondo quest’affermazione e come si realizza tutto ciò.
Chiarisco perché ho usato la parola “sistema” prendendone la definizione da Wikipedia: “Un insieme di elementi interconnessi tra di loro o con l’ambiente esterno tramite reciproche relazioni, ma che si comporta come un tutt’uno, secondo proprie regole generali”.
rete p2p Cos’è il Bitcoin – seconda parteBitcoin è realizzato da un sistema, non da un software. Dei software che girano su dei computer sono gli elementi che costituiscono il sistema. Bitcoin non è il risultato delle operazioni svolte dai singoli software ma il risultato delle interazioni di tutti questi software. Questi elementi per interagire devono parlare una sorta di stessa “lingua”, quello che viene chiamato protocollo, che altro non è che un insieme di regole prestabilite.

Alla base di Bitcoin c’è un tipo particolare di sistema che ha due caratteristiche fondamentali: è un sistema distribuito e in particolare è una rete peer to peer (P2P). L’aggettivo distribuito sta a indicare che gli elementi sono interconnessi su rete informatica che usano per comunicare. Le reti P2P hanno la caratteristica che tutti gli elementi (chiamati nodi) hanno lo stesso ruolo, tutti contribuiscono al risultato, nessuno è indispensabile. Prestate particolare attenzione a quest’ultima affermazione, i nodi possono venire a mancare quasi tutti senza compromettere il funzionamento della rete P2P.

Bitcoin è una rete P2P di nodi che si controllano a vicenda, verificano ognuno le operazioni dell’altro. Le operazioni vengono considerate buone (per operazioni successive) solo quando la maggioranza dei nodi le ha validate. Qui si intuisce la questione del 50%. Per alterare un’operazione già validata in passato è necessario che la modifica sia validata da più del 50% dei nodi, solo così tutti i nodi la accetteranno scartando la vecchia.

Come vedremo poi, il discorso è un po’ più articolato, ma il risultato è analogo.
Ora abbiamo anche gli elementi per dire qual è la chiave della sicurezza del sistema di Bitcoin: la distribuzione. Il sistema è tanto più sicuro quanto più i nodi della rete p2p sono uniformemente distribuiti. In altre parole i nodi devono essere molti, sparsi per tutto il mondo, essere controllati da soggetti diversi che non hanno interessi comuni se non quello di far funzionare la rete così com’è. Tanto più si verificano queste condizioni tanto più sarà difficile per un soggetto malintenzionato prendere il controllo di più della metà dei nodi per modificarne il comportamento.
Fin qui le definizioni generali, ora torniamo al lavoro di Satoshi Nakamoto.

Com’è rappresentato un Bitcoin nella memoria del sistema? Tramite tutta la sua storia di passaggi da un portafoglio ad un altro (per ora tralascio l’origine). Ad ogni passaggio c’è una firma digitale che garantisce che la moneta sia stata spesa dal legittimo proprietario e che l’informazione non venga alterata in un momento successivo. Non do i dettagli di come funziona la firma digitale, prendete queste affermazioni per buone.
Quando il legittimo proprietario di un bitcoin vuole fare una transazione, aggiunge all’elenco chi è il prossimo proprietario, ci pone la propria firma digitale, e comunica la nuova transazione a tutti i nodi della rete che ne verificano la correttezza. È evidente che per fare queste verifiche tutti i nodi devono conoscere tutte le transazioni fatte dalla nascita di Bitcoin.
schema rappresentazione moneta 490x212 Cos’è il Bitcoin – seconda parte
Questo meccanismo garantisce che ognuno possa spendere solo i propri bitcoin, ma come si fa a impedire che qualcuno li spenda due volte generando due transazioni a partire dalla stessa? Ci vuole qualcosa che garantisca che una transazione è stata fatta prima dell’altra in modo da rifiutare la seconda.
Tutte le transazioni sono impacchettate in quelli che vengono chiamati blocchi. Questi blocchi sono collegati in una sequenza temporale garantita da una prova di lavoro che deve essere svolta per poter “chiudere” il blocco e iniziare a lavorare al successivo. La prova di lavoro è semplicemente un calcolo che richiede molto tempo per essere fatto, in media 10 minuti, indipendentemente dalla velocità del calcolatore.
Una transazione non è valida finché non è stato “chiuso” il blocco che la contiene, e il blocco accettato da un certo numero di altri nodi della rete.
Se un nodo disonesto vuole cambiare una transazione già validata, deve rifare la prova di lavoro del blocco che la contiene, rifare la prova di lavoro per ognuno dei blocchi chiusi successivamente e chiudere un nuovo blocco prima che lo faccia qualcun altro. Può essere sicuro di riuscire a fare tutto ciò solo se controlla più della metà della capacità di calcolo dell’intera rete.
Un’osservazione: anche controllando più del 50% della capacità di calcolo, un malintenzionato non può fare qualsiasi genere di alterazione. Ad esempio non riuscirà mai a spendere i soldi di qualcun altro perché non potrà mai falsificare la firma digitale del legittimo proprietario. Le transazioni devono essere sempre formalmente corrette, altrimenti gli altri nodi non le accetteranno mai. L’unica operazione che è possibile fare è cancellare delle transazioni, ad esempio per spendere una seconda volta il proprio denaro.
Vediamo un po’ più in dettaglio. Ogni blocco contiene una specie d’impronta digitale (valore hash) del blocco precedente, in modo che se questo viene alterato l’impronta non corrisponda più. Oltre ad un elenco di transazioni, nel blocco c’è anche il risultato della prova di lavoro a dimostrazione che il lavoro è stato fatto. Si crea così una sequenza di blocchi che viene chiamata “block chain”.
schema block chain 490x196 Cos’è il Bitcoin – seconda parte
Questa catena di blocchi rappresenta il registro di tutte le transazioni avvenute dalla nascita di Bitcoin stesso. Ogni nodo della rete lavora a un nuovo blocco raccogliendo le transazioni e cercando di “chiuderlo” svolgendo la prova di lavoro. Quando la prova di lavoro è terminata, il blocco viene passato a tutti gli altri nodi e si inizia a lavorare ad un nuovo.
Visto che ogni nodo procede per conto suo, potrebbe succedere che compaiano delle biforcazioni in questa catena ma, tramite opportuni accorgimenti, le biforcazioni vengono poi riassorbite. Il punto chiave è che, in presenza di più catene, predomina quella più lunga. È per questo che il malintenzionato oltre a rifare il lavoro deve chiudere un nuovo blocco prima che lo faccia qualcun altro.
La prova di lavoro è una specie di enigma crittografico calcolato in base al contenuto del blocco stesso, per cui se viene alterato anche la soluzione all’enigma cambia. Inoltre il grado di difficoltà della prova viene continuamente aggiustato in modo da seguire la capacità computazione totale della rete e in modo che il tempo medio per la chiusura di un blocco rimanga intorno ai 10 minuti.
La novità del lavoro di Satoshi Nakamoto è questa appena illustrata. Garantire la sequenzialità delle transazioni tramite delle vere e proprie prove di lavoro che richiedono un tempo considerevole per essere svolte.
Sono già andato fin troppo a fondo nei dettagli implementativi, concludo con alcune considerazioni. Ho già detto che la sicurezza di Bitcoin si bassa sulla presenza di molti nodi indipendenti sparsi per la rete, i nodi svolgono questi calcoli molto complessi di cui ho appena parlato, ma a questo punto perché qualcuno dovrebbe mettere a disposizione della rete di Bitcoin un computer, consumando risorse di calcolo ed energia elettrica? Si è ricorso ad un incentivo basato su un meccanismo di premiazione. Ad ogni nuovo blocco sono associati dei nuovi bitcoin, appena coniati, che vengono dati a chi è riuscito a “chiudere” il blocco. Per analogia al mondo dei metalli preziosi, quest’attività è stata battezzata con il nome “mining”.
L’errore che molti commettono la prima volta che sentono parlare di mining è di pensare che questi computer facciano dei conti per generare nuova moneta. Falso, semplicemente fanno tutti calcoli che servono al sistema di garanzie su cui si basa Bitcoin, la nuova moneta è solo una parte del premio che gli viene assegnato per incentivare il loro contributo. Altra parte del premio deriva dalla tassazione sulle transazioni.
Per semplice scelta progettuale, prendendo nuovamente a riferimento il modello dei metalli preziosi, la quantità di nuova moneta generata per ogni blocco diminuisce nel tempo in modo che i bitcoin in circolazione non saranno mai più di 21 milioni.
Nel prossimo articolo inizierò a fare delle considerazioni su alcune conseguenze, anche di enorme impatto, dei meccanismi qui descritti.

http://ilpunto-borsainvestimenti.blogspot.it/2013/12/il-bitcoin-secondo-marco-polci.html