Cos’è un algoritmo di consenso? Spiegazione più semplice

Initiate
Di Tomàs Daniel Avila Visintin
21 Settembre 2021

Indice

Vuoi sapere cos'è un algoritmo di consenso? Qui puoi trovare la spiegazione più semplice per capirlo e i concetti più dettagliati.

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.

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
Byzantine Fault Tolerance (BFT)

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 AlgorithmBlockchain 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

Autore: Tomàs Daniel Avila Visintin

Ti è piaciuto l'articolo?

Condividilo sui social

Una risposta