Introduzione

Con questo articolo cercherò di illustrarvi nel modo piu semplice possibile come funziona il bitcoin e la tecnologia della blockchain. Il Bitcoin è un sistema di pagamento elettronico creato nel 2009 da un individuo o un collettivo che ha usato lo pseudonimo Satoshi Nakamoto. L’obiettivo era ed è quello di produrre un sistema di pagamento resistente alla censura, indipendente dalle decisioni di autorità centralistiche come le banche centrali, le banche commerciali o i governi, che permettesse pagamenti rapidi a costi inferiori a quelle dei servizi centralizzati esistenti. Il bitcoin è un nuovo tipo di moneta elettronica, basata su un protocollo di comunicazione aperto, software open source, una architettura decentralizzata, ed è utilizzato da più di 1.000.000 di persone in tutto il mondo. Così come la diffusione delle e-mail ha permesso di inviare messaggi testuali ad altri utenti a costi praticamente nulli in qualsiasi momento in tutto il mondo, e Skype permette la comunicazione audio e video con altri utenti a costi virtualmente nulli in tutto il mondo, adesso Bitcoin permette di effettuare pagamenti ad altri utenti ovunque essi siano, in qualsiasi momento, di qualsiasi ammontare, senza bisogno di affidarsi a una terza parte. Il Bitcoin ha la potenzialità di diventare una delle più grandi innovazioni tecnologiche degli ultimi decenni e modificare radicalmente i rapporti sociali.

Come funzionano i bitcoin

