Il termine fork è ricorrente nel mondo delle criptovalute ma non lo capite bene? Sei nel posto giusto per capire finalmente il suo significato 🙂
Cosa si intende per fork?
Cominciamo a tradurre la parola fork, molto usata nel linguaggio dell’informatica e della gestione dei progetti. Questa parola è usata per indicare una biforcazione, cioè una divisione in più rami. Nel contesto della blockchain, si riferisce alla divisione della blockchain in due chain distinte.
Un fork può essere causato dalla divergenza delle regole di consenso, nel qual caso si parla di hard fork, che si riferisce a una separazione della chain che di solito è permanente.
Per estensione, il termine hard fork viene utilizzato anche per indicare una modifica non retroattiva delle regole di consenso che può causare questo tipo di fork.
Inoltre, seguendo questa logica, il soft fork è una modifica del protocollo compatibile con il passato che rischia di creare un fork solo se non viene applicata dalla maggioranza della potenza di calcolo della rete.
In questo articolo ci concentreremo sui fork comuni, cioè quelli che non derivano da una modifica delle regole di consenso, e ci limiteremo al caso di Bitcoin.
Non ci soffermeremo sulle ” Soft Forks ” e sulle ” Hard Forks “.
La blockchain e le sue ramificazioni
Il libro mastro utilizzato da una criptovaluta è, di norma, una blockchain. Ogni blocco è un insieme di transazioni con data e ora, che viene convalidato per essere aggiunto alla catena. Ogni blocco è collegato al blocco precedente attraverso l’azione di un validatore.
Nel caso di Bitcoin, la convalida avviene attraverso il calcolo di una prova di lavoro per un minatore: per collegare il blocco al blocco precedente, il minatore deve dimostrare di aver speso energia trovando la soluzione a un problema matematico legato al contesto. Il miner condivide quindi il suo blocco con i nodi della rete che lo verificano.
Tuttavia, nulla impedisce a un minatore di ignorare un blocco e di collegare il proprio blocco alla continuazione di un blocco precedente: ciò crea la cosiddetta fork o ramificazione della catena.
Questa biforcazione può essere abbastanza benevola: se due minatori trovano ciascuno un blocco in un breve intervallo di tempo, allora entrambi rilasciano la loro soluzione nello stesso momento, e questo in buona fede.
Ma può anche essere causato da un attore malintenzionato che vuole censurare una transazione contenuta nell’ultimo blocco.
In entrambi i casi, si crea un conflitto sulla rete, poiché entrambi i blocchi sono validi agli occhi del protocollo. Pertanto, è necessario assicurarsi che siano separati.
Fork e consenso
I fork comuni sono risolti da una semplice regola, enunciata da Satoshi Nakamoto nel white paper di Bitcoin: la chain più lunga (cioè quella con il maggior numero di lavori accumulati) è quella che deve essere selezionata dalla rete.
Il blocco presente nella catena più corta viene invalidato. Tuttavia, viene mantenuto da tutti i nodi connessi nella rete in caso di superamento della catena da parte dell’altro.
Nella rete Bitcoin, i blocchi scartati in questo modo sono chiamati blocchi orfani e, fortunatamente, stanno diventando sempre più rari. L’elenco di questi blocchi è disponibile su BitcoinChain.com.
Questo principio permette quindi ai nodi della rete di accordarsi su quale sia il registro giusto, per raggiungere un consenso. Questo algoritmo è chiamato algoritmo di consenso proof-of-work di Nakamoto.
Si noti che non tutte le criptovalute utilizzano questo algoritmo e ne utilizzano delle varianti. Ethereum, ad esempio, si basa su Ethash, che seleziona la catena più pesante introducendo blocchi invalidati (chiamati in questo caso uncle block).
Le conferme
Il modello di consenso di Bitcoin si basa quindi sulla regola della catena più lunga. Per questo motivo si consiglia, quando si effettua una transazione, di prestare attenzione al blocco in cui si trova prima di considerarla definitiva. Questo perché la catena potrebbe essere riorganizzata in caso di un attacco del 51%, che richiederebbe la metà della potenza di calcolo della rete.
Una conferma è l’inclusione di una transazione in un blocco. Per estensione, il numero di conferme si riferisce al numero di blocchi che dovrebbero essere sostituiti per far scomparire la transazione.
In Bitcoin, il numero di conferme è il grado in cui si può valutare la sua definitività. Pertanto, una transazione è considerata irreversibile dopo 6 conferme.
Si tenga presente, che nella maggior parte dei casi è sufficiente una sola conferma.