Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti

Nel numero:

295 giugno
, anno 2023

Bitcoin, blockchain e criptovaluta

VIII parte: Difficulty target, halving, consenso distribuito

Marco Migliorni
Marco Migliorini

Marco Migliorini è un ingegnere informatico con un'esperienza più che decennale nella progettazione e nello sviluppo di sistemi software basati su architettura Java EE.

Negli ultimi anni si è avvicinato al mondo delle blockchains permissionless e dell'economia di scuola austriaca, trasformando l'iniziale curiosità in una veemente passione per questi argomenti.

Dopo un periodo di intensa formazione, ha intrapreso l'attività di libero professionista nel settore blockchain/web3.

Attualmente fornisce servizi di consulenza e sviluppo di applicazioni decentralizzate basate su blockchains Ethereum e Polygon, ed eroga formazione su Bitcoin e Lightning Network.

La sua mission è contribuire alla divulgazione e all'adozione di queste tecnologie, nonché alla conoscenza delle tematiche socioeconomiche che ne rappresentano la base.

Per maggiori informazioni visitare il sito www.marcomigliorini.com

Bitcoin

Bitcoin, blockchain e criptovaluta

VIII parte: Difficulty target, halving, consenso distribuito

Picture of Marco Migliorini

Marco Migliorini

  • Questo articolo parla di: Internet & Digital, Sicurezza informatica

L’aggiustamento della difficoltà

Nel precedente articolo abbiamo visto che ogni 10 minuti circa, tutti i miner della blockchain competono per risolvere l’ennesimo puzzle crittografico e aggiudicarsi la ricompensa economica in termini di bitcoin. È ragionevole aspettarsi che, al crescere del valore di questo asset, aumentino anche le entità interessate a entrare nel processo di mining, comportando un conseguente aumento della potenza di calcolo della rete. Tale potenza di calcolo viene definita in termini di numero di hash risolti al secondo: hashrate o H/s.

A causa di questo aumento, si avrebbe una diminuzione dei tempi di risoluzione della prova di lavoro; ma, come vedremo più avanti, è necessario che questa tempistica sia mantenuta costante per minimizzare gli sprechi energetici del sistema.

Come si fa quindi a mantenere costante il tempo di risoluzione di un blocco, mentre la potenza di calcolo della rete può variare a piacimento, sia verso l’alto che verso il basso? L’idea che ha avuto Satoshi Nakamoto, l’inventore di Bitcoin, è stata quella di utilizzare un parametro variabile per settare la difficoltà dei calcoli crittografici da eseguire, e regolarlo in maniera inversamente proporzionale alla potenza di calcolo del sistema.

Difficulty target

Questo parametro altro non è che l’obiettivo di difficoltà o difficulty target. Tale valore è stabilito a priori dall’algoritmo di Bitcoin e viene fornito a ogni nodo della rete sia per effettuare i controlli di validazione dei blocchi, che per consentire ai miner di calcolare l’hash dell’header del blocco attualmente in elaborazione.

Per comprendere meglio come opera questo parametro, è necessario avere ben a mente come funziona il sistema numerico esadecimale [1], su cui si basa la struttura degli hash di cui stiamo discutendo. Noto il funzionamento di questo sistema numerico, possiamo osservare che l’obiettivo di difficoltà non è altro che un numero binario di 256 bit, ossia 64 caratteri esadecimali, con all’inizio un certo numero di zero; per esempio:

000000000000000000044daaggg3f398aa755r28fd42426ad00fffe3d2ef40cc

Si capisce quindi che, aumentando o diminuendo il numero di zero in testa all’obiettivo di difficoltà, si diminuisce o si aumenta la probabilità di trovare una soluzione alla proof of work, che soddisfi tale vincolo. Infatti, tutte le volte che il numero di zero in testa aumenta di uno, lo spazio di ricerca delle possibili soluzioni del puzzle crittografico diminuisce, ossia aumenta la difficoltà d’elaborazione; viceversa, tutte le volte che il numero di zero in testa diminuisce di uno, lo spazio di ricerca aumenta, ossia si semplifica la difficoltà di calcolo.

Un esempio

Un esempio numerico può aiutare a capire meglio quanto appena asserito. Supponiamo per semplicità che l’attuale obiettivo di difficoltà sia il seguente:

00000000000000000000000000000000000000000000000000000000000fffff

vale a dire 59 “zero” iniziali seguiti da 5 “f”. Quando un miner tenta di determinare il nonce il cui hash risultante rispetti tale difficoltà, ha uno spazio delle possibili soluzioni pari a 69905 possibilità, in quanto

69905 = 160+161+162+163+164

Aumentando il numero di zero in testa al difficulty target, si ottine il seguente hash:

000000000000000000000000000000000000000000000000000000000000ffff

ossia 60  “zero” iniziali seguiti da 4 “f”, e quindi l’insieme delle possibili soluzione adesso è ampio

160+161+162+163

vale a dire 4396 possibilità, ossia circa un sedicesimo rispetto a prima (69905/16 ~ 4369).

Viceversa, diminuendo il numero di zero in testa al parametro, si ottiene il seguente hash:

0000000000000000000000000000000000000000000000000000000000ffffff

ossia 58 “zero” iniziali seguiti da 6 “f”, e quindi l’insieme delle possibili soluzione adesso è ampio 1118481 possibilità in quanto:

1118481 = 160+161+162+163+164+165

E in questo caso, si tratta di un valore maggiore circa sedici volte rispetto a prima (1118481/16 ~ 69905).

Aggiustamento del tempo di risoluzione

All’incirca una volta ogni due settimane, o meglio, ogni 2016 blocchi “minati”, l’algoritmo di Bitcoin controlla il tempo di risoluzione dei blocchi, per vedere se questo si è mantenuto intorno al valore di riferimento (10 minuti). In caso affermativo l’obiettivo di difficoltà rimane invariato: altrimenti viene regolato con un adeguato aggiustamento per ripristinare il disequilibrio introdotto sul tempo di calcolo a causa dell’oscillazione dell’hashrate del sistema.

La variazione massima che questo parametro può subire a ogni controllo è pari a un fattore 4, sia in aumento che in diminuzione; quindi, se la regolazione richiesta è maggiore di questo fattore, saranno necessarie più iterazioni per raggiungere l’obiettivo. Questo processo si chiama aggiustamento o retargeting della difficoltà di Bitcoin.

Sul sito btc.com [2] sono presenti i dati in tempo reale di tutti i parametri di cui abbiamo parlato in questo paragrafo. Come si può vedere, a oggi (giugno 2023), l’hash rate della rete supera i 365 EH/s (E = esa = 1018): un cifra enorme!

 

Il fenomeno dello halving e lo stock-to-flow

Bitcoin è progettato per avere un numero massimo di monete in circolazione pari a (quasi) 21˙000˙000, che saranno distribuite in maniera decrescente durante l’arco temporale 2009-2140, seguendo una logica di dimezzamento d’emissione delle nuove coin ogni 210˙000 blocchi “minati”, ossia all’incirca ogni 4 anni.

Figura 1 – Il processo di halving.
Figura 1 – Il processo di halving.

 

Questo processo di dimezzamento viene definito halving, e segue una curva d’emissione come quella riportata nella figura 1 (linea arancione). Come si vede dal grafico, agli albori ogni blocco minato ricompensava con 50 monete, dal primo halving (2012) questo numero è sceso a 25, dal secondo (2016) è sceso a 12.5; con il terzo, quello attuale, è arrivato a 6.25 e, per ogni successivo halving, si continuerà a dimezzare la reward dei minatori fino a raggiungere 0  all’incirca nel 2140. Quindi le ricompense per i minatori, che partecipano al funzionamento e alla sicurezza del sistema, diminuiscono nel tempo.

Garantire la sicurezza con le ricompense

Di conseguenza, con il dimezzamento delle ricompense, l’incentivo economico a far parte del network si affievolirebbe, e questo porterebbe Bitcoin a essere esposto a vari tipi di attacchi informatici, se queste quantità non venissero in qualche modo reintegrate.

