Fermata #58 - Bitcoin Training: Soft e Hard Fork
Cos’è un fork? Qual è la differenza tra soft fork e hard fork? E perché è importante evitare il più possibile questi ultimi?
Soft fork, hard fork: quando si parla di aggiornamenti alle regole di consenso di Bitcoin - ma anche di altre criptovalute - questi termini sono all’ordine del giorno. E’ dunque importante capire che cosa indichino, quale sia la differenza tra loro e anche quale sia il differente approccio della comunità Bitcoin rispetto a quella di Ethereum o di altre criptovalute. La domanda iniziale è: che cos’è un fork?
Qui puoi ascoltare un estratto gratuito di Bitcoin Train Podcast!
Per accedere alla completa versione narrata dell’articolo ed entrare nel gruppo telegram dedicato alla newsletter, abbonati a Bitcoin Train!
La biforcazione della blockchain
Quando si parla della blockchain di Bitcoin come di un database distribuito, si intende ridondato tra le decine di migliaia di nodi che costituiscono la rete: ognuno di questi verifica e conserva nel proprio hard disk tutte le informazioni della blockchain, senza che queste vengano coordinate da un’entità terza. Come spiegato nella fermata #46, le informazioni tra un nodo e l’altro vengono propagate tramite il gossip protocol: non arrivano uniformemente a tutta la rete nello stesso istante. Ogni peer riceve i dati, li verifica e li inoltra ai peer limitrofi e questo implica, per i limiti fisici della rete Internet, una latenza temporale nella ricezione delle informazioni tra tutti i nodi.
Supponiamo di trovarci all’altezza del blocco numero 3. Quando un miner trova una soluzione alla Proof-of-Work e inoltra il blocco successivo ai propri peer, questi lo ricevono prima di altri nodi. Nello stesso momento un altro miner trova anch’esso una soluzione valida alla Proof-of-Work e invia il suo blocco ai propri peer. In questa situazione nella rete si propagano due blocchi diversi, potenzialmente entrambi validi. Alcuni nodi - quelli più vicini al nodo del primo miner - ricevono prima il blocco che chiamiamo 4a, altri - quelli più vicini al nodo del secondo miner - ricevono prima il blocco 4b.
Nel giro di poco i nodi vicini al primo miner vedono arrivare anche il blocco 4b e i nodi vicini al secondo ricevono anche il blocco 4a. Tutti i peer di rete, dunque, si ritrovano con due versioni potenzialmente valide del blocco 4. I primi considerano valido per ora il blocco 4a ma non scartano il blocco 4b: lo mantengono collegato al blocco 3 in una blockchain che, a questo punto, appare biforcata. Si crea quello che viene definito un fork. I nodi che hanno ricevuto prima il blocco 4b si comportano in modo analogo, considerando questo come quello valido e mantenendo il 4a una catena forkata.
Cosa accade a questo punto? I nodi di mining che ritengono valido il blocco 4a iniziano a cercare la soluzione alla Proof-of-Work del blocco successivo, il blocco 5a. Gli altri minano invece sul 4b, cercando di trovare il blocco 5b.
Supponiamo che a trovare una soluzione sia un miner che aveva dato per buono il blocco 4b. Il nodo propaga al resto della rete il suo blocco candidato 5b: tutti i nodi che avevano considerato valido il blocco 4b vedono che quello successivo è compatibile con la catena e lo aggiungono semplicemente alla loro blockchain principale. I nodi che invece avevano considerato valido il blocco 4a notano che il 5b non è compatibile con la catena ma con il blocco 4b che avevano tenuto da parte in una catena forkata. Si trovano di fronte in pratica a due blockchain, una con un blocco in più dell’altra.
Quali sono le regole del protocollo in questo caso? Come scriveva Satoshi Nakamoto nel White Paper di Bitcoin, “i nodi considerano sempre la catena più lunga come quella corretta e continueranno a lavorare per estenderla”. Non esistendo il blocco 5a, la catena valida è inevitabilmente quella che arriva al 5b, perché avendo un blocco in più è più lunga e ha quindi accumulato più potenza computazionale. I nodi che avevano quindi dato per valido il blocco 4a scartano quest’ultimo, considerano la catena corretta quella contenente i blocchi 4b e 5b e iniziano a cercare una soluzione alla Proof-of-Work per il blocco 6b.
Quanto descritto succede frequentemente nella rete Bitcoin: certi tipi di fork vengono risolti nella gran parte dei casi nel giro di un blocco. Questo, tuttavia, è un fork tecnico: cosa succede quando si vuole cambiare una regola di consenso del protocollo?
Hard Fork
Il termine hard fork sta a indicare quando una blockchain, una volta forkata, non converge più e le due catene continuano a svilupparsi l’una indipendentemente dall’altra. In genere questo avviene quando si vuole cambiare il consenso del protocollo allentando le regole: blocchi con parametri che inizialmente non sono considerati validi vengono presi per buoni.
Supponiamo che io voglia aumentare la dimensione dei blocchi di Bitcoin a 10 MB e che questa idea abbia ottenuto un buon consenso tra i partecipanti della rete. Sviluppo il software che implementa questa modifica - chiamiamolo Bitcoin Scam - e ne pubblico il codice, dicendo che a partire dal blocco numero 800.000 potrà essere utilizzato da chiunque. I nodi di mining che sono d’accordo con me al blocco 800.000 inizieranno a costruire un blocco, l’800.001, non compatibile con le regole di protocollo del codice Bitcoin originale ma compatibile con le nuove regole di Bitcoin scam.
Quando un miner che ha adottato Bitcoin Scam trova una soluzione alla Proof-of-Work propaga alla rete il proprio blocco che viene accettato solamente da chi utilizza il nuovo software. I miner che hanno invece rifiutato l’aggiornamento continuano a costruire blocchi di dimensione inferiore e a propagarli alla rete Bitcoin originale. In questo modo dal blocco 800.001 il consenso si divide, la blockchain si forka: la biforcazione che mantiene le regole originarie è Bitcoin, quella con le nuove regole è Bitcoin Scam.
Il processo appena descritto è quanto accaduto, per esempio, durante la Blocksize War con i casi di Bitcoin XT e Bitcoin Classic. E’ anche ciò che è successo con Bitcoin SV, nato come hard fork di Bitcoin Cash.
In breve, quando viene programmata una modifica al consenso che allarga le regole ed è quindi non retrocompatibile, perché i vecchi nodi considerano come non validi i nuovi blocchi, gli scenari sono due:
Tutti i nodi della rete aggiornano il software e adottano le nuove regole;
Parte dei nodi non accetta le nuove regole e continua a sviluppare la catena originale: in questo caso si ha uno split della rete, ovvero un hard fork.
Soft Fork
Non tutti i cambiamenti al consenso implicano un hard fork. Quando le regole vengono ristrette - quando cioè elementi che prima venivano considerati validi vengono successivamente considerati invalidi - le modifiche sono compatibili con le versioni del vecchio software: questo perché i nodi non aggiornati continuano ad approvare ciò che approvavano anche prima, senza sapere che i nodi aggiornati gli inoltrano blocchi con parametri più stringenti dei loro.
In sostanza, per essere compatibili con il futuro, le transazioni e i blocchi creati con le nuove regole devono essere validi anche in base alle vecchie regole ma non viceversa, perché la storia passata è già acquisita.
I più attenti di voi potrebbero chiedersi: quindi come avviene la separazione della catena in un soft fork? La risposta è che non avviene. Un soft fork non è un fork. Il termine è stato introdotto solo per distinguere il metodo di aggiornamento dagli hard fork.
Sarebbe però sbagliato pensare che implementare un soft fork sia una passeggiata di salute. Dato che crea vincoli di consenso aggiuntivi restringendo le regole, un soft fork è una modifica irreversibile: una volta implementata non si può tornare indietro, altrimenti i blocchi approvati durante il periodo di attività del soft fork sarebbero tutti invalidi. E’ quindi necessario valutare con estrema cautela anche questo tipo di aggiornamenti prima di implementarli.
L’importanza dell’evitare gli hard fork
Bitcoin dev’essere stabile: per poter rappresentare le fondamenta della nuova moneta globale la sua struttura deve poter essere il più possibile salda e aperta a tutti. Questo ha portato negli anni grossa parte della comunità Bitcoin ad essere molto conservativa quando si tratta di aggiornamenti. Se si escludono alcuni aggiustamenti dovuti a bug del codice quando Satoshi era ancora al comando, le modifiche più importanti al consenso sono sempre state implementate in forma di soft fork: l’ultimo esempio è Taproot, spiegato nella fermata #10 da Federico Tenga.
E’ possibile - e molti lo fanno - utilizzare Bitcoin in versioni vecchie mai aggiornate ma pur sempre compatibili con il consenso della rete. L’idea è quella di eliminare il peggior difetto della democrazia, quello di essere la dittatura della maggioranza: chi dissente dall’opinione dominante deve poter operare anche senza l’aggiornamento alle nuove regole.
E’ un approccio, questo, radicalmente diverso da tutto il resto del mondo cripto: Ethereum in primis, che ogni anno viene sottoposta a più hard fork condannando chi non si adegua alle istruzioni del management a essere tagliato fuori dalla rete.
Annuncio sponsorizzato
Acquistare bitcoin con un’esperienza unica che massimizza la privacy e in modo immediato, tutto tramite Telegram: a offrire questa possibilità è Bitcoin Voucher Bot, al quale accedere scannerizzando il QR Code o cliccando qui.
Senza dover completare alcuna pratica di KYC, Bitcoin Voucher Bot permette di comprare e vendere bitcoin sia on-chain che tramite Lightning Network con bonifico SEPA, con un limite di € 900 al giorno. E’ anche possibile effettuare swap - convertire quindi la liquidità in proprio possesso - tra on-chain e LN e tra on-chain e Liquid (e viceversa, in entrambi i casi). Non è tutto, perché grazie a Bitcoin Voucher Bot si può anche acquistare l’abbonamento a Mullvad VPN - pagando in bitcoin tramite Lightning Network - per incrementare la privacy della propria navigazione. Provalo!
Quale signing device scegliere?
Qual è il miglior signing device - più conosciuto come hardware wallet - per conservare i propri satoshi a lungo termine?
Per non delegare la responsabilità della custodia a terze parti, come gli exchange, è necessario proteggere autonomamente le proprie chiavi private e il modo più sicuro per farlo è offline. Per questo sono nati i signing device: dispositivi privi di connessione Internet studiati appositamente per proteggere le chiavi private.
A mio avviso, tra sicurezza e semplicità d’utilizzo, il migliore sul mercato è BitBox02, prodotto da Shift Crypto. Il codice sorgente è completamente open-source e, a differenza degli altri principali signing device sul mercato, BitBox02 consente il backup e il ripristino della seed-phrase anche tramite una micro-SD. E’ disponibile sia nella versione Multi Coin che in quella Bitcoin-only (naturalmente io consiglio quest’ultima).
Potete provarlo acquistandolo da questo link. Per ulteriori informazioni potete rispondere a questa e-mail oppure scrivermi tramite i miei contatti.
Questo NON è un messaggio pubblicitario. BitBox02 è un prodotto che ho testato personalmente. Provatelo e fatemi sapere come vi trovate!
Online su YouTube la live di lunedì scorso con Massimo Musumeci
Di seguito la nuova puntata dei video-approfondimenti live dedicati al tema della settimana di Bitcoin Train sul canale YouTube di Massimo Musumeci, fisico, ricercatore Bitcoin ed esperto di privacy e sicurezza informatica. Questa settimana, prendendo spunto dalla puntata sul Lugano Plan B, si è parlato dell’adozione di Bitcoin in Svizzera e dei risvolti legali, insieme all’avvocato e bitcoiner Martina Granatiero.