Bitcoin viene spesso descritto come una forma di scarsità digitale. Ma a differenza dell’oro, dei terreni o degli oggetti da collezione, la sua scarsità non è fisica: è garantita dal software. Questo porta a una domanda evidente: come facciamo a sapere che esisteranno davvero solo 21 milioni di bitcoin?

Si tratta semplicemente di una promessa? Di un accordo sociale? Oppure è qualcosa che possiamo verificare in modo indipendente? Capire questo aspetto rivela una delle proprietà più importanti di Bitcoin, e anche perché la self-custody è fondamentale: Bitcoin non si basa sulla fiducia.

Nella finanza tradizionale, l’offerta di moneta dipende in ultima analisi dalle istituzioni. Le banche centrali possono espandere o contrarre la massa monetaria. I governi possono cambiare le regole. Le politiche evolvono nel tempo. Bitcoin funziona in modo diverso. È un sistema distribuito in cui ogni partecipante verifica autonomamente le regole. Nessuna autorità decide quanti coin esistono: sono invece tutti i nodi a far rispettare le stesse regole di consenso.

Una di queste regole stabilisce come vengono creati nuovi bitcoin: la block subsidy. I nuovi bitcoin vengono emessi esclusivamente quando i miner producono blocchi validi, e ogni blocco include una ricompensa fissa che segue un programma prevedibile. Poiché ogni nodo verifica questa regola in modo indipendente, qualsiasi tentativo di inflazione non valido viene automaticamente respinto dalla rete. Non esiste un amministratore centrale in grado di aggirare questo meccanismo.

Analisi della formula matematica che definisce l’offerta totale di bitcoin

Progettato per essere prevedibile

Quando Bitcoin è stato lanciato nel 2009, i miner ricevevano 50 BTC per blocco. Ma questa ricompensa non rimane costante. Ogni 210.000 blocchi, circa ogni quattro anni, la ricompensa per blocco viene dimezzata. Questo evento è noto come halving.

L’offerta totale di quasi 21 milioni di bitcoin si ottiene sommando l’emissione lungo tutti i 32 periodi di halving. Per ogni periodo, la ricompensa viene calcolata partendo dai 50 BTC iniziali per blocco e dividendoli per 2i, dove i rappresenta il numero di halving già avvenuti.

Poiché ogni periodo comprende 210.000 blocchi, il totale emesso in ciascun periodo è pari a 210.000/tempo (50 / 2i). Questo significa che il primo periodo (i=0) aggiunge 210.000 × 50 BTC, il secondo periodo (i=1) aggiunge 210.000 × 25 BTC, e così via.

La sequenza si presenta così:

  • 0 halving: 50 BTC per blocco: 10.500.000 BTC emessi in questo periodo
  • 1 halving: 25 BTC per blocco: 5.250.000 BTC emessi in questo periodo
  • 2 halving: 12,5 BTC per blocco: 2.625.000 BTC emessi in questo periodo
  • 3 halving: 6,25 BTC per blocco: 1.312.500 BTC emessi in questo periodo
  • 4 halving: 3,125 BTC per blocco: 656.250 BTC emessi in questo periodo (siamo qui)
  • …e così via

Questa riduzione geometrica fa sì che nel tempo vengano creati sempre meno nuovi bitcoin, avvicinandosi asintoticamente allo zero. Le ultime frazioni di bitcoin verranno minate intorno all’anno 2140, ma il punto chiave è questo: il limite dei 21 milioni emerge naturalmente dalla formula dell’halving, senza mai essere raggiunto del tutto, perché la matematica garantisce che saremo sempre “a metà strada”.

Non devi fidarti della matematica: puoi verificarla tu stesso. Puoi controllare il codice che la implementa e, ancora di più, puoi eseguire un nodo Bitcoin per calcolare direttamente l’emissione.

Far rispettare la matematica

Il vero punto di forza di questa formula verificabile sta nel fatto che viene fatta rispettare in modo decentralizzato. Ogni partecipante che esegue un nodo Bitcoin agisce come un revisore indipendente della politica monetaria.