Per ovviare a questo problema, l’inventore del sistema ha progettato l’algoritmo delle ricompense in maniera intelligente, ossia ha integrando la reward del blocco minato con tutte le commissioni pagate dai vari utenti che eseguono transazioni in quel blocco. Sebbene agli albori di Bitcoin questa frazione fosse insignificante rispetto alla ricompensa del mining, man mano che il tempo passa e bitcoin si apprezza di valore, le commissioni di transazioni diventano via via più significative, tendendo a essere la parte più importante dei guadagni dei minatori. In questo modo, si assicura l’incentivo economico a operare in un settore così competitivo e costoso anche quando la reward del blocco sarà 0.

Va notato come già ad oggi (giugno 2023) ci sono state alcune occasioni in cui il miner che ha risolto il blocco ha guadagnato di più dalle fee pagate dagli utenti che non dalla ricompensa del blocco!

Rarità delle monete

Una delle principali conseguenze che il fenomeno dello halving ha su Bitcoin riguarda il tema della scarsità, o meglio della rarità delle sue monete. Cerchiamo di approfondire questo argomento in maniera semplice ma esaustiva.

Per capire quanto una materia prima sia rara, ossia difficilmente inflazionabile da tutti gli attori di mercato, e quindi quanto sia il suo valore in termini monetari, si utilizza il cosidetto stock-to-flow ratio, o S2F, che è il rapporto fra la quantità esistente di quella commodity e la sua produzione annuale.

Detto in altri termini, lo S2F è un numero che definisce quanti anni sono necessari per raddoppiare la quantità in circolazione della materia prima che si stiamo valutando. Per esempio, a giugno 2023, l’oro ha uno S2F di ~63: questo vuol dire che, attualmente, per raddoppiare la quantità di oro disponibile nel mondo sono necessari circa 63 anni. L’argento, sempre a giugno 2023, ha uno S2F di ~25, il che spiega il suo minor voler economico: in molto meno tempo si può raddoppiare il circolante della commodity e far scendere il suo valore per unità, a causa della legge della domanda e dell’offerta.

Nota Bene: è la scarsità di una materia prima che ne defisce il suo valore economico! Si potrebbe obiettare che la scarsità da sola non è sufficiente a definire il valore economico di un bene, ma che questa vada considerata in relazione all’utilità di quel bene, e in effetti è così. Tuttavia, parlando di materie prime, ossia beni da cui derivano tutti gli altri beni, è sottinteso che queste risorse siano di elevata utilità!

Lo Stock to Flow di bitcoin

A questo punto è lecito chiederci quant’è lo S2F di bitcoin, ossia quanto questo sia scarso, così da poterlo paragonare alle commodities. Ebbene, proprio a causa del fenomeno dello halving, unito alla sua supply limitata (~21˙000˙000), questo parametro varia notevolmente nel tempo, subendo un incremento esponenziale con il passare degli anni.

Nella seguente tabella si può vedere il valore dello S2F di bitcoin al raggiungimento dei suoi primi halving.

Tabella 1 – Valore S2F al raggiungimento dei primi halving.
Tabella 1 – Valore S2F al raggiungimento dei primi halving.

 

Nel grafico di figura 2 si può osservare la comparazione fra lo stock-to-flow ratio di bitcoin e quello dell’oro e dell’argento, che subiscono piccolissime variazioni nel tempo.

Figura 2 – Comparazione fra lo stock-to-flow ratio di bitcoin e quello dell’oro e dell’argento.
Figura 2 – Comparazione fra lo stock-to-flow ratio di bitcoin e quello dell’oro e dell’argento.

 

A oggi, giugno 2023, lo S2F di bitcoin è paragonabile a quello dell’oro (nel 2017 era paragonabile a quello dell’argento), ma già dal prossimo halving lo stock-to-flow ratio di bitcoin sarà più del doppio di quello dell’oro, e continuerà a salire, diventanto +INFINITO nel 2140, quando finirà l’emissione di nuovi bitcoin durante il processo di mining. Quindi, bitcoin risulterà l’asset più scarso che sia mai esistito nel mondo e, se questo primato sarà accompagnato dal riconoscimento della sua utilità a livello di popolazione, avrà tutte le carte in regola per diventare la nuova riserva di valore globale.

Due considerazioni su bitcoin come riserva di valore

