BFT: BYZANTINE FULL TOLLERANCE NEI SISTEMI DISTRIBUITI

Dall’avvio di Bitcoin nel 2008, come sistema di pagamento elettronico peer-to-peer, sono state create molte altre criptovalute, ognuna con un particolare meccanismo di consenso, tutte indistintamente hanno in comune la blockchain, come elemento centrale della loro architettura.

Immagine correlataCon poche eccezioni, le blockchainS sono intenzionalmente progettate per essere decentralizzate, funzionando come un libro mastro digitale che viene gestito da una rete distribuita di nodi di computer. Per questo motivo, la tecnologia blockchain ha permesso la creazione di sistemi economici privi di fiducia, in cui transazioni finanziarie trasparenti e affidabili possono essere eseguite senza la necessità di intermediari.

Proprio per questo motivo le criptovalute vengono adottate come alternativa valida ai sistemi bancari e di pagamento tradizionali, che dipendono fortemente dalla fiducia.

Come la maggior parte dei sistemi di calcolo distribuiti, i partecipanti di una rete di criptovaluta devono concordare regolarmente lo stato attuale della blockchain, ed è ciò che chiamiamo raggiungimento del consenso. Tuttavia, raggiungere un consenso sulle reti distribuite, in modo sicuro ed efficiente, è ben lungi dall’essere un compito facile.

Quindi, come può una rete distribuita di nodi informatici concordare una decisione, se alcuni dei nodi possono fallire o agire in modo disonesto? Questa è la questione fondamentale del cosiddetto problema dei generali bizantini, che ha dato origine al concetto di tolleranza ai guasti bizantina.

ANDIAMO NEL DETTAGLIO

Partiamo dal famoso scritto del 1982 degli scienziati Lamport, Shostak e Pease, che descrive lo scenario, dove più di due generali devono concordare prima di attaccare il loro nemico comune. La complicazione aggiunta qui è che uno o più generali possono essere ( o sono ) dei traditori, nel senso che possono mentire sulla loro scelta (per esempio dicono di essere d’accordo ad attaccare alle 09:00 ma invece non lo fanno).

Risultati immagini per problema dei generali bizantiniPer raggiungere il consenso allora, il comandante e ogni luogotenente devono concordare sulla stessa decisione (per attacco o ritirata).

Ogni generale ha il proprio esercito e  ogni gruppo  si trova in ​​diverse posizioni intorno alla città che intendono attaccare.

Ora, hanno tutti circondato la città, ma c’è un problema: la presenza di grandi barriere fisiche, come le montagne e i canyon, che separano i generali. Questi pero’ possono comunicare tra di loro, solo inviando messaggeri. 

Per conquistare la città, solo un attacco lanciato da tutti i generali contemporaneamente potrebbe avere la meglio e conquistare con successo la città e per avere il CONSENSO di tutti, l’unica soluzione è utilizzare i messaggeri per far recapitare i messaggi operativi.

BENE !! potresti dire…  se possono mandare messaggi l’un l’altro, allora qual è il problema?

Il problema è che alcuni generali potrebbero essere stati corrotti. In cambio del loro tradimento, ottenere denaro dalle ricchezze della città. Pertanto questi generali traditori ( BIZZANTINI ), potrebbero inviare informazioni errate ai loro coetanei al fine di rovinare l’attacco, impedendo quindi un CONSENSO comune. In piu’ potrebbe anche accadere che i loro messaggi potrebbero andare perduti o essere a loro volta ” corrotti ” da altri messaggeri.

I suddetti problemi di comunicazione sono legati al fatto che un generale è solo in grado di comunicare con un altro attraverso i messaggi, che vengono inoltrati da un corriere. Di conseguenza, la sfida centrale del problema dei generali bizantini è che i messaggi possono essere in qualche modo ritardati, distrutti o persi.

MA ALLORA COME POSSIAMO RAGGIUNGERE IL CONSENSO ?

E’ evidente che non c’è soluzione in presenza di almeno ⅓ o maggiore numero di generali traditori.

Chiamiamo questi potenziali traditori generali nodi bizantini, i quali possono agire maliziosamente o arbitrariamente.

In questa immagine, ci sono due triangoli separati, che rappresentano due casi distinti.

Consideriamo scenari con 3 attori e 1 traditore

Dal momento che conosciamo 3 nodi sembrerebbe che non possiamo arrivare al consenso con un nodo bizantino; tuttavia, ciò non significa che non sia possibile creare un algoritmo per consentire ai nodi di raggiungere un consenso con non più di ⅓ dei nodi bizantino.

Una colpa bizantina, riferita al problema dei generali bizantini, è un difetto che si riferisce a qualsiasi deviazione arbitraria dal protocollo. Cioè non solo i nodi potrebbero non fermarsi, rispondere o ricevere informazioni, ma potrebbero anche inviare informazioni corrotte e / o false.

n.b. >> Ricorda che la funzionalità di un nodo include l’invio, la ricezione, la memorizzazione e l’ elaborazione delle informazioni.
I guasti bizantini sono un superset di guasti (il nodo può bloccarsi o non restituire valori). Il comportamento della maggior parte degli aggressori, come i generali corrotti che cercano di ostacolare il consenso, cade sotto questo tipo di colpa.
Si tratta esattemente dello stesso errore che si manifesta in una BLOCKCHAIN pubblica in quanto anche in una situazione di Blockchain pubblica, i partecipanti alla rete sono sconosciuti ed imprevedibile.
MA come questo riguarda i fondamentali della blockchain? 
 

La Blockchain è una tecnologia che rappresenta una soluzione a un problema sociale.

Una blockchain è semplicemente una struttura dati governata da un sistema distribuito con un numero illimitato di partecipanti al processo di consenso e un numero sconosciuto di errori bizantini, in pratica si tratta dell’ambiente piu’ complesso e piu’ contradditorio che si possa immaginare.

Una blockchain è “semplicemente” una struttura dati governata da un sistema distribuito con un numero illimitato di partecipanti al processo di consenso e un numero sconosciuto di errori bizantini.


SIMILITUDINI CON LA BLOCKCHAIN

La distribuzione della potenza computazionale e di storage dei dati, rappresenta la geografica distanza tra i generali.

I nodi rappresentano i generali

I traditori rappresentano errori o nodi dannosi.

I possibili pacchetti o messaggi rilasciati tra i nodi, rappresentano potenzialmente inaffidabili messaggeri, la loro ricerca di arrivare al consenso e l’ opportunità di includere un blocco o una catena di transazioni valida.

La storia è la stessa.

CHE COSA E’ BFT
La tolleranza ai guasti bizantina (BFT) è la proprietà di un sistema in grado di resistere alla classe di insuccessi derivata dal problema dei generali bizantini. Ciò significa che un sistema BFT è in grado di continuare a funzionare anche se alcuni nodi falliscono o agiscono maliziosamente.
Esistono Blockchain che utilizzano consensi BFT ? si ! Stellar e Ripple per esempio, sono le tecnologie Blockchain piu’ conosciute che utilizzano il consenso BFT.
Stay Tuned.
Risorse :
https://www.mail-archive.com/cryptography@metzdowd.com/msg09997.htmlhttps://medium.com/loom-network/understanding-blockchain-fundamentals-part-1-byzantine-fault-tolerance-245f46fe8419
https://franto4.blogspot.com/2018/10/blockchain-byzantine-full-tollerance.html.
Condividi l'articolo con: