PROOF OF STAKE: ” Tendermint “

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, iniziamo con il dire che Tendermint portava con sé il rigore accademico di più meccanismi di consenso tradizionali, come PBFT Paxos in uno spazio che al momento era per lo più dominato da nuovi meccanismi di validazione blockchain, ovvero Proof-of-Work e altri .

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 e qualora cio’ non si  verifica, il loro voto vale ZERO.

Tendermint favorisce la coerenza rispetto alla disponibilità ed 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 che propone il nuovo blocco. Si tratta nel caso specifico del blocco cerchiato di rosso ( validatore scelto a caso ) .

IL PRIMO ROUND E’ DETTO DI  ” PREVOTI “

Se si ricevono più di ⅔ di prevoti, si arriva alla polka – da qui l’immagine del due persone che ballano nell’angolo in basso a destra e si apre la strada per il passo successivo, detto di PRECOMMIT, che in pratica stabilisce che se ⅔ dei validatori hanno precompilato il blocco, allora abbiamo il cosidetto commit, mentre se cio’ non dovesse accadere si verifica una nuova votazione e si riparte con un ulteriore nuovo round.

Nel passaggio successivo,  un nuovo validatore selezionato propone il nuovo blocco.

In Tendermint cio’ è regolato attraverso 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 (stake) ogni validatore ha deciso di scommettere.

 

FACCIAMO UN ESEMPIO per capire meglio come Tendermint arriva al consenso.

Diciamo che Rustie viene scelto come proponente. Quindi nella fase “Propose”, propone il blocco. Questo è il blocco giallo sopra il suo nome.

Dal momento 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.

Tendermint è parzialmente sincrono, quindi smettiamo di aspettare dopo che è trascorso il tempo di timeout e prendiamo qualsiasi decisione, presupponendo che il resto sia prevote nullo.

Bene, ora supponiamo che tutti prevengono per il blocco prima che scada il tempo, il che significa che abbiamo 5/5 prevoti per il blocco e questo è più di ⅔ ed in queste condizioni diciamo che è avvenuta una Polka !

A questo punto passiamo alla fase successiva, chiamata di precommit. Ma abbiamo un PROBLEMA !!


Sembra che NADIR e NICK, siano separati dal resto della rete, forse per un crash dei nodi o per un problema del network.

Derrick, Gloria e Rustie sono tutti precommit al blocco… ma poiché nessuno ha mai sentito né NickDerick, ed è passato il timeout, dobbiamo necessariamente contare quei voti come precommit nul ( cioè ZERO ).

A questo punto’ abbiamo solo ⅗ di pre-commit per il blocco, che non è il ⅔ necessario e richiesto per validarli.

Quindi dal momento che non abbiamo ricevuto più di ⅔ di pre-commit per quel blocco, non possiamo garantire il blocco proposto da Rustie, ragion per cui dobbiamo procedere con un nuovo round.

L’algoritmo di selezione di Tendermint è round-robin, quindi se Derrick ha puntato la seconda somma più alta dopo Rustie, sarà proprio lui il prossimo a poter proporre un blocco.

Ora se NADIR è riuscito a riavviare il computer, che prima era in crash e tornare online, viene considerato 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 del blocco proposto da Derrick

Tutto ok anche se Nick continua ad essere offline

Link e fonte: https://franto4.blogspot.com

Condividi l'articolo con: