Gli Hard Fork e i Soft Fork Spiegati
Home
Articoli
Gli Hard Fork e i Soft Fork Spiegati

Gli Hard Fork e i Soft Fork Spiegati

Intermedio
Pubblicato Nov 29, 2018Aggiornato Feb 9, 2023
8m


Contenuti


Introduzione

Quando ti viene chiesto di aggiornare la tua app per il banking digitale sul tuo smartphone, probabilmente non ci pensi su neanche due volte. Forse il tuo cellulare la aggiorna automaticamente senza che tu te ne accorga. Dopotutto, è un processo necessario – se non installi la versione più recente del software, corri il rischio di perdere l'accesso ai suoi servizi.

Nelle criptovalute open-source, le cose sono molto diverse. Non devi leggere ogni linea di codice che sostiene Bitcoin per poterlo usare, ma avere la possibilità di farlo è importante. Non esiste una gerarchia in questo contesto, e nessuna banca che può semplicemente distribuire gli aggiornamenti e cambiare le cose come preferisce. Di conseguenza, implementare nuove funzionalità in network blockchain può essere complicato.
In questo articolo, esploreremo come i network di criptovaluta possono essere aggiornati, nonostante la mancanza di un'autorità centrale. Per farlo, utilizzano due meccanismi differenti: gli hard fork e i soft fork


Chi prende le decisioni in un network blockchain?

Per capire come funzionano i fork, è importante conoscere prima i partecipanti coinvolti nel processo decisionale (o governance) del network.
In Bitcoin, possiamo distinguere generalmente i partecipanti in tre sottogruppi – sviluppatori, miner e utenti full node. Queste sono le parti che contribuiscono effettivamente al network. I light node (ovvero gli wallet sul tuo cellulare, laptop, ecc.) sono ampiamente utilizzati, ma non sono “partecipanti” nell'ottica del network.


Sviluppatori

Gli sviluppatori sono responsabili della creazione e dell'aggiornamento del codice. Per la moneta media, chiunque può contribuire a questo processo. Il codice è disponibile pubblicamente, quindi chiunque può presentare modifiche che altri sviluppatori controlleranno. 


Miner

I miner sono i partecipanti che proteggono il network. Eseguono il codice della criptovaluta e dedicano risorse per aggiungere nuovi blocchi alla blockchain. Nel network di Bitcoin, per esempio, lo fanno attraverso la Proof of Work. Vengono ricompensati per il loro lavoro con un block reward.


Utenti full node

I full node sono la colonna portante del network di criptovaluta. Essi convalidano, inviano e ricevono blocchi e transazioni, e conservano una copia della blockchain.


Spesso troviamo sovrapposizioni in queste categorie. Per esempio, potresti essere uno sviluppatore e un utente full node, oppure un miner e un utente full node. Potresti far parte di tutte e tre o di nessuna. Infatti, molti tra quelli che consideriamo utenti di criptovaluta non assumono nessuno di questi ruoli. Invece, scelgono di usare light node o servizi centralizzati.

Osservando le descrizioni elencate sopra, potremmo essere convinti che gli sviluppatori e i miner prendono le decisioni per il network. Gli sviluppatori creano il codice – senza di loro, non avremmo il software da eseguire e nessuno che corregge i bug o aggiunge nuove funzionalità. I miner proteggono il network – senza una sana concorrenza nel mining, la catena potrebbe essere dirottata, oppure potrebbe fermarsi.
Se queste due categorie cercassero di forzare il resto del network a seguire la loro volontà, però, non andrebbe a finire bene. Per molti, il vero potere è concentrato nei full node. Questo in gran parte deriva dal fatto che il network è opt-in, quindi gli utenti possono scegliere quale software eseguire. 
Gli sviluppatori non entrano in casa tua per costringerti a scaricare i codici Bitcoin Core con una pistola puntata. Se i miner adottano un atteggiamento “a modo mio o niente” per forzare un cambiamento indesiderato sugli utenti, gli utenti sceglieranno semplicemente il niente. 
Queste parti non sono onnipotenti – sono semplicemente fornitori di servizi. Se la gente decide di non usare il network, la moneta perderà valore. La perdita di valore influisce direttamente sui miner (le loro ricompense valgono meno quando denominate in dollari). Per quanto riguarda gli sviluppatori, basta che gli utenti li ignorino.
Il software non è proprietario. Puoi fare tutte le modifiche che vuoi e, se altri eseguono il tuo software modificato, potete comunicare tra di voi. In questo caso, stai facendo un fork del software e nel processo stai creando un nuovo network.


Cos'è un fork?

Un software fork avviene ogni volta che il software viene copiato e modificato. Il progetto originale continua sulla sua strada, ma è ora separato dal nuovo, che prende una direzione diversa. Supponiamo che il team del tuo sito web di contenuti sulle criptovalute preferito sia in grande disaccordo su come procedere. Una parte del team potrebbe replicare il sito su un dominio diverso. Andando avanti, pubblicheranno tipi di contenuti diversi dall'originale.

I progetti partono da un terreno comune e condividono una storia. Esattamente come una strada singola che si divide in due, ora c'è una divergenza permanente nei loro percorsi.

Nota che questo genere di cosa accade spesso nei progetti open-source, ed era presente molto prima dell'arrivo di Bitcoin o Ethereum. Tuttavia, la distinzione tra hard fork e soft fork è quasi esclusiva per il campo della blockchain. Diamo un'occhiata più nel dettaglio.



