Le blockchain sono network distribuiti dove i partecipanti devono concordare regolarmente sull’attuale stato di essi, ovvero devono raggiungere il consenso. Tuttavia, raggiungerlo in modo sicuro ed efficiente non è affatto facile. La domanda che ci poniamo e che a cui cercheremo di rispondere in questo articolo è: come può un network distribuito di nodi (in questo caso una blockchain) concordare su una decisione se alcuni dei nodi potrebbero fallire, smettere di funzionare o agire in modo malevolo?
Il problema dei Generali Bizantini è stato ideato nel 1982. Si tratta di un dilemma logico dove un gruppo di generali bizantini potrebbe avere problemi di comunicazioni quando cerca di accordarsi sulla prossima mossa da fare.
Ipotizzando quindi che i generali devono decidere se attaccare o difendersi, l’importante non è cosa facciano ma che raggiungano il consenso, che tutti concordino su una decisione comune per eseguirla in modo coordinato.
Gli obiettivi quindi sono:
- Ciascun generale deve decidere se attaccare o difendersi (si; no);
- Una volta presa la decisione non si torna indietro;
- Tutti i generali devono concordare sulla stessa decisione ed eseguirla in modo sincronizzato
Il problema è che uno o più generali potrebbero inviare messaggi falsi per confondere gli altri generali, agendo in modo disonesto e causare un fallimento.
Applicando il problema al contesto blockchain, ogni generale è un nodo del network ed essi devono raggiungere il consenso sull’attuale stato di sistema. La maggioranza di questi nodi quindi deve concordare ed eseguire la stessa azione in modo coordinato per evitare il fallimento e collasso della blockchain.
L’unico modo per raggiungere questo consenso è avere almeno i due terzi dei nodi affidabili.
La Byzantine Fault Tolerance, o BFT, è quindi la proprietà del network di resistere ai fallimenti derivanti dal Problema dei generali descritto sopra. Un sistema BFT è in grado di operare anche se alcuni nodi falliscono o agiscono in malafede.
Esistono più soluzioni a questo problema, queste soluzioni vengono adottate tramite gli algoritmi di consenso.
I più famosi sono il Proof of Work e il Proof of Stake. Li tratteremo nel dettaglio in un nostro articolo dedicato proprio alla ricerca, allo studio e alla comprensione di questi algoritmi, per capire i vantaggi, gli svantaggi che portano ai network dove sono adottati e per capire anche come essi cerchino di risolvere il Blockchain Trilemma.
Fonti:
https://academy.binance.com/it/articles/byzantine-fault-tolerance-explained
Se questo articolo ti è stato utile allora seguici sui nostri canali per non perdertene nemmeno uno .