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