Le criptovalute come Bitcoin (BTC) ed Ethereum (ETH) sono alimentate da un software open-source decentralizzato chiamato blockchain. Un fork è una modifica al protocollo sottostante della blockchain. Un fork di una blockchain è un importante aggiornamento della rete e può rappresentare un cambiamento più o meno significativo, e può essere avviato dagli sviluppatori o dai membri della community.
Richiede agli operatori dei nodi – i computer collegati alla blockchain che aiutano a convalidare le transazioni su di essa – di aggiornarsi all'ultima versione del protocollo. Ogni nodo ha una copia della blockchain e si assicura che le nuove transazioni non siano in contrasto con la sua cronologia.
Un hard fork è un aggiornamento radicale che può rendere valide o non valide le transazioni e i blocchi precedenti, e richiede che tutti i nodi di una rete si aggiornino a una versione più recente. Non è retrocompatibile. Un soft fork è un aggiornamento del software che è retrocompatibile e fa sì che i nodi di una versione precedente della chain vedano la nuova versione come valida.
Un hard fork causa pertanto una separazione permanente della chain, poiché la vecchia versione non è più compatibile con la nuova. Coloro che detengono token sulla vecchia catena riceveranno token anche sulla nuova, perché condividono la stessa cronologia di transazioni. Gli hard fork possono avvenire per diversi motivi.
Comprendere gli hard fork
Per capire cos'è un hard fork, è essenziale comprendere prima la tecnologia blockchain. Una blockchain è una catena composta da blocchi di dati che funzionano come un libro mastro digitale, in cui ogni nuovo blocco è valido solo dopo che il precedente è stato confermato dai nodi della rete. I dati sulla blockchain possono essere tracciati fino alla prima transazione in assoluto: è per questo che, ad esempio, possiamo ancora vedere il primo blocco sulla blockchain di Bitcoin.
Un hard fork è essenzialmente una divergenza permanente dall'ultima versione di una blockchain, che porta a una rottura della stessa, in quanto alcuni nodi non soddisfano più il consenso e due versioni diverse della rete vengono gestite separatamente.
Ciò significa che si crea una biforcazione sulla blockchain in cui una catena continua a seguire l'attuale insieme di regole, mentre l'altra segue un nuovo insieme di regole. Un hard fork non è retrocompatibile, quindi la vecchia versione della rete non vede più la nuova come valida.
Gli hard fork sono potenzialmente pericolosi, perché possono causare una scissione della catena. Se si verifica una divisione tra i miner che proteggono la rete e i nodi che aiutano a convalidare le transazioni, la rete stessa diventa meno sicura e più vulnerabile agli attacchi.
È possibile intraprendere un'azione dannosa contro una blockchain vulnerabile eseguendo un cosiddetto "attacco del 51%:" avviene quando un gruppo di miner riesce ad avere oltre la metà della potenza di calcolo che protegge una rete, e la usa per alterare lo storico della blockchain. Alcune reti create a seguito di hard fork hanno infatti subito numerosi attacchi del 51% in cui i malintenzionati, grazie alla loro superiore potenza di calcolo nella rete, sono stati in grado di modificare la cronologia della blockchain e di spendere più volte gli stessi fondi.
Un'altra vulnerabilità causata dagli hard fork è rappresentata dagli "attacchi replay." Tali attacchi si verificano quando un soggetto malintenzionato intercetta una transazione su una rete forkata e ripete quei dati sull'altra chain. Gli hard fork senza protezione dagli attacchi replay vedono entrambe le transazioni diventare valide, il che significa che qualcuno può spostare i fondi di un altro utente senza controllarli.
Come mai avvengono gli hard fork?
Se gli hard fork possono ridurre drasticamente la sicurezza di una blockchain, perché avvengono? La risposta è semplice: gli hard fork sono a volte degli aggiornamenti necessari per migliorare la rete, dato che la tecnologia blockchain è in costante evoluzione. Diverse ragioni possono essere alla base di un hard fork, e non tutte sono negative:
- Aggiungere nuove funzionalità
- Mitigare alcuni rischi per la sicurezza
- Risolvere un conflitto all'interno della community
- Invertire alcune transazioni sulla blockchain
Gli hard fork possono anche avvenire accidentalmente. Il più delle volte questi incidenti vengono rapidamente risolti, e coloro che non erano più d'accordo con la blockchain principale tornano ad aderirvi dopo aver capito cos'era successo. Allo stesso modo, gli hard fork che aggiungono funzionalità e aggiornano la rete di solito consentono a coloro che sono usciti dal consenso di rientrare nella catena principale.
Hard fork involontari
La blockchain Bitcoin ha visto molti hard fork accidentali nel corso della sua storia. Questi sono più comuni di quanto si possa pensare e spesso si risolvono così rapidamente da non essere degni di nota.
La maggior parte degli hard fork accidentali si verifica quando due miner trovano il medesimo blocco quasi nello stesso momento. Poiché il consenso sulla rete è distribuito, entrambi vedono inizialmente il blocco come valido e continuano a minare su catene diverse prima che loro stessi o un altro miner aggiungano un blocco successivo.
Il blocco successivo determina quale catena diventa la più lunga, il che significa che l'altra viene abbandonata per mantenere il consenso. I miner passano alla catena più lunga: quella abbandonata non è più redditizia, in quanto minerebbero su un fork del network.
Quando si verificano queste biforcazioni, il miner che ha trovato il blocco abbandonato perde i premi di coinbase e le commissioni di transazione. Tuttavia nessuna transazione viene invalidata, poiché entrambi i blocchi trovati sono identici e contengono le stesse transazioni.
Altri hard fork accidentali sono avvenuti a causa di bug nel codice sorgente del software. Nel 2013, ad esempio, è stato minato e trasmesso un blocco con un numero di input di transazioni totali superiore a quello visto in precedenza, ma alcuni nodi non lo hanno elaborato, causando una scissione. Il problema è stato risolto dopo che alcuni nodi hanno effettuato un downgrade dei loro software per raggiungere il consenso e rifiutare questo blocco più grande.
Differenze tra hard fork e soft fork
Gli hard fork non sono l'unico modo per aggiornare il software di una blockchain. I soft fork sono invece considerati un'alternativa più sicura e soprattutto retrocompatibile: anche i nodi che non si aggiornano alle versioni più recenti continueranno a vedere la catena aggiornata come valida.
Un soft fork permette di aggiungere nuove caratteristiche e funzioni che non modificano le regole alla base di una blockchain. I soft fork sono spesso utilizzati per implementare nuove funzionalità a livello di programmazione.
Per capire meglio la differenza tra hard fork e soft fork, si può pensare a un aggiornamento del sistema operativo di un computer. Dopo l'aggiornamento, tutte le applicazioni presenti sul dispositivo continueranno a funzionare con la nuova versione del sistema operativo. Un hard fork, in questo scenario, sarebbe un passaggio completo a un nuovo sistema operativo.
Esempi famosi di hard fork
Nel mondo delle criptovalute vi sono numerosi esempi storici di hard fork, e non tutti sono avvenuti nella blockchain Bitcoin. Ecco alcuni degli hard fork più noti e come hanno influenzato il settore.
SegWit2x e Bitcoin Cash
SegWit2x è stato un aggiornamento proposto per aiutare Bitcoin ad accrescere la propria scalabilità. Mirava ad implementare il Segregated Witness (SegWit) e ad aumentare il limite di dimensione dei blocchi da 1 MB a 2 MB.
L'implementazione di SegWit2x è stata decisa nel controverso accordo di New York raggiunto il 23 maggio 2017. L'accordo ha visto un certo numero di proprietari di aziende e di miner (che rappresentano oltre l'85% dell'hash rate della rete) decidere il futuro di BTC a porte chiuse.
SegWit sarebbe stato implementato attraverso un soft fork, mentre la grandezza dei blocchi sarebbe stata aumentata in un secondo momento tramite un hard fork. La proposta è stata controversa perché non includeva il parere di alcun sviluppatore di Bitcoin (Bitcoin Core), ed è stata vista come un tentativo di centralizzazione: un gruppo di aziende che decide il destino della rete senza che i miner e i nodi raggiungano il consenso. L'accordo, infine, è arrivato dopo anni di dibattito sulla scalabilità di Bitcoin.
I sostenitori dei "blocchi piccoli" affermavano che blocchi più grandi avrebbero reso più difficile la gestione di un full node per i normali utenti, con il rischio di centralizzare la rete. I sostenitori dei "blocchi grandi" ritenevano invece che l'aumento delle commissioni di transazione avrebbe danneggiato la crescita di Bitcoin e spinto molti utenti verso altre criptovalute.
Sulla rete Bitcoin sono ammessi soft fork attivati dagli utenti. In questo scenario gli operatori dei wallet, gli exchange e altre entità che gesticono full node possono passare a una nuova versione della blockchain con una futura data di attivazione, costringendo i miner a "mettersi in regola" e attivare le nuove impostazioni. In caso contrario, la rete potrebbe finire per dividersi.
All'epoca la community di Bitcoin si era battuta per un soft fork avviato dagli utenti, in risposta alla riunione a porte chiuse che dettava il futuro del network e per impedire che si creasse un precedente. Gli utenti avevano richiesto l'implementazione della Bitcoin Improvement Proposal (BIP) 148: questa BIP mirava ad introdurre SegWit sulla rete Bitcoin, sostenendo che SegWit2x era un hard fork controverso che rendeva la rete vulnerabile ad attacchi replay. Tale aggiornamento è stato rilasciato nel marzo 2017 e doveva essere implementato il 1° agosto 2017.
Temendo che il piano SegWit2x non sarebbe stato realizzato e vedendo che la comunità sosteneva SegWit, alcuni sostenitori dei "big blocks" hanno deciso di effettuare una biforcazione della blockchain di Bitcoin il 1° agosto 2017. Il risultato è stato la creazione di Bitcoin Cash (BCH). I sostenitori di BCH non vedevano il fork come la creazione di una rete rivale, ma piuttosto come la continuazione della visione originale di Satoshi Nakamoto.
La blockchain di Bitcoin Cash è stata creata con una dimensione di blocco di 8 MB, che da allora è aumentata a 32 MB. Ancora oggi i sostenitori di Bitcoin Cash sostengono che le sue basse commissioni di transazione aiuteranno la scalabilità del network, e che Bitcoin Core sarà dimenticato a causa dei costi estremamente elevati.
Dopo il fork di Bitcoin Cash, abbiamo assistito a molti altri hard fork di Bitcoin. Tra questi, Bitcoin Gold (BTG), Bitcoin Diamond (BTCD) e altri.
L’hack a The DAO
Un altro hard fork storico è stato quello legato a The DAO (Decentralized Autonomous Organization, o Organizzazione Autonoma Decentralizzata), lanciata nel 2016 sulla rete Ethereum. Ethereum consente l'esecuzione di smart contract, ovvero codice che viene eseguito automaticamente sulla blockchain una volta soddisfatti determinati criteri. Tali accordi rendono programmabile il denaro e sono alla base delle applicazioni finanziarie decentralizzate (DApp).
All'epoca, The DAO raccolse 150 milioni di dollari di ETH in uno dei primi casi di crowdfunding tramite criptovalute, ancora prima dell’avvento delle Initial Coin Offering (ICO) del 2017. Si trattava essenzialmente di una prima iterazione dei modelli di governance decentralizzata utilizzati dai protocolli DeFi, in cui i possessori di token votano sul futuro del protocollo.
Dopo il lancio, The DAO è stata hackerata per 60 milioni di dollari in ETH derivanti da 11.000 investitori. All'epoca ETH aveva un valore di appena 10$: in altre parole, circa il 14% di tutti gli Ether in circolazione era investito in The DAO, e l'hack è stato un duro colpo per la fiducia nella rete.
All'interno della comunità di Ethereum è nato un dibattito, mentre tutti si affannavano a capire come rispondere all'attacco. Inizialmente, il co-fondatore di Ethereum Vitalik Buterin propose un soft fork che avrebbe inserito l'indirizzo dell'hacker nella black list, impedendogli di spostare i fondi.
L'hacker, o qualcuno che si spacciava per lui, ha risposto alla community sostenendo che i fondi erano stati ottenuti in modo "legale" e secondo le regole dello smart contract, affermando di essere pronto a intraprendere un'azione legale contro chiunque cercasse di impossessarsi dei fondi. La tensione è aumentata quando l'hacker ha detto che avrebbe ostacolato i tentativi di soft fork corrompendo i miner di ETH con i fondi ottenuti.
Il dibattito è andato avanti fino a quando è stato proposto un hard fork. L'hard fork è stato infine implementato e ha riportato la cronologia della rete Ethereum a prima che si verificasse l'attacco a The DAO, riassegnando i fondi rubati a uno smart contract dove gli investitori potevano riprendersi i loro soldi.
La mossa è stata estremamente controversa e, agli occhi di alcuni, ha compromesso la resistenza alla censura e l'immutabilità della blockchain, in quanto è stata fatta solo per salvare i fondi degli investitori. Coloro che vedevano le cose in questo modo hanno rifiutato l'hard fork e hanno preferito sostenere la versione precedente della rete, ora nota come Ethereum Classic (ETC).
Hashrate Wars: ABC vs. SV
Bitcoin Cash è stato creato attraverso un hard fork della blockchain di Bitcoin nell'agosto del 2017; in seguito si sarebbe ulteriormente diviso in due reti, a causa delle lotte tra gruppi all'interno della sua community. Da una parte c'era Bitcoin Cash ABC (BCHA), un team di sviluppo che cercava di migliorare la tecnologia alla base. Dall'altra c'era Bitcoin Cash SV (BSV), un team sostenuto dall'autoproclamato "Satoshi Nakamoto" Craig Wright, che cercava di aumentare la dimensione dei blocchi da 32 MB a 128 MB.
Al blocco 556.767, la blockchain si è divisa in due e la battaglia per il ticker BCH è iniziata. I miner di entrambe le parti impiegarono ogni risorsa possibile per avere un vantaggio di hash-rate sulla fazione opposta. Molti chiedevano un attacco del 51% all'altra rete per riorganizzare i suoi blocchi, in modo che i suoi sostenitori fossero costretti a passare dalla loro parte.
Gli exchange di criptovalute e altre aziende hanno annunciato che avrebbero attribuito il ticker BCH alla blockchain che fosse risultata vincente. Alcuni mining pool hanno dirottato tutte le loro risorse su questa battaglia di hashrate: alla fine Bitcoin Cash ABC ha avuto la meglio, respingendo qualsiasi tentativo di attacco del 51%. In seguito ha rivendicato il ticker di BCH sugli exchange e su altri servizi, mentre l'altra rete ha scelto BSV come ticker.
Traduzione a cura di Giorgio Libutti