Bitcoin, è la moneta del futuro?

Bitcoin, è la moneta del futuro?

Prende il via con questo articolo una serie di appuntamenti per affrontare il tema Bitcoin, la nuova moneta elettronica che potrebbe rivoluzionare il futuro. L'argomento è particolarmente complesso e iniziamo affrontando il nodo più ostico: i principi su cui si basa il sistema ideato da Satoshi Nakamoto nel 2009.

di Andrea Bai pubblicato il nel canale Mercato
 

La proof of work

Nel sistema proposto da Satoshi Nakamoto il timestamp server non è centralizzato, ma distribuito su una rete peer-to-peer. L'implementazione di un timestamp server su una rete p2p implica l'impiego di un sistema basato su proof-of-work, cioè di un sistema che garantisca che ciascun elemento della catena (ovvero un blocco che contiene un gruppo di transazioni e una marcatura temporale) è stato creato compiendo un determinato lavoro e quindi sia sconveniente poterlo alterare, dal momento che per alterare un elemento della catena sarà necessario compiere nuovamente un lavoro e così su tutti gli eventuali elementi successivi.

Una proof-of-work è un frammento di informazione difficile da produrre così che possa soddisfare determinati requisiti. Di contro deve essere semplice verificare se la proof-of-work soddisfa i requisiti. Spesso la produzione di una proof-of-work è un processo casuale a bassa probabilità, che implica in media numerose prove ed errori prima che sia possibile generare una proof-of-work valida.

Nel caso specifico del sistema Bitcoin, la proof-of-work è rappresentata dalla ricerca di un valore che combinato al contenuto del blocco e applicando ad essi una funzione crittografica di hash SHA-256, si ottenga come risultato un valore che incominci con una sequenza predeterminata di 0. La proof-of-work per la rete timestamp viene implementata incrementando un elemento all'interno del blocco, chiamato nonce, fino a quando non viene individuato il valore del nonce che restituisca il risultato voluto.

Facciamo un esempio: dobbiamo lavorare su un elemento (poniamo la stringa "Ciao Mondo"!) in maniera tale che il nostro obiettivo sia quello di individuare quella sua variazione la quale, applicata una funzione di hash, restituisca come risultato un valore che inizia con una sequenza di 0. Si opererà variando la stringa con l'aggiunta di un intero (il nonce) alla sua fine, incrementandolo ad ogni tentativo. Una volta che la combinazione tra l'elemento originario, il nonce e la funzione di hash restituirà il risultato voluto, il valore del nonce rappresenta la nostra proof-of-work.

La proof-of-work viene utilizzata nel sistema per la generazione dei blocchi, è di fatto legata ai dati presenti in ciascun blocco ed è necessaria affinché i blocchi possano essere verificati e accettati. Nel sistema bitcoin la difficoltà di esecuzione del lavoro per individuare la proof-of-work è regolata in maniera tale da limitare il tasso con cui vengono generati i blocchi ad uno ogni 10 minuti in media. La bassa probabilità di generazione della proof-of-work rende di fatto impossibile prevedere quale nodo della rete sarà capace di generare il prossimo blocco.

A questo punto sarà facile comprendere che una volta che vengono effettuati tutti i calcoli per verificare la proof-of-work, non è più possibile cambiare il blocco ed il suo contenuto senza rieseguire il lavoro. Ciascun blocco contiene inoltre l'hash del blocco precedente, il che va a formare una concatenazione di stretta interdipendenza. Ed ecco il motivo per il quale l'eventuale cambiamento di un blocco implica anche il cambiamento di tutti i blocchi successivi, cioè rieseguire tutti i calcoli per l'individuazione delle proof-of-work di ciascun blocco. Di conseguenza se la maggior parte di potenza computazionale è controllata da nodi onesti, la catena onesta crescerà più velocemente superando qualsiasi catena concorrente.

 
^