Se un miner prova a includere un blocco che viola le regole di emissione, ad esempio, richiedendo una ricompensa superiore alla block subsidy consentita, quel blocco viene immediatamente riconosciuto come non valido da tutti i nodi. Di conseguenza, viene rifiutato e non viene propagato nella rete, impedendogli di diventare parte della blockchain.

Questo processo garantisce che il limite massimo di offerta venga mantenuto esclusivamente attraverso una verifica tecnica condivisa tra tutti i partecipanti della rete. La formula monetaria di Bitcoin viene fatta rispettare grazie alla decentralizzazione: ogni nodo completo agisce come un revisore indipendente della politica monetaria.

Se un miner tenta di creare un blocco che viola le rigide regole di emissione, ad esempio richiedendo una block subsidy superiore al consentito, la rete di nodi lo identifica immediatamente come non valido. Di conseguenza, il blocco viene rifiutato, non viene propagato e non potrà mai essere aggiunto alla blockchain.

Verificare il codice

Ora che abbiamo capito come funziona la matematica e che i nodi della rete fanno rispettare queste regole, il passo successivo è verificare direttamente il codice che le implementa. Nel repository GitHub di Bitcoin Core (l’implementazione di riferimento di Bitcoin) possiamo trovare tutto il codice sorgente del client, inclusi i componenti di consenso. In questo esempio utilizzeremo la versione stabile più recente al momento della scrittura, la 31.x.

Partiamo dal file src/validation.cpp, dove avviene gran parte della logica principale, come puoi vedere nel blocco di codice seguente tra le righe 1835 e 1848.

Questo blocco è composto da due parti che definiscono la ricompensa: la prima calcola a quale halving ci troviamo attualmente e imposta la ricompensa a 0 dopo 64 halving.

int halvings = nHeight / consensusParams.nSubsidyHalvingInterval

Questa riga calcola l’halving corrente dividendo l’altezza del blocco per l’intervallo di halving costante. Le variabili coinvolte sono:

  • nHeight: il numero attuale di blocchi nella blockchain (block height)
  • consensusParams.nSubsidyHalvingInterval: il parametro fisso impostato a 210.000 blocchi, come definito in /src/kernel/chainparams.cpp, che indica ogni quanti blocchi avviene un halving
  • int halvings: il risultato intero di questa divisione, arrotondato per difetto, che rappresenta il periodo di halving corrente

Al momento della scrittura, siamo al blocco 946227. Usiamola come esempio per visualizzare questa funzione:

946227 / 210000 = 4,505842857

Il risultato viene arrotondato per difetto a 4 (e non per eccesso come si farebbe normalmente).

Questo porta a:
int halvings = 4

Subito dopo troviamo if (halvings >= 64) return 0;, che può sembrare strano, dato che Bitcoin prevede circa 32 halving. In realtà si tratta di una correzione per prevenire un problema noto come overflow di memoria. Senza questo controllo, dopo 64 halving il valore si azzererebbe e ripartirebbe da capo, portando il protocollo a emettere altri 21 milioni di bitcoin in ulteriori 64 halving — e così via all’infinito, se non venisse gestito correttamente.

Subito dopo troviamo CAmount nSubsidy = 50 * COIN, che corrisponde alla formula 50 / 2i vista nella sezione precedente. Qui COIN è definito come 100.000.000 in /src/consensus/amount.h, ovvero il numero di satoshi (l’unità più piccola di bitcoin) contenuti in un bitcoin.

Il valore nSubsidy, che rappresenta la ricompensa iniziale di 50 BTC (cioè 5 miliardi di satoshi), ha una rappresentazione binaria a 33 bit:
100101010000001011111001000000000

Questa lunghezza è rilevante perché il codice utilizza operazioni bitwise per effettuare le divisioni in modo efficiente durante gli halving.