Il protocollo Bitcoin (l’insieme di regole condivise che governano la rete Bitcoin) fa sì che non esista una autorità centralizzata che decida la quantità di moneta creata e chi la riceve (come la maggior parte dei governi o banche centrali fa per le monete nazionali), ma la quantità di nuove monete generate dipende da un algoritmo predefinito al momento della creazione della rete, e ogni nodo della rete verifica che ogni transazioni sia legittima. La maggior parte del lavoro necessario a rendere sicure le transazioni nella rete Bitcoin è fatto dai “minatori”. Per effettuare una transazione è necessario possedere una chiave crittografica privata associata a un indirizzo Bitcoin. Alla chiave crittografica privata è associata una chiave pubblica, dalla quale viene derivato attraverso una funzione a senso unico l’indirizzo Bitcoin; normalmente queste chiavi e l’indirizzo assomigliano a un insieme casuale di numeri e lettere. Si può pensare a un indirizzo bitcoin come a una cassetta della posta di vetro dove chiunque può vedere il contenuto o inviare una lettera, ma solo chi conosce la chiave privata può aprire e usare il contenuto. Per esempio: Adam ha un certo numero di bitcoin all’indirizzo A e vuole inviarli a Bob all’indirizzo B. Adam userà chiave privata dell’indirizzo A per firmare un messaggio/transazione contenete la chiave pubblica dell’indirizzo A (da cui è possibile determinare univocamente l’indirizzo A), l’ammontare dei bitcoin da trasferire e l’indirizzo a cui trasferirli (l’indirizzo B di Bob). Una volta firmata la transazione questa sarà inviata a uno o più nodi della rete Bitcoin che ritrasmetteranno la transazione ad altri nodi, in modo da “inondare” la rete e far conoscere al maggior numero di nodi possibile la transazione. Ogni nodo, prima di ritrasmettere la transazione, verificherà che questa sia legittima (che la firma crittografica corrisponda all’indirizzo di provenienza, che il numero di bitcoin spesi sia inferiore o uguale al numero di bitcoin presenti all’indirizzo di provenienza). Dopo di che, il minatore che per primo scopre il blocco includerà la transazione nel nuovo blocco che sarà aggiunto alla blockchain, il registro di tutte le transazioni avvenute nella rete Bitcoin. La blockchain è il libro mastro che contiene tutte le transazioni avvenute nella rete bitcoin dal suo inizio nel 2009. Questo database è formato dalla concatenazione cronologica di blocchi di transazioni. Ogni blocco contiene un numero di nuove transazioni ed è concatenato al precedente attraverso una funzione crittografica chiamata hash SHA-256. La scelta delle transazioni da includere in un blocco e la creazione del blocco è compito dei minatori. Quando un minatore ha “trovato” un nuovo blocco esso aggiungerà il nuovo blocco in cima alla sua copia della blockchain, inizierà a lavorare sul blocco successivo e annuncerà la presenza di un nuovo blocco al resto della rete. Gli altri nodi inizieranno a scaricare il nuovo blocco, verificheranno che il contenuto sia legittimo, lo aggiungeranno in cima alla loro blockchain e lo diffonderanno a loro volta ad altri nodi della rete. Gli altri minatori aggiungeranno il nuovo blocco e inizieranno a loro volta a lavorare per scoprire il blocco successivo. In questo modo ogni nodo della rete avrà una copia della blockchain che è identica a quella di ogni altro nodo (consenso). Ma come si assicura che la blockchain rimanga intatta e non venga modificata da nodi malevoli? Qui entra in gioco la Proof-of-Work (PoW) e la rivoluzionaria soluzione al Problema dei Generali Bizantini inventata da Satoshi Nakamoto. Ogni minatore includerà al blocco di transazioni che sta creando non solo l’hash del blocco precedente e l’hash delle transazioni incluse, ma anche una stringa conosciuta come PoW. La PoW è una stringa alfanumerica che una volta elaborata attraverso una funzione di hashing (SHA-256 nel caso di Bitcoin) produce un determinato risaluto. Le funzioni di hash hanno delle proprietà interessati: è computazionalmente “facile” calcolare l’hash di una stringa di dati, ma è computazionalmente “difficile” trovare una stringa di dati che produca un hash specifico. Per “facile” si intende che il lavoro da fare cresce linearmente con la quantità di dati da trattare, mentre per “difficile” si intende che il lavoro da fare cresce esponenzialmente con la lunghezza dell’hash. Di conseguenza, la ricerca di una stringa che produca un hash specifico è, essenzialmente, una ricerca di forza bruta (brute force search) fatta testando ogni stringa possibile fino a che non viene prodotto l’hash desiderato. Trovare la stringa richiede di compiere un lavoro e ha quindi un costo in termini di tempo, energia, hardware, etc. Un nodo malevolo che decidesse di non includere una o più transazioni nei nuovi blocchi dovrebbe avere una capacità di hashing superiore a tutto il resto della rete combinata, e se volesse eliminare una transazione già archiviata in un blocco precedente, dovrebbe essere in grado di rifare il lavoro necessario a creare il blocco in cui è inclusa la transazione, e tutti i successivi. Va notato che i minatori non possono in nessun modo creare o modificare una transazione, in quanto non conoscono le chiavi crittografiche private associate agli indirizzi, possono solo includere o non includere le transazioni valide. Ogni blocco che includa transazioni o PoW invalide non sarà accettato dai nodi della rete; senza il consenso della rete il blocco non ha valore, e la ricompensa inclusa nel blocco non sarà riconosciuta al minatore che lo ha creato.

 

Minatori e incentivi:

Il protocollo della rete Bitcoin fa sì che circa ogni 10 minuti venga generato un blocco, e in ogni blocco è inclusa una transazione speciale chiamata “block reward” che non ha input (non ha un indirizzo di provenienza dei bitcoin) che va al minatore che lo ha creato, a cui si aggiungono le commissioni per i minatori incluse in ogni transazione. La block reward è predefinita come 50 bitcoin per blocco e viene dimezzata ogni 210.000 blocchi; attualmente è di 12,5 bitcoin. Essenzialmente, i nuovi bitcoin creati a ogni blocco vengono distribuiti in modo casuale ai minatori. La probabilità di ricevere la ricompensa dipende dalla frazione di potenza di calcolo che il singolo minatore ha in confronto alla potenza di calcolo della rete. E.G: Se un minatore ha il 10% della potenza di hashing della rete, ha anche il 10% di possibilità di scoprire il blocco successivo. La creazione di nuove monete serve a compensare i minatori per il lavoro da loro compiuto nel mantenere sicura la blockchain, e a distribuire in modo imparziale le nuove monete create. Dato che la probabilità di ricevere le nuove monete dipende dalla potenza di calcolo contribuita alla rete, i minatori sono incentivati a incrementare il più possibile la potenza di calcolo che contribuiscono, e a farlo nel modo più efficiente possibile. Questo a fatto si che si sia passati prima dalle CPU all’utilizzo delle GPU e poi dalle GPU all’utilizzo degli ASICs (Application Specific Integrate Circuit), aumentando il numero di hash per secondo e diminuendo il costo energetico per hash calcolato. Il protocollo Bitcoin fa sì che la rete reagisca all’aumento della potenza di calcolo modificando la difficoltà della PoW. Ogni 2100 blocchi viene calcolato il tempo medio trascorso tra un blocco e l’altro, e la difficoltà viene modificata in modo da fare sì che la media torni a essere di 10 minuti. Dato il continuo e vertiginoso incremento della potenza di calcolo, però, questo aggiustamento non è normalmente sufficiente; il tempo che trascorre tra un blocco e il successivo è normalmente tra i 6 e gli 8 minuti, e quindi la quantità di monete create è superiore a quella di default. Questa situazione è temporanea e dovrebbe risolversi naturalmente nel momento in cui la tecnologia usata arriverà allo stato dell’arte. Il numero dei BTC che verranno creati è, comunque, limitato a 21 milioni dal protocollo. Ogni blocco generato in anticipo avvicina dello stesso tempo il successivo retargeting della difficoltà, e il dimezzamento della ricompensa successivo. Con il passare del tempo, la quantità di bitcoin che i minatori riceveranno dipenderà sempre di meno dalla ricompensa inclusa nel blocco, e sempre di più dalle commissioni incluse nelle transazioni. Le commissioni incluse nelle transazioni servono a ricompensare i minatori, incentivandoli a includere la transazione nel blocco prima di altre, ma hanno anche lo scopo di impedire a una entità maliziosa di creare un enorme numero di transazioni che riducano o blocchino il funzionamento della rete (anti-SPAM). Sebbene la commissione di una singola transazione sia minuscola, il costo di creare milioni o miliardi di transazioni sarebbe considerevole per un attaccante, che finanzierebbe i minatori con le fee che dovesse pagare. I bitcoin, come altre valute, possono essere acquisiti attraverso i servizi di aziende specifiche di cambio (exchange), attraverso compravendite tra privati o attraverso la vendita di beni o servizi. Una volta acquistati, i BTC saranno trasferiti a un indirizzo di cui si conosce la chiave privata. La gestione delle chiavi private avviene attraverso specifiche applicazioni conosciute come wallet. Questi possono essere applicazioni che vengono eseguite su un computer locale, e che spesso hanno una copia completa della blockchain, oppure attraverso applicazioni più limitate, che possono essere eseguite su altri apparecchi come smartphone. Ogni wallet può contenere un numero arbitrario di chiavi private, ad ogni una delle quali è associato un indirizzo Bitcoin specifico. Un wallet può generare una transazione prendendo come input della stessa uno o più indirizzi, come output uno o più indirizzi, e firmando la transazione con la chiave di ogni indirizzo di input. Le chiavi private vanno sempre conservate con la massima cura per minimizzare la possibilità che vadano perdute (cosa che renderebbe inaccessibili i bitcoin associati) o che cadano in mano di altre persone (che otterrebbero il controllo totale dei bitcoin associati, e potrebbero trasferirli immediatamente a un indirizzo sotto il loro controllo). Un modo per archiviare le chiavi segrete è quello di scriverle su un supporto fisico, normalmente cartaceo detto “paper wallet”. Il paper wallet potrà essere quindi conservato in un luogo fisicamente protetto (cassetta di sicurezza, cassaforte). In molti casi, i paper wallet vengono generati da computer che non sono collegati alla rete, o da altri dispositivi specifici, e stampati. In questo modo si evita il pericolo che le chiavi generate su un computer connesso alla rete possano essere rubate. Un paper wallet conterrà la chiave segreta e l’indirizzo pubblico associato. Spesso la chiave privata sarà a sua volta criptata, e la chiave di decriptazione sarà tenuta fisicamente separata dal wallet. Per facilitare la lettura e l’acquisizione da parte di dispositivi informatici spesso vengono usati QR. Una caratteristica fondamentale di un paper wallet è che, se adeguatamente conservato, può durare anni o anche secoli senza degradarsi e rimanendo perfettamente leggibile, cosa che non si può dire dei normali supporti elettronici.

 

Di Giuseppe Tararà

Commenti