Gli algoritmi e le tecniche principali di Bitcoin

Bitcoin è una rete Peer-to-Peer i cui nodi possono svolgere il ruolo di semplici originatori/beneficiari di transazioni finanziarie nella crypto-valuta bitcoin o svolgere anche il ruolo di miner cioè validatori delle transazioni altrui.
Per partecipare alla rete Bitcoin si può scaricare un software open source sul proprio pc o smartphone e creare un account [B1] dove raccogliere gli indirizzi associati ai propri bitcoin (BTC). Ogni account è associato sul proprio terminale a chiavi pubbliche (usate per calcolare i propri indirizzi) ed alle corrispondenti chiavi private (usate per firmare a scopo di autorizzazione le transazioni). Lo schema di firma digitale utilizzato in Bitcoin non richiede alcuna Certification Authority né certificato digitale e la generazione delle proprie chiavi è affidata al nodo stesso. È la capacità di firmare digitalmente con la chiave privata a consentire il trasferimento di bitcoin tra utenti [B2]. L’algoritmo di firma digitale è standard ed è ECDSA [B3].
Ogni transazione specifica un passaggio di BTC da un utente A ad uno B. La transazione, che include anche l’indirizzo di B, è autorizzata da A tramite la firma digitale della sua descrizione, usando la chiave privata associata ad un indirizzo pubblico di A; in tal modo si garantisce l’autenticità e la "non repudiation" della transazione. Si noti che, per ragioni di sicurezza e privacy, si consiglia al beneficiario di generare e comunicare un indirizzo differente per ciascuna transazione che intende ricevere. Per conoscere i nuovi indirizzi di un utente, cui trasferire i BTC, l’originatore di una transazione può utilizzare canali di comunicazioni indipendenti da Bitcoin. Utilizzare indirizzi sempre nuovi [B4] e una rete di anonymizer come TOR per le comunicazioni tra nodi sono i principali meccanismi per proteggere il loro stesso anonimato (privacy).
Una volta firmata digitalmente, la transazione deve essere ufficializzata per confermare il passaggio di BTC tra gli utenti coinvolti. L’ufficializzazione richiede che chi desidera effettuare la transazione la invii ad almeno un miner. Se si invia a più miner, la probabilità che la transazione sia ufficializzata in breve tempo aumenta. I miner che ricevono la transazione ne verificano l’autenticità (verificano la firma digitale) e la correttezza, aggiornano la propria copia del libro mastro (elenco completo di tutte le transazioni ufficializzate) e provvedono a inoltrare la transazione ad altri miner, in modo che possano aggiornare il libro mastro delle transazioni di cui ciascun computer della rete Bitcoin possiede una copia.
Tenere un libro mastro, cioè un registro veritiero con cui è possibile determinare il numero di bitcoin associato a ciascun indirizzo, senza dover riporre fiducia in alcun specifico soggetto, è essenzialmente l’obiettivo del sistema Bitcoin. Sorprendentemente Bitcoin realizza l’obiettivo utilizzando esclusivamente strumenti software e affidandosi al fatto che la maggior parte della potenza computazionale complessiva dei miner sia utilizzata secondo quanto specificato dai protocolli Bitcoin.
Nel caso delle banche tradizionali o di Paypal il libro mastro è tenuto e garantito da una singola entità o da un numero ristretto di entità. Il fatto che nel sistema Bitcoin il libro mastro sia invece tenuto da un gruppo molto numeroso presenta alcune importanti implicazioni:

  • mentre con un libro mastro centralizzato la conoscenza delle proprie transazioni è riservata, in Bitcoin ciascuno è a conoscenza anche delle transazioni riguardanti gli indirizzi altrui;
  • mentre con un libro mastro tenuto da una singola entità ci si fida di tale entità o è almeno possibile rivalersi su di essa, in Bitcoin l’anonimato di utenti e miner esclude di riporre fiducia in alcun soggetto specifico.

Nel seguito descriviamo alcuni dei meccanismi che consentono a un gruppo di miner e utenti sconosciuti di gestire le transazioni finanziarie tra appartenenti al gruppo.

Verifica della copertura delle transazioni

