Che cos'è Tendermint?
Home
Articoli
Che cos'è Tendermint?

Che cos'è Tendermint?

Intermedio
Pubblicato Jan 8, 2021Aggiornato Sep 1, 2022
7m

TL;DR

Le blockchain che conosci e utilizzi hanno una struttura piuttosto rigida. Come sviluppatore, questo ti offre due opzioni: creare applicazioni all'interno di un ambiente già definito o forcare (fork) il codice e creare la tua catena. La creazione della propria catena non è così semplice: è necessario avviare anche un network e capire quale meccanismo di consenso utilizzare.

Tendermint è un software open source, utile per il lancio di nuove blockchain che consente di scrivere le applicazioni usando qualsiasi linguaggio. Meglio ancora, tali blockchain possono comunicare tra loro.


Introduzione

La creazione di una nuova criptovaluta o rete blockchain richiede molto più impegno rispetto all'avvio di un database. Richiede uno studio accurato del delicato equilibrio tra incentivi e compromessi tra sicurezza, decentralizzazione e scalabilità.
Sorprendentemente, è stata esplorata una vasta gamma di approcci dai team che desiderano costruire ecosistemi blockchain più forti. In questo articolo daremo un'occhiata a uno di questi approcci: Tendermint.


Cosa c'è da sapere riguardo Tendermint

Molti aspetti di Tendermint ti sembreranno familiari, se hai già un po' di familiarità con la blockchain. Ricapitoliamo alcuni concetti chiave prima di addentrarci in dettaglio.


Comprendere l'architettura blockchain

Tendermint è un tipo di blockchain stack. Lo stesso vale per Bitcoin ed Ethereum. Ricorda, qui non parliamo solo del database che costituisce la blockchain, ma a questo si aggiungono i nodi della rete peer-to-peer, il modo in cui interagiscono tra loro e tutte le cose interessanti che puoi fare con le transazioni e gli smart contract. Qui l'obiettivo è quello di far concordare tutti su uno stato (come fosse un'istantanea del database), anche se non si fidano l'uno dell'altro.
Per la maggior parte, le principali blockchain esistenti al giorno d'oggi, hanno trovato la ricetta segreta che rende possibile tutto questo. Tuttavia, spesso si basano su un' architettura monolitica: un concetto di software engineering che indica come le componenti siano interconnesse e interdipendenti. Non puoi semplicemente prenderne un pezzo e inserirlo dentro qualcos'altro.
L'architettura monolitica non è eccezionale dal punto di vista della flessibilità. Con il modello opposto (ovvero l' architettura modulare), puoi modificare i singoli componenti senza la preoccupazione di rompere qualcosa. Con una struttura monolitica, è necessario assicurarsi che ogni componente rimanga compatibile quando se ne aggiorna uno. 

Ora che abbiamo chiarito questa distinzione, possiamo approfondire il protocollo Tendermint.


Byzantine fault tolerance (BFT)

Forse sai che la grande innovazione di Bitcoin è stata quella di risolvere quello che conosciamo come il Problema dei Generali Bizantini. Non entreremo nelle specifiche del problema (consulta il nostro articolo La Byzantine Fault Tolerance Spiegata se ti interessa). Tutto quello che devi sapere è che descrive in dettaglio uno scenario in cui i partecipanti devono comunicare in un ambiente distribuito. 
Questi partecipanti non sanno se altri mentono o se i messaggi inviati tra di loro vengono modificati. Si dice che un sistema possiede Byzantine fault tolerance (BFT) se i partecipanti possono essere d'accordo su un insieme di fatti, anche con questi problemi presenti.
Ovviamente, in un ambiente decentralizzato, fare bene tutto questo è cruciale. Le criptovalute non Byzantine fault-tolerant non funzionano davvero: in questo caso avresti bisogno di una sorta di entità centralizzata, che ne vanificherebbe lo scopo. Come molte valute digitali, Bitcoin aggira questo problema utilizzando un algoritmo di consenso Proof of Work (PoW).


I tre livelli di una blockchain

Quindi ora conosciamo la differenza tra architettura monolitica/modulare e sappiamo che le reti di criptovalute decentralizzate devono essere Byzantine fault-tolerant. Menzioniamo i livelli (layer) che solitamente vediamo in una blockchain: l'application layer, il consensus layer e il networking layer.
Nei layer di consenso e di networking, i nodi dialogano tra loro e cercano di concordare su una serie di fatti. L'application layer è dove tu puoi agire autonomamente: pensa alle applicazioni decentralizzate e agli smart contract su Ethereum o alle transazioni personalizzate su Bitcoin.



Tendermint Core