Hard fork vs. soft fork

Pur avendo nomi simili e sostanzialmente lo stesso scopo, hard fork e soft fork presentano differenze significative. Esaminiamoli uno alla volta.


Cos'è un hard fork?

Gli hard fork sono aggiornamenti software non retrocompatibili . Tipicamente, si verificano quando i nodi aggiungono nuove regole in conflitto con le regole dei vecchi nodi. I nuovi nodi possono comunicare solo con altri che usano la nuova versione. Di conseguenza, la blockchain si divide, creando due network separati: uno con le vecchie regole e uno con le nuove regole.


I nodi diventano blu quando si aggiornano. I nodi gialli più vecchi li respingono, mentre i blu si connettono tra di loro.


Quindi, ora ci sono due network eseguiti in parallelo. Entrambi continueranno a propagare blocchi e transazioni, ma non lavoreranno più sulla stessa blockchain. Tutti i nodi avevano una blockchain identica fino al punto del fork (e questa cronologia rimane), ma in seguito avranno blocchi e transazioni diversi.



Considerando che una parte di storia è condivisa, se possiedi monete prima del fork avrai monete su entrambi i network. Supponiamo di avere 5 BTC quando un fork avviene all'altezza del Blocco 600.000. Puoi spendere questi 5 BTC sulla vecchia catena nel Blocco 600.001, ma non risulteranno spesi nel Blocco 600.001 della nuova blockchain. Assumendo che la crittografia non è cambiata, le tue chiavi private hanno ancora cinque monete sul network forkato. 
Un esempio di hard fork si è verificato nel 2017, quando Bitcoin si è frammentato in due catene separate – l'originale, Bitcoin (BTC), e la nuova, Bitcoin Cash (BCH). Il fork è avvenuto in seguito a molte discussioni sul miglior approccio alla scalabilità. I sostenitori di Bitcoin Cash volevano aumentare le dimensioni dei blocchi, mentre i sostenitori di Bitcoin si sono opposti al cambiamento.
Un aumento della dimensione del blocco richiede una modifica delle regole. Prima del soft fork SegWit (di cui parleremo a breve), i nodi accettavano solo blocchi più piccoli di 1MB. Se avessi creato un blocco perfettamente valido ma dalle dimensioni di 2MB, gli altri nodi lo avrebbero rifiutato.

Solo i nodi con un software modificato per consentire blocchi oltre 1MB potrebbero accettare questi blocchi. Ovviamente, questo li renderebbe incompatibili con la versione precedente, quindi solo i nodi con le stesse modifiche al protocollo sarebbero in grado di comunicare.


Cos'è un soft fork

Un soft fork è un aggiornamento retrocompatibile, ovvero i nodi aggiornati possono comunque comunicare con quelli non aggiornati. Ciò che vediamo tipicamente in un soft fork è l'aggiunta di una nuova regola che non si scontra con le regole più vecchie.
Per esempio, una riduzione delle dimensioni dei blocchi può essere implementata attraverso un soft fork. Facciamo un altro esempio su Bitcoin per illustrare il punto: anche se c'è un limite su quanto un blocco può essere grande, non c'è un limite su quanto può essere piccolo. Se vuoi accettare solo blocchi al di sotto di una certa dimensione, devi semplicemente respingere quelli più grandi.

Tuttavia, farlo non ti disconnette automaticamente dal network. Puoi continuare a comunicare con i nodi che non implementano queste regole, ma dovrai filtrare alcune delle informazioni che ti passano.

Un ottimo esempio reale di soft fork è il sopracitato fork Segregated Witness (SegWit), che ha avuto luogo poco dopo la divisione Bitcoin/Bitcoin Cash. SegWit è un aggiornamento che ha cambiato il formato dei blocchi e delle transazioni, ma è stato creato ingegnosamente. I vecchi nodi possono ancora convalidare blocchi e transazioni (la formattazione non viola le regole), ma semplicemente non li comprenderanno. Alcuni cambi sono leggibili solo quando i nodi passano al nuovo software, che permette loro di interpretare dati aggiuntivi.



Anche due anni dopo l'attivazione di SegWit, non tutti i nodi sono stati aggiornati. Farlo presenta dei vantaggi, ma non c'è una reale urgenza visto che l'aggiornamento non contiene cambiamenti decisivi per il network.


Hard fork vs. soft fork – quale è meglio?

Fondamentalmente, entrambi i tipi di fork hanno obiettivi diversi. Gli hard fork controversi possono dividere una comunità, ma quelli pianificati danno la possibilità di modificare il software quando tutti sono d'accordo.

I soft fork sono un'opzione più delicata. In linea generale, sei più limitato sulle modifiche che puoi apportare, visto che i nuovi cambiamenti non possono scontrarsi con le vecchie regole. Detto ciò, se il tuo aggiornamento può essere formulato in modo da restare compatibile, non devi preoccuparti di frammentare il network.


In chiusura

Hard fork e soft fork sono cruciali per il successo a lungo termine dei network blockchain. Ci permettono di apportare modifiche e aggiornamenti in sistemi decentralizzati, nonostante la mancanza di un'autorità centrale.

I fork consentono alle blockchain e alle criptovalute di integrare nuove funzionalità nel corso del loro sviluppo. Senza questi meccanismi, avremmo bisogno di un sistema centralizzato con un controllo top-down. Altrimenti, saremmo bloccati con le stesse identiche regole per tutta la vita del protocollo.