A ogni halving, l’istruzione
nSubsidy >>= halvings; return nSubsidy;
sposta questa sequenza di bit verso destra, rimuovendo di fatto una cifra. In termini binari, questo equivale a dividere per due — esattamente ciò che accade durante ogni halving.

Se hai dato un’occhiata ai link forniti in questa spiegazione, potresti aver notato che nel file /src/consensus/amount.h è presente questo frammento di codice:

A questo punto potresti pensare: “Quindi è qui che si trova il limite dei 21 milioni di coin”, e in parte avresti ragione. Ma non è del tutto esatto. Perché? Perché questa non è la regola principale che stabilisce il limite, bensì un controllo di sicurezza.

Ciò che fa questo blocco di codice è impedire che l’offerta superi i 2,1 quadrilioni di satoshi, cioè 21 milioni di bitcoin: una soglia che sappiamo non verrà mai raggiunta. Serve come protezione nel caso in cui qualcuno dovesse scoprire un bug capace di creare coin dal nulla, come accadde con il Value Overflow Bug del 2010, che permise a un attaccante di generare 184 miliardi di bitcoin, o con la Duplicate Inputs Vulnerability del 2018, che consentiva di spendere la stessa coin due volte.

Le regole potrebbero mai cambiare?

La domanda naturale che segue è se il codice, essendo software, possa semplicemente essere aggiornato per aumentare l’offerta di coin. Dal punto di vista tecnico, chiunque è libero di modificare il software open source. Ma nella pratica, cambiare la politica monetaria di Bitcoin è estremamente difficile.

Le regole di consenso cambiano solo se una larga maggioranza degli utenti decide volontariamente di adottarle. La storia lo dimostra: anche modifiche minori al protocollo richiedono anni di coordinamento. Un cambiamento inflazionistico comprometterebbe alla base la proposta di valore di Bitcoin, ed è quindi probabile che il mercato rifiuterebbe di adottare una nuova versione con queste caratteristiche.

Il limite massimo di offerta è quindi garantito dal consenso tra i partecipanti al mercato.

Conclusione

L’offerta limitata di Bitcoin non è garantita da decisioni governative, vincoli fisici o fiducia nelle istituzioni. Si basa invece su tre pilastri: un programma di emissione trasparente, la verifica indipendente da parte di ogni nodo e la possibilità per gli utenti di scegliere quali regole accettare.

A differenza dei sistemi tradizionali, che dipendono dalle decisioni di autorità centrali, la politica monetaria di Bitcoin è integrata direttamente in una rete di partecipanti che si verificano a vicenda. Il risultato è un sistema monetario la cui offerta può essere controllata da chiunque, in qualsiasi momento.

Questo garantisce non solo che l’offerta sia limitata, ma soprattutto che gli utenti non debbano fidarsi che questa regola venga rispettata: possono verificarlo autonomamente.


FAQ


Non hai ancora un BitBox?

Mantenere le tue criptovalute al sicuro non deve essere complicato. Gli hardware wallet BitBox conservano le chiavi private delle tue criptovalute offline, così puoi gestire i tuoi fondi in modo sicuro.

Sia il BitBox02 Nova che il BitBox02 sono disponibili anche in una versione dedicata solo a Bitcoin, con un firmware radicalmente ottimizzato: meno codice significa meno punti vulnerabili, migliorando ulteriormente la sicurezza quando conservi solo Bitcoin.

Ordina il BitBox02 Nova o il BitBox02 nel nostro shop!


Shift Crypto è un'azienda privata con sede a Zurigo, in Svizzera. Il nostro team di contributori di Bitcoin, esperti di criptovalute e ingegneri della sicurezza crea prodotti che consentono ai clienti di godere di un percorso senza stress dal livello principiante a quello di padronanza nella gestione delle criptovalute. BitBox02, il nostro hardware wallet di seconda generazione, consente agli utenti di memorizzare, proteggere e effettuare transazioni in Bitcoin e altre criptovalute con facilità - insieme al suo compagno software, la BitBoxApp.