Innanzitutto, una rapida spiegazione riguardo la terminologia. Utilizzeremo i termini "Tendermint" e "Tendermint Core" in modo intercambiabile, poiché ci concentriamo solo sulla sua tecnologia. 

Tuttavia, Tendermint è il nome dell'azienda (fondata dallo sviluppatore che ha scritto il white paper originale, Jae Kwon), mentre Tendermint Core è il software sviluppato dall'azienda. Più specificamente, il software ha due componenti principali: il consensus engine (Tendermint Core) e l'interfaccia applicativa (ABCI).

Tendermint Core è un sistema che raggiunge la fault tolerance. In sostanza, è un grande computer distribuito che mostra a tutti le stesse condizioni allo stesso tempo. Finché almeno due terzi dei partecipanti sono onesti, il tutto funziona senza intoppi. Ma è già così per ogni blockchain, giusto? Cosa lo rende così speciale?

Innanzitutto, il meccanismo di consenso utilizzato è del tipo Proof of Stake (PoS). Per ogni periodo, viene selezionato un nodo casuale da un set di validatori. Questo nodo deve quindi proporre il blocco successivo (in un sistema chiamato round-robin). Se gli altri validatori sono soddisfatti, viene aggiunto il nuovo blocco e la catena viene aggiornata. L'aggiunta è immediata: a differenza di Bitcoin o Ethereum, non è necessario attendere delle conferme per assicurarsi che la transazione sia valida.

Ma aspetta, c'è dell'altro! L'architettura di Tendermint Core è modulare, qui l'application layer è indipendente dai layer di consenso e networking. In parole povere, ciò significa che è possibile collegare il proprio application layer agli altri layer presenti. Non c'è la preoccupazione di creare incentivi fastidiosi o algoritmi di consenso. 

Forse per l'utente finale, tutto questo non è così emozionante. Ma per gli sviluppatori, la capacità di sfruttare un framework esistente significa che possono immergersi direttamente nella creazione di applicazioni senza dover avviare un'intera nuova rete. I dati dalla blockchain possono essere convogliati all'integrated layer, permettendo agli sviluppatori di scrivere software usando qualsiasi linguaggio.

La magia avviene usando qualcosa chiamato Application Blockchain Interface, o più semplicemente ABCI. Pensa a questa interfaccia come ai pin GPIO che hai su un Raspberry Pi. Puoi collegarci tutti i tipi di componenti di terze parti, dai LED ad elaborati impianti di irrigazione per le tue piante. In modo simile, l'ABCI definisce il confine tra la blockchain e le applicazioni eseguite sopra di essa.


Cosa ha di speciale Tendermint Core?

La separazione tra l'interfaccia applicativa e il meccanismo di consenso consentono una maggiore flessibilità a una vasta gamma di applicazioni decentralizzate, di incorporare qualsiasi linguaggio di programmazione nella loro logica di business.

Per un esempio tangibile, basta prendere Ethermint: un progetto che ha preso il codebase di Ethereum, eliminato il protocollo Proof of Work e rilasciato l'Ethereum Virtual Machine su Tendermint.
Questo ha reso possibile alcuni sviluppi interessanti. Il primo è che gli sviluppatori di Ethereum potrebbero portare con facilità i loro smart contract sul nuovo engine o scriverne di nuovi usando sempre Solidity. Oltre a fornire funzionalità su Ethereum, Ethermint agisce come una Proof of Stake su Ethereum, dandoci un'idea di come potrebbe apparire l'implementazione di Casper su Ethereum 2.0.


Interoperabilità blockchain

La visione di un "internet of blockchains" è ciò che porta molti ad utilizzare i protocolli basati su Tendermint. L'interoperabilità è un di più, che si è sempre cercato di sviluppare nell'ecosistema crypto, questo significa che centinaia di blockchain singole potrebbero diventare compatibili tra loro.
Al momento, si è lavorato molto allo sviluppo di Cosmos SDK, un framework open source che consente a chiunque di creare una blockchain pubblica o privata per una specifica applicazione. Queste blockchain possono quindi collegarsi alla rete Cosmos, utilizzando il Cosmos Hub, attraverso il quale possono comunicare tra loro.
Numerosi progetti diventati popolari sono stati costruiti con Cosmos SDK, come Binance Smart Chain (BSC), KAVA, Band Protocol, Terra e IRISNet.


In chiusura

Tendermint, con le sue funzionalità di blockchain enegine, ha attirato l'attenzione di numerosi stakeholder nell'ecosistema crypto, dagli sviluppatori agli utenti finali. 

Se il software continua ad aumentare di popolarità, potrebbe essere utilizzato come spina dorsale nella costruzione dell'internet of blockchains. Come abbiamo visto, alcuni progetti hanno seguito questa visione e sono già stati lanciati tramite Cosmos SDK.