Nella maggior parte dei casi, per come funziona oggi il mondo delle transazioni di beni e servizi, vige il paradigma della centralizzazione, in cui un’autorità centrale fa da intermediario tra i vari partecipanti che si scambiano beni.
Dunque, ci si affida totalmente all’autorità centrale, con tutti i rischi che ciò comporta, tra i quali in particolare ve ne sono due:
- La centralizzazione del potere;
- Problema del single point of failure (SPOF), ovvero il problema dei sistemi in cui, se una parte del sistema ha dei problemi, tutto il sistema ne risente, arrivando, nei casi estremi, alla completa cessazione del servizio.
Come sappiamo, la tecnologia della blockchain presenta una soluzione ai problemi legati alla centralizzazione, offrendo la possibilità di un sistema distribuito e decentralizzato, in cui perciò non sarà più presente un accentramento di potere (come può essere una banca) ma in cui i vari attori coinvolti nel sistema interagiranno tra di loro secondo un paradigma peer-to-peer, senza intermediari.
![](https://academy.cryptowebacademy.com/wp-content/uploads/2023/12/1280px-Decentralization_diagram.svg-585x295-1.png)
La decentralizzazione però introduce una serie di nuovi problemi, tra i quali vi è quello del consenso.
Il problema del consenso non riguarda solo la blockchain ma tutto il campo del calcolo distribuito, branchia dell’informatica che si occupa dei sistemi distribuiti, in cui diversi nodi autonomi comunicano tra loro attraverso una rete con il fine di raggiungere un obiettivo comune.
Consenso e blockchain
Tornando alla blockchain, abbiamo un registro contabile distribuito tra tutti i nodi della rete e il registro deve continuamente essere aggiornato aggiungendo dei nuovi blocchi di transazioni.
Emerge quindi il problema della definizione dei blocchi da concatenare, processo detto di validazione dei blocchi.
Ci vuole un sistema che permetta ai nodi di potersi fidare gli uni degli altri, sostituendo la fiducia che, in un sistema centralizzato, si ripone verso l’autorità centrale.
Il problema della fiducia è fondamentale perché, in una rete di molti nodi, è possibile che vi siano degli agenti intenzionalmente malevoli o degli agenti che commettono errori.
Ad esempio, un nodo potrebbe proporre un blocco contenente delle transazioni malevole (uno dei classici problemi è quello del double spending).
Si rende necessario perciò un modo per prevenire queste eventualità, che permetta ai vari attori di potersi fidare reciprocamente e di conseguenza di potersi fidare del sistema nel complesso.
Il problema dei generali bizantini
Per chiarire meglio l’entità del problema del consenso, presentiamo uno degli esempi classici nel mondo informatico: il problema dei generali bizantini.
Immaginiamo un contesto di guerra, tre o più generali bizantini, fisicamente separati, (nodi del sistema) devono prendere una decisione: possono attaccare una fortezza oppure ritirarsi, la cosa importante è che venga presa una decisione comune.
Tra i generali potrebbero esserci dei traditori (agenti malevoli) che potrebbero comunicare informazioni false.
L’analogia con i sistemi informatici è chiara. Non esiste una sola soluzione al problema, ne sono state proposte molte ma si può fare un’assunzione di base.
Se i generali fossero due, il problema sarebbe irrisolvibile. Diverso è il caso in cui i generali sono 3, numero dal quale possono esistere delle soluzioni, se il numero di agenti onesti è maggiore o uguale ai 2/3 degli agenti totali.
È in questi casi che si parla di Byzantine Fault Tollerance (BFT), ovvero la proprietà di un sistema di essere in grado di resistere alle criticità derivanti dal problema dei generali bizantini, continuando quindi a operare anche se dei nodi del sistema potrebbero fallire o essere intenzionalmente malevoli.
![Byzantine Generals](https://academy.cryptowebacademy.com/wp-content/uploads/2023/12/Byzantine_Generals-585x295-1.png)
La soluzione: algoritmi di consenso
Ogni blockchain deve fare fronte al problema dei generali bizantini e lo fa con quelli che vengono definiti algoritmi di consenso che ormai, come si sarà capito, sono di fondamentale importanza.
Le diverse blockchain hanno proposto diverse soluzioni al problema, che tratteremo separatamente.
Segue una lista degli algoritmi di consenso più diffusi, associati alle blockchain che li utilizzano.
Consensus Algorithm | Blockchain e criptovalute |
---|---|
Proof of Work (PoW) | Bitcoin, Ethereum 1.0, Dogecoin, Monero |
Proof of Stake (PoS) | Cardano, Ethereum 2.0 |
Delegated Proof of Stake (DPoS) | Terra, Tron |
Leased Proof of Stake (LPoS) | Waves |
Pure Proof of Stake (PPoS) or Proof of Weight (PoWeight) | Algorand |
Proof of Elapsed Time (PoET) | Hyperledger Sawtooth |
Practical Byzantine Fault Tolerance (PBFT) | Zilliga (with PoW), Hyperledger Fabric |
Simplified Byzantine Fault Tolerance (SBFT) | VMware Blockchain |
Delegated Byzantine Fault Tolerance (DBFT) | NEO |
Direct Acyclic Graphs (DAG) | IOTA |
Proof of Activity (PoA) | Decred (DCR) |
Proof of Importance (PoI) | NEM |
Proof of Capacity (PoC) | Burstcoin, Storj, Chia, SpaceMint |
Proof of Burn (PoB) | Slimcoin |
Una risposta
[…] Cercheremo di andare nel dettaglio e daremo per scontate alcune nozioni di base, pertanto, se non sapete cosa sia un algoritmo di consenso, vi rimando alla lezione dedicata a questo argomento. […]