Contrariamente ai modelli tradizionali, in Bitcoin non viene mantenuta esplicitamente alcuna tabella a due entrate (Numero di conto, Saldo). Come fanno dunque i miner a verificare che chi emette una transazione possieda tutti i BTC necessari? Ogni transazione è univocamente identificata dall’originatore tramite un hash crittografico del contenuto della transazione stessa. Invece della verifica del saldo, il possesso di fondi è verificato grazie al riferimento a precedenti transazioni a favore dell’utente. Tali riferimenti sono specificati come input esplicitamente nella descrizione della transazione, realizzando dunque una Transaction Chain (Figura A). Tra i compiti dei miner c’è dunque anche la verifica che la somma dei BTC negli input non sia superiore al numero di BTC oggetto della transazione.
Per evitare truffe la verifica di validità della transazioni dovrebbe risalire ricorsivamente fino alla prima transazione, tale verifica completa non deve però essere rieseguita ad ogni verifica di validità.

 

Figura A - Transaction Chain: sequenza dei cambiamenti di titolarità dei BTC

 

Che cosa convince i miner a partecipare alla rete Bitcoin

La Figura B, tratta da [B5], sono riportati i passi principali dell’attività dei miner.Mentre la rete Bitcoin nel suo complesso, per risolvere un blocco, impiega mediamente 10 minuti, la probabilità, per un singolo miner, di risolvere un blocco e riuscire a inserirlo nella Block Chain è nel tempo divenuta sempre più bassa. Oggi esistono pool di miner, a cui aderire. In questo modo si mette a disposizione potenza elaborativa, in cambio di un piccolo compenso relativamente certo e proporzionale alla propria capacità di calcolo. Secondo [B6], alla data del 5 marzo 2014, sulla base dei risultati dei precedenti 4 giorni, 4 pool detengono quasi il 70% della capacità computazionale della rete Bitcoin.
Il numero di nuovi BTC assegnati al miner, che risolve per primo un blocco, è predefinito, ma si dimezza ogni 4 anni (alla nascita di Bitcoin, nel 2009, il premio era di 50 BTC, ora è sceso a 25 e dal 2017 scenderà ulteriormente a 12,5). Attualmente il modello prevede che il numero di BTC creabili sia finito e pari a 21.000.000, di cui il 94% entro il 2024, mentre si stima che la produzione si concluda entro il 2140. (Fonte dei dati: [B7])
Si noti che il sistema Bitcoin utilizza la crittografia solo come meccanismo di validazione delle transazione e non come strumento per "nascondere" informazioni, in [B8] sono infatti riportate tutte le transazioni Bitcoin. Nonostante le transazioni siano tutte pubbliche,  la validazione rimane l’obiettivo più sfidante in considerazione della mancanza di un’autorità centrale che accerti la copertura delle transazioni prima di ufficializzarle (Double Spending). Per queste ragioni Bitcoin fa ricorso a ingegnosi protocolli (ad esempio descritti in [B9]) per permettere ai nodi di verificare sistematicamente l’operato dei miner e di escludere automaticamente le transazioni fraudolente. Questi protocolli sono ritenuti da molti la novità più rivoluzionaria di Bitcoin.

 

Figura B - I compiti dei miner

 

Altre crypto-valute in alternativa a Bitcoin

Dopo il successo di Bitcoin altre crypto-valute sono state lanciate e cresciute rapidamente; in [B10] ne sono censite 100 e tra queste segnaliamo Litecoin e Dogecoin, dove il proof-of-work basato sull’algoritmo di hash SHA256 di Bitcoin è stato sostituito con l’algoritmo Scrypt [B11]. L’utilizzo di Scrypt presenta vantaggi e svantaggi. Tra i vantaggi ad oggi esiste il fatto che hardware a larga diffusione come le schede grafiche dei PC sono sufficientemente competitive e la produzione di nuovo hardware specializzato dedicato al mining in Scrypt è più costosa di quello dedicato al mining in SHA256. Inoltre il tempo di conferma di una transazione Litecoin è di 2,5 minuti invece dei 10 di Bitcoin, rendendo così più veloci le conferme delle transazioni [B12].
Infine, alcuni aspetti sull’anonimato garantito da Bitcoin sono migliorabili. A questo proposito è stata proposta una soluzione denominata Zerocoin [B13]. Inizialmente Zerocoin è stata pensata per essere integrata in Bitcoin, mentre recentemente [B14] gli inventori di Zerocoin hanno abbandonato tale strada in favore della creazione di una crypto-valuta totalmente separata, proprio per rispondere alla forte domanda degli speculatori pronti a scommettere su nuove crypto-valute.

 

Torna all'articolo