Translate

sabato 27 ottobre 2018

BLOCKCHAIN - BYZANTINE FULL TOLLERANCE NEI SISTEMI DISTRIBUITI Part. 2

Il problema del consenso .

La tolleranza è la caratteristica che definisce un sistema che tollera la classe di insuccessi che appartengono al problema dei generali bizantini.

Famoso scritto nel 1982 da Lamport, Shostak e Pease, descrive lo stesso 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 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).
Per raggiungere il consenso qui, il comandante e ogni luogotenente devono concordare sulla stessa decisione (per attacco o ritirata).


Questa è la storia dei Generali BIZZANTINI che assediano una città nemica...

> Hanno tutti circondato la città, ma c'è un problema: la presenza di grandi barriere fisiche, come le montagne e i canyon, 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à.

Questi generali traditori ( BIZZANTINI )  potrebbero inviare informazioni errate ai loro coetanei al fine di rovinare l'attacco, impedendo quindi un CONSENSO comune.

Inoltre, i loro messaggi potrebbero andare perduti o essere a loro volta " corrotti " dai messaggeri

COME POSSIAMO RAGGIUNGERE IL CONSENSO ?


E' evidente che non c'è soluzione in presenza di almeno ⅓ o maggiore 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. In altre parole, non solo i nodi potrebbero non fermarsi, rispondere o ricevere informazioni, ma potrebbero anche inviare informazioni corrotte e / o false.
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 fail-stop (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.


QUALI SONO LE SIMILITUDINI

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 .

Risorse :
https://www.mail-archive.com/cryptography@metzdowd.com/msg09997.html

https://medium.com/loom-network/understanding-blockchain-fundamentals-part-1-byzantine-fault-tolerance-245f46fe8419

Nota dell'autore. Se sei arrivato fino a qui, grazie ! Se vuoi supportare questo documento ( con note e / o miglioramenti ) oppure mi vuoi suggerire errori e/o omissioni, aggiunte da fare, ti invito a lasciare un commento ed una nota di miglioramento, attraverso l'apposito campo " commenti " .

Ti ringrazio.

Write By     Andrea Belvedere
Follow me. https://twitter.com/AndreaBelvedere