Va notato come, a differenza dell’oro che è materiale, l’immaterialità di bitcoin gli conferisce tutta una serie di vantaggi: facilità di custodia, velocità di spostamento, divisibilità elevata, possibilità di pagamenti online, non contraffattibilità, non confiscabilità, e così via.

E quindi, grazie a questo bene, saremmo capaci di preservare la nostra richezza nel tempo, anche per generazioni, senza la necessità di fare investimenti, più o meno rischiosi, per cercare di non perdere potere d’acquisto.

 

Il raggiungimento del consenso distribuito

Vediamo adesso come Bitcoin riesce a raggiungere il consenso in maniera del tutto naturale e spontanea. I fattori che concorrono a determinare un tale risultato sono tre:

  1. l’unanimità da parte di tutti gli attori del network;
  2. l’autonomia di ogni full node nell’eseguire alcune operazioni;
  3. l’utilizzo di incentivi per promuovere comportamenti corretti.

Vediamoli di seguito più in dettaglio.

Unanimità

L’unanimità da parte di tutti gli attori del network, nel riconoscere che la blockchain valida, ossia la catena detentrice della verità, è sempre quella più lunga, cioè quella che contiene più prova di lavoro al suo interno.

Autonomia

Ogni full node ha autonomia nell’eseguire le seguenti operazioni:

  • verifica indipendente di ogni transazione;
  • creazione indipendente del nuovo blocco e ricerca della relativa soluzione al POW;
  • verifica indipendente di ogni blocco;
  • aggregazione indipendente dei blocchi alla blockchain.

Incentivi

Un terzo fattore che facilita il raggiungimento del consenso distribuito è la presenza di incentivi per promuovere il corretto comportamento dei partecipanti al network, penalizzando al contempo chi cerca di operare in modo sleale.

Consenso distribuito e spontaneo

Dalla combinazione di questi elementi, si capisce che, il consenso in Bitcoin non è ottenuto in maniera esplicita attraverso un coordinamento dei vari attori della rete, ma si manifesta in maniera indipendente e asincrona su ogni nodo (distribuito), semplicemente grazie al rispetto delle regole codificate nell’algoritmo del sistema e alla teoria dei giochi a queste associata (spontaneo o emergente).

Grazie al consenso distribuito e al riconoscimento della catena più lunga come unica detentrice della verità, si può capire perché si parli di immutabilità della blockchain, ossia perché si considerino le transazioni qui contenute non più modificabili.

Le garanzie fornite dalla blockchain

Come abbiamo visto, ogni blocco valido aggiunto alla blockchain contiene al suo interno l’hash dell’header del blocco precedente, che a sua volta contiene quello prima ancora e così via a ritroso fino al blocco genesi. Inoltre, nell’header di ogni blocco è presente il campo merkle root, ossia una rappresentazione compatta di tutte le transazioni contenute all’interno di quel blocco. Quindi, alterare una qualsiasi transazione nel passato implica modificare il merkle root del blocco che la contiene e consumare molta energia per ricalcolarne l’hash dell’header.

A cascata, questa modifica implica di dover ricalcolare tutti gli hash degli header dei blocchi successivi, in quanto direttamente collegati, e spendere ancora più energia. Se ne deduce che più la transazione da alterare è “vecchia”, più lo sforzo energetico cresce perché aumentano i calcoli crittografici da compiere. Si può dimostrare matematicamente che, fino a quando il 51% dei nodi si comporta in modo onesto, una transazione contenuta in almeno 6 blocchi precedenti a quello attuale è immutabile, in quanto l’energia da spendere per tale operazione è infinitamente più grande di qualunque beneficio che si potrebbe ottenere da questa alterazione.

Nota Bene: proprio per questa ragione, quando si riceve una transazione Bitcoin, è buona norma aspettare un’ora prima di darla per certa e non alterabile, in maniera tale che siano stati generati altri 6 blocchi.

 

Conclusioni

In questo ottavo articolo della serie Bitcoin abbiamo continuato la panoramica sul funzionamento di questo sistema, arrivando ad approfondire i concetti di difficulty target, halving e consenso distribuito. Nel prossimo articolo completeremo il discorso sul funzionamento, affronteremo l’argomento del fork.

 

Riferimenti

[1] La voce Wikipedia “Sistema numerico esadecimale”
https://it.wikipedia.org/wiki/Sistema_numerico_esadecimale

 

[2] Dati sul Difficulty target & Hashrate
https://btc.com/stats/diff

 

[3] Dati sull’Halving di Bitcoin
https://www.bitcoinblockhalf.com/

 

[4] Dati sul modello Stock-to-Flow di Bitcoin
https://www.lookintobitcoin.com/charts/stock-to-flow-model/

 

[5] La voce Wikipedia “Teoria dei giochi”
https://it.wikipedia.org/wiki/Teoria_dei_giochi

 

[6] Andreas M. Antonopoulos, Mastering Bitcoin, 2nd edition. O’Reilly, 2017
https://www.oreilly.com/library/view/mastering-bitcoin-2nd/9781491954379/

 

 

Marco Migliorni
Marco Migliorini

Marco Migliorini è un ingegnere informatico con un'esperienza più che decennale nella progettazione e nello sviluppo di sistemi software basati su architettura Java EE.

Negli ultimi anni si è avvicinato al mondo delle blockchains permissionless e dell'economia di scuola austriaca, trasformando l'iniziale curiosità in una veemente passione per questi argomenti.

Dopo un periodo di intensa formazione, ha intrapreso l'attività di libero professionista nel settore blockchain/web3.

Attualmente fornisce servizi di consulenza e sviluppo di applicazioni decentralizzate basate su blockchains Ethereum e Polygon, ed eroga formazione su Bitcoin e Lightning Network.

La sua mission è contribuire alla divulgazione e all'adozione di queste tecnologie, nonché alla conoscenza delle tematiche socioeconomiche che ne rappresentano la base.

Per maggiori informazioni visitare il sito www.marcomigliorini.com

Facebook
Twitter
LinkedIn
Picture of Marco Migliorini

Marco Migliorini

Marco Migliorini è un ingegnere informatico con un'esperienza più che decennale nella progettazione e nello sviluppo di sistemi software basati su architettura Java EE.

Negli ultimi anni si è avvicinato al mondo delle blockchains permissionless e dell'economia di scuola austriaca, trasformando l'iniziale curiosità in una veemente passione per questi argomenti.

Dopo un periodo di intensa formazione, ha intrapreso l'attività di libero professionista nel settore blockchain/web3.

Attualmente fornisce servizi di consulenza e sviluppo di applicazioni decentralizzate basate su blockchains Ethereum e Polygon, ed eroga formazione su Bitcoin e Lightning Network.

La sua mission è contribuire alla divulgazione e all'adozione di queste tecnologie, nonché alla conoscenza delle tematiche socioeconomiche che ne rappresentano la base.

Per maggiori informazioni visitare il sito www.marcomigliorini.com

Tutti gli articoli
Nello stesso numero
Loading...

Digital revolution: trasformare le aziende in ecosistemi digitali

X parte: I dati come prodotto

Digital revolution: La teoria

XI parte: Una panoramica sull’approccio ai dati

Nella stessa serie
Loading...

Bitcoin, blockchain e criptovaluta

XIII parte: L’impatto energetico e ambientale di Bitcoin

Bitcoin, blockchain e criptovaluta

XII parte: L’impatto energetico e ambientale di Bitcoin

Bitcoin, blockchain e criptovaluta

XI parte: Il futuro di Bitcoin

Bitcoin, blockchain e criptovaluta

X parte: Il processo di evoluzione di Bitcoin

Bitcoin, blockchain e criptovaluta

IX parte: Fork

Bitcoin, blockchain e criptovaluta

VII parte: Validazione e mining in Bitcoin

Bitcoin, blockchain e criptovaluta

VI parte: Come funziona Bitcoin. La blockchain

Bitcoin, blockchain e criptovaluta

V parte: Come funziona Bitcoin. Transazioni e UTXO

Bitcoin, blockchain e criptovaluta

IV parte: Come funziona Bitcoin. Chiavi, indirizzi e wallet

Bitcoin, blockchain e criptovaluta

III parte: Come funziona Bitcoin. Rete e crittografia

Bitcoin, blockchain e criptovaluta

II parte: Perché è nato Bitcoin

Bitcoin, blockchain e criptovaluta

I parte: Breve storia del denaro

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte