Cos'è Tendermint

Tendermint è un motore blockchain di basso livello che fornisce una replica dello stato sicura e coerente su molte macchine. È uno strumento debolmente sincrono (per lo più asincrono), Byzantine Fault Tolerant (BFT) che viene utilizzato come consenso plug-and-play per stati di applicazione arbitrari e sistemi distribuiti.

Concepito principalmente come un meccanismo di consenso più efficiente e sicuro per il protocollo di prova del lavoro di Bitcoin, Tendermint si è evoluto nel corso della sua esistenza ed è ora il motore di consenso sottostante della rete Cosmos.

Cos'è Tendermint

Sfondo di Tendermint

Tendermint è un progetto open-source proposto da Jae Kwon nel 2014 in ambito accademico pubblicazione che ora è obsoleto, ma è una lettura affascinante se hai tempo. Risolve il problema della replica sicura e coerente in macchine a stati che sono intrinsecamente difficili da ottenere.

Nei sistemi blockchain, la necessità di tollerare attori maligni che compromettono i nodi e propagano falsi messaggi è una caratteristica fondamentale che consente loro di funzionare e raggiungere un consenso onesto sullo stato della rete. Tuttavia, i mezzi per raggiungere questo consenso con il modello di prova del lavoro di Bitcoin sono inefficienti e richiedono molte risorse. Tendermint ha proposto un nuovo modello BFT, concentrandosi in particolare anche sul consentire al motore di consenso primario del software Tendermint di essere utilizzato in varie altre reti blockchain ed essere universalmente compatibile con altri linguaggi di programmazione.

Pratica tolleranza agli errori bizantini

Leggi: Cos’è Nakamoto Consensus?

Di conseguenza, il concetto iniziale di Tendermint è stato ottimizzato nel corso degli anni per facilitarne l’uso come motore di consenso blockchain generico con un’interfaccia applicativa proprietaria. Attualmente, Tendermint è il motore dell’infrastruttura della rete Cosmos, una piattaforma framework multi-chain, comunemente nota come “Internet of Blockchain”.

Nel complesso, Tendermint ha alcune capacità uniche e una tecnologia intrigante. Quindi, come funziona?

Come funziona?

Tendermint è un motore blockchain generico che può ospitare stati di applicazione arbitrari ed è composto principalmente da 2 componenti principali:

  1. Tendermint Core – Il motore di consenso Tendermint BFT
  2. Application BlockChain Interface (ABCI): consente la replica BFT di app scritte in qualsiasi linguaggio di programmazione

Tendermint funziona come un prova della posta in gioco protocollo che è BFT. Progettato come uno strumento plug-and-play, è sia intuitivo da usare che realizzato per un’interoperabilità efficiente. Può essere implementato efficacemente come meccanismo di consenso per qualsiasi rete blockchain. L’ABCI disaccoppia il meccanismo di consenso dal livello P2P dello stato dell’applicazione e consente un’interfaccia pulita tra la logica dell’applicazione e il motore di consenso.

Tendermint utilizza un meccanismo di proof of stake, che è fondamentale da tenere a mente quando si legge la sezione seguente. Diamo un’occhiata ai 2 componenti principali.

Tendermint Core

Tendermint Core, motore di consenso alla base del software Tendermint generale, garantisce che le macchine nella rete distribuita registrino l’ordine delle transazioni allo stesso modo. Poiché Tendermint è un meccanismo di consenso BFT, fa le stesse ipotesi di altri sistemi BFT, in particolare che non più di ⅓ dei nodi nella rete possono essere bizantini in un dato istante.

Allo stesso modo, utilizza un meccanismo di voto basato su round come altri meccanismi BFT. Per mettere meglio il concetto nel contesto, di seguito è riportato un elenco di meccaniche BFT simili per la selezione del nodo leader in ogni round:

  • Il pratico BFT utilizza un formato in stile round-robin per selezionare il nodo leader per ogni round.
  • La prova del tempo trascorso utilizza un timer randomizzato all’interno di SGX per il processo di selezione del leader.
  • Bitcoin utilizza Nakamoto Consensus, dove un puzzle computazionale di prova del lavoro viene risolto in un formato simile a una lotteria per determinare il leader di ogni round (mining).

Tendermint utilizza una versione ottimizzata progettata per scalare a migliaia di transazioni al secondo e consentire una facile funzionalità plug-and-play. Possiamo suddividere il round in Tendermint BFT in 3 fasi:

  • Proposta di blocco
  • Pre-votazione
  • Pre-commit

I partecipanti al protocollo sono validatori. I validatori propongono e votano i blocchi nella rete in base alla loro partecipazione complessiva nel round. Pertanto, l’ipotesi ⅓ BFT è basata sul “peso” di ciascun validatore – determinato dalla loro posta correlata – piuttosto che sul ⅓ del totale dei nodi partecipanti.

I validatori mantengono un nodo client completo con una copia della blockchain e utilizzano le chiavi pubbliche come identificatori. Il proposta di blocco fase è quando un validatore propone un nuovo blocco in un round.

Il pre-votazione fase è dove i validatori votano sul blocco proposto e procedono alla fase di pre-commit se più di ⅔ dei validatori pre-votano il blocco proposto. Questo è noto come polka.

Nel round di pre-commit, se più di ⅔ dei validatori pre-commit del blocco pre-votato, il blocco viene assegnato alla blockchain. In particolare, ogni pre-commit deve essere giustificato da una polka nello stesso round.

I validatori che propongono blocchi falliti o firmano blocchi inappropriati rischiano di avere la loro posta in gioco tagliato. Il processo in 3 fasi ripetuto sopra è considerato un round.

Tendermint è per lo più asincrono (o debolmente sincrono) quindi potrebbero essere necessari diversi round prima che un blocco venga commesso. Il processo di proposta è parzialmente sincrono mentre il processo di votazione è asincrono. Secondo Tendermint:

“I validatori potrebbero non riuscire a eseguire il commit di un blocco per una serie di motivi arbitrari; ad esempio, il proponente corrente potrebbe essere offline o una rete potrebbe avere una latenza. Tendermint consente di saltare un validatore. I validatori attendono un po ‘di tempo per ricevere un blocco completo della proposta dal proponente prima di votare per passare al round successivo. Questa dipendenza da un timeout è ciò che rende Tendermint un protocollo debolmente sincrono, piuttosto che asincrono. Tuttavia, il resto del protocollo è asincrono e i validatori fanno progressi solo dopo aver ascoltato più di ⅔ del set di validatori. “

Grazie al suo design, Tendermint garantisce che la sicurezza non verrà mai violata, quindi una blockchain Tendermint non verrà mai biforcata. Tuttavia, la rete può arrestarsi a causa del requisito che la maggior parte dei validatori abbia un tempo di attività del 100%.

Nel complesso, il meccanismo di consenso sacrifica un certo grado di vivacità per la sicurezza del consenso e la finalità immediata.

Interfaccia BlockChain dell’applicazione (ABCI)

L’ABCI è un componente critico della flessibilità di Tendermint e consente di scrivere la replica BFT delle applicazioni in qualsiasi linguaggio di programmazione.

Tendermint descrive la motivazione dietro l’ABCI come il design monolitico dello stack delle attuali piattaforme di criptovaluta come Bitcoin ed Ethereum. I progetti monolitici portano a complessità di manutenzione del protocollo e limitano la capacità di altri linguaggi di programmazione di interagire con la blockchain. Ad esempio, Ethereum supporta una macchina virtuale bytecode completa di Turing, ma i linguaggi di programmazione sono limitati a quelli che possono compilare fino a quel bytecode come Solidity e Vyper.

L’implementazione principale dell’ABCI è il Tendermint Socket Protocol (TSP) ed è il modo in cui Tendermint Core comunica con l’applicazione. Mentre Tendermint Core è responsabile del mantenimento e della verifica dell’ordine canonico delle transazioni nei blocchi della blockchain, l’ABCI convalida le firme crittografiche, mantiene il database delle transazioni e consente ai clienti di interrogare il database delle transazioni.

L’ABCI utilizza 3 tipi di messaggi principali:

  • DeliverTX
  • CheckTX
  • Commettere

Il DeliverTX il messaggio accompagna ogni transazione nella blockchain e può aggiornare lo stato dell’applicazione solo dopo la convalida.

Il CheckTX il messaggio è per la convalida delle transazioni e viene prima verificato da mempool di Tendermint Core. Solo le transazioni valide vengono propagate attraverso la rete.

Il Commettere messaggio calcola un impegno per lo stato corrente dell’applicazione, consentendo la verifica delle prove Merkle rispetto a un hash di blocco firmato da un quorum.

L’ABCI è orientato alla connessione e Tendermint Core mantiene tre connessioni ABCI all’applicazione.

  • Connessione Mempool
  • Consensus Connection
  • Connessione query

Il Connessione Mempool utilizza il messaggio CheckTX e serve per verificare se le transazioni devono essere inoltrate prima del commit.

Il Consensus Connection esegue le transazioni di cui è stato eseguito il commit.

Il Connessione query consente ai client di interrogare lo stato dell’applicazione.

L’ABCI è un componente dinamico del software Tendermint ed è parte integrante della capacità del framework multi-chain del Cosmos Network, che alimenta come motore blockchain sottostante della rete.

Credito immagine – Documentazione Tendermint

Tendermint & La rete Cosmos

La rete Cosmos è un framework blockchain multi-chain incentrato sull’affrontare le principali questioni di scalabilità e interoperabilità dei sistemi blockchain.

Interoperabilità Blockchain

Leggi: Blockchain Interoperability: Issues & Soluzioni future

È alimentato dal classico motore blockchain BFT di Tendermint e funge da struttura più ampia per blockchain indipendenti da collegare e funzionare all’interno di un ambiente di comunicazione standardizzato. La rete consente alle blockchain pubbliche e private di comunicare e scambiare valore tra loro e sfrutta la scalabilità interoperabile attraverso il meccanismo di consenso della prova di stake di Tendermint.

Inoltre, l’ABCI di Tendermint consente agli sviluppatori di creare facilmente diversi blockchain come parte dell’ecosistema, utilizzando qualsiasi linguaggio di programmazione. Il Cosmos SDK è un framework ABCI scritto nel linguaggio di programmazione Go e Lozione JS è un framework ABCI scritto in JavaScript.

C’è una notevole eccitazione intorno a framework multi-chain come Cosmos e Polkadot. Puoi trovare maggiori informazioni e risorse su Cosmos e la sua integrazione con Tendermint nel loro documentazione.

Conclusione

Tendermint rappresenta un altro progresso nella ricerca e nello sviluppo della tolleranza ai guasti bizantina nelle reti distribuite, in particolare nei sistemi blockchain. Questi tipi di innovazioni sono fondamentali per lo sviluppo di reti blockchain più scalabili e interoperabili come Cosmos.

Tendermint e progressi simili nel consenso BFT sono ottimi esempi di quanto sia arrivata l’industria delle criptovalute a spingere la busta in tecnologie all’avanguardia. È necessaria molta più innovazione affinché il concetto più ampio alla base della tecnologia blockchain raggiunga il suo vero potenziale, ma i progetti sono sulla strada giusta e stanno cambiando dinamicamente il panorama del computing distribuito.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me