Translate

lunedì 29 ottobre 2018

BLOCKCHAIN- SISTEMI DISTRIBUITI PROOF OF STAKE " Tendermint " Part. 7

appunti  ...

Tendermint è stato il primo meccanismo di consenso Proof-of-Stake basato su BFT, creato da Jae Kwon e la sua squadra nel 2014.

Per dare un po 'di contesto storico, Tendermint portava con sé il rigore accademico di più meccanismi di consenso tradizionali come PBFT, Paxos e Raft in uno spazio che al momento era per lo più dominato da nuovi meccanismi di consenso blockchain, ovvero Proof-of-Work e altri meccanismi di consenso di Nakamoto.

COME FUNZIONA
In Tendermint abbiamo un set di validatori globalmente noto e predefinito. Il Consenso procede in tre turni, e ad ogni round, deve votare più di ⅔ dell'intero set di validatori per il blocco proposto, per procedere al turno successivo.

Altrimenti, se non lo facciamo il loro voto vale zero.

Tendermint favorisce la coerenza rispetto alla disponibilità. I validatori si aspettano l'un l'altro per votare prima dello scadere ( o meglio prima che lo stato venga aggiornato ) ed arrivare così al consenso.

>> ad ogni nuova immissione del blocco, viene scelto un validatore per proporre un nuovo blocco. Si tratta nel caso specifico del blocco cerchiato di rosso ( validatore scelto a caso ) .


NEL PRIMO ROUND " PREVOTI "
Il resto dei validatori può prevaricare il blocco o prevenirlo

Se riceviamo più di ⅔ di prevoti, arriviamo alla polka - da qui l'immagine del due persone che ballano nell'angolo in basso a destra.

Il passaggio successivo si chiama PRECOMMIT
Se ⅔ i validatori precompilano il blocco, viene eseguito il commit del blocco. Altrimenti, avviene una nuova votazione e si riparte con il round.


Al termine di questa sessione e nel passaggio successivo, selezioniamo un validatore per proporre il prossimo blocco.
Tendermint fa questo con un algoritmo di selezione round robin ( attività in cui i partecipanti si alternano, in modo regolare, nel suo svolgimento.) che seleziona i proponenti in proporzione al loro potere di voto - che nel caso di Proof of Stake è dipendente da quanto ogni validatore ha deciso di scommettere.



MA FACCIAMO UN ESEMPIO CON UNA RETE 

Diciamo che Rustie viene scelto come proponente. Quindi nella fase "Propose", propone il prossimo blocco. Questo è il blocco giallo sopra il suo nome.
Dal momento che che abbiamo 5 validatori, abbiamo bisogno di almeno 4 " cerhi " per raggiungere la soglia superiore a ⅔.


Quindi aspettiamo un po 'di tempo prima che arrivino tutte le anticipazioni. Ricorda che Tendermint è parzialmente sincrono, quindi smettiamo di aspettare dopo che è trascorso il tempo di timeout, e prendiamo qualsiasi scelta, presupponendo che il resto sia prevote nullo.

Diciamo che tutti prevengono per il blocco prima che scada il tempo, il che significa che abbiamo 5/5 prevote per il blocco che è più di ⅔. E questa è una polka !



Bene, quindi ora siamo nella fase successiva, che è precommit. Tutti quelli che originariamente hanno votato per il blocco precedente nell'ultima fase, dovrebbero essere per il blocco precommit ..


PROBLEMA  !!
Sembra che NADIR E NICK, siano separati dal resto della rete, forse per un crash dei nodi o per un problema della stessa rete .


Derrick, Gloria e Rustie sono tutti precommit al blocco.. e nel frattempo, poiché nessuno ha mai sentito né Nick né Derick, ed è passato il timeout, contiamo quei voti come precommit nil ( ZERO ).

Ora pero', abbiamo solo ⅗ di pre-commit per il blocco, che non è il ⅔ del numero totale di validatori. Quindi dal momento che non abbiamo ricevuto più di ⅔ di pre-commit per il blocco, non possiamo impegnarci il blocco Rustie proposto, quindi dobbiamo andare a un nuovo round.

l'algoritmo di selezione del proponente di Tendermint è round-robin, quindi se Derrick ha puntato la seconda somma più alta dopo Rustie, in questo caso sarà il prossimo a poter proporre un blocco.


Ora se NADIR è riuscito  a riavviare il computer in crash, ed è tornato online viene considerato un validatore. Questa volta, se tutti prevengono e precommettono il blocco,  e nessuno si blocca o fallisce in qualsiasi altro modo, allora abbiamo ⅘ di validatori , che sono più di ⅔, quindi potremmo potenzialmente fare il COMMITI di questo blocco successivo.


Mentre se Nick continua ad essere offline, il suo apporto/deposito potrebbe essere escluso.

Risorse
https://medium.com/coinmonks/cosmos-tendermint-explained-for-real-idiots-ab4305cbb41

n.b.

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