Cosmos è uno dei più famosi progetti blockchain Layer0, permette cioè di costruire blockchain di base o applicazioni decentralizzate utilizzando Tendermint e l’SDK. Ma cosa sono questi strumenti e come possiamo utilizzarli?
Se almeno saltuariamente avete dato un’occhiata al panorama blockchain e criptovalute, probabilmente vi sarete imbattuti spesso nei termini “tendermint” e “Cosmos SDK”. Si tratta di un insieme di strumenti e framework che possono essere utilizzati per costruire blockchain di base, applicazioni decentralizzate (dApp), monete e così via.
Quando si parla di questo argomento, i contenuti che si trovano online possono spesso essere fuorvianti. Il motivo principale è che i materiali in questione cercano di presentare queste tecnologie in modo diretto, senza approfondire la filosofia che sta alla base della loro applicazione.
A questo proposito inizieremo a esaminare l’architettura della blockchain. Dopodiché, analizzeremo i diversi modi in cui i progetti blockchain possono essere sviluppati.
Nella sezione successiva, discuteremo di come Tendermint e l’SDK Cosmos si inseriscono nel quadro generale. Infine, esamineremo tre progetti ben noti che sono stati portati a termine con successo utilizzando queste tecnologie.
Table of Contents
Qual è l’architettura di base delle blockchain
Ogni blockchain è composta da tre livelli principali:
- Primo livello: il livello di consenso
Una blockchain è un registro distribuito che assicura l’integrità delle transazioni e l’ordine in cui avvengono attraverso un processo noto come consenso. Durante questa fase del processo, un gruppo di membri della rete noti come miner, validatori o altri nomi con connotazioni simili tenterà di proporre, convalidare e approvare una serie di blocchi contenenti transazioni. Questi nodi non si fidano automaticamente l’uno dell’altro. Inoltre, la tecnica utilizzata per distribuire i compiti tra i nodi della rete è unica per ogni modello di consenso. Il livello di consenso è il modulo incaricato di gestire tutti i compiti associati al consenso. - Secondo livello: il livello di rete
La capacità dei nodi di una blockchain di comunicare tra loro è una caratteristica fondamentale della tecnologia. Nei sistemi costruiti su libri mastri distribuiti (DLL), sono necessari diversi tipi di comunicazione. Per cominciare, è necessario che i nodi responsabili del raggiungimento del consenso interagiscano tra loro prima di effettuare qualsiasi scelta. Inoltre, gli utenti devono poter inviare le loro transazioni. Infine, è necessario che le applicazioni di terze parti, come gli smart contract, i portafogli e le applicazioni decentralizzate (dApp), trovino un canale che consenta loro di effettuare transazioni con le blockchain. Il livello di rete è la parte dello stack incaricata di supportare tutti questi diversi tipi di comunicazione. - Il terzo livello è quello della logica applicativa.
Il termine generale che utilizziamo quando ci riferiamo ai sistemi di registro distribuito è “blockchain”. In teoria, qualsiasi blockchain può essere considerata un’infrastruttura per lo sviluppo di applicazioni decentralizzate. Il perfetto esempio di sistema di pagamento decentralizzato peer-to-peer è Bitcoin. Ethereum è una piattaforma a libro mastro distribuito che consente lo sviluppo di contratti intelligenti. Di conseguenza, è ragionevole affermare che qualsiasi progetto descritto in questo spazio dovrebbe avere una logica aziendale unica. Questa particolare caratteristica è proprio ciò che distingue i casi d’uso dei vari progetti. L’Application Logic Layer è il modulo che verrà utilizzato per definire e implementare tali logiche.
Quali sono i metodi per lo sviluppo di Blockchain
Esistono quattro modi diversi per costruire progetti utilizzando la tecnologia blockchain.
#1 – Forkare (dividere) le blockchain già esistenti
Il software open-source è utilizzato praticamente per tutte le blockchain attualmente in uso. Ciò significa che chiunque può ottenere una copia di questi codici sorgente, apportarvi modifiche e quindi distribuirli nuovamente sotto un’altra identità. Questo tipo di progetto viene definito fork. Se si esaminano i numerosi progetti blockchain, si scoprono molti esempi di fork di questo tipo. Ad esempio, il Litecoin (LTC) è stato creato dalla scissione del Bitcoin. Ancora più interessante è il fatto che Dogecoin (DOGE) è nato come fork di Litecoin. L’aspetto positivo della biforcazione è che libera gli sviluppatori dall’onere di dover costruire qualcosa da zero. Possono utilizzare codici già prodotti in precedenza e, se necessario, aggiungere ulteriori funzionalità a tali programmi. Tuttavia, è necessario un livello di comprensione tecnica molto elevato.
Alcuni esempi di famosi Fork:
- Litecoin (LTC)
- Dogecoin (DOGE)
- Bitcoin Cash (BCH)
- eCash (XEC)
- Ethereum Classic (ETC)
#2 – Creare smart contract su blockchain esistenti
Esiste una moltitudine di blockchain che forniscono funzionalità di smart contract. Gli accordi codificati, spesso noti come contratti intelligenti, vengono eseguiti su macchine virtuali. Grazie a questi programmi è possibile implementare facilmente un’ampia gamma di applicazioni, tra cui portafogli, app DeFi, token non fungibili (NFT) e altro ancora. Il vantaggio dell’uso dei contratti intelligenti è che gli sviluppatori di software non devono preoccuparsi dei fondamenti della blockchain o della sua architettura sottostante.
Devono solo concentrarsi sulla logica che sta alla base dell’accordo. Il resto, comprese le questioni relative alla sicurezza e alla decentralizzazione, sarà curato dalla blockchain in cui sarà installato il codice. Il problema più significativo, d’altra parte, è che la dApp creata con questi contratti avrà le stesse restrizioni della blockchain su cui si basa. I contratti intelligenti utilizzati sulla blockchain di Ethereum sono un esempio ben noto. Nella sua attuale iterazione, Ethereum soffre di problemi di scalabilità. Di conseguenza, anche gli smart contract implementati su questa blockchain incontrano notevoli difficoltà a causa del flusso di transazioni e delle commissioni.
Alcuni esempi:
#3 – Costruire nuove blockchain da zero
Questa è probabilmente la scelta più difficile tra le opzioni disponibili. In questo contesto, stiamo discutendo il processo di costruzione di una blockchain da zero. A tal fine, è necessario:
- Creare un livello di consenso
- Costruire il livello di rete
- Creare un livello per la logica dell’applicazione.
Come già illustrato nelle parti precedenti, ogni livello è caratterizzato da diversi fattori tecnici. Di conseguenza, la costruzione di blockchain utilizzando questa metodologia richiederà quasi certamente un aumento del tempo e dell’impegno profuso.
Il vantaggio di adottare questa strategia è che il progetto non dipenderà da alcun codice scritto da terzi. Pertanto, gli sviluppatori del progetto sono pienamente in grado di portare a termine il cento per cento del piano, pur mantenendo la massima flessibilità.
Alcuni esempi di blockchain costruite da zero:
#4 – Utilizzare API e SDK già esistenti
L’ultima scelta di questo elenco è probabilmente quella che più si adatta al vostro senso di avventura. Per lo sviluppo di progetti blockchain, gli sviluppatori possono utilizzare API e SDK già disponibili. Queste tecnologie forniscono essenzialmente ai programmatori componenti pronti all’uso per i loro progetti. Alcuni esempi sono:
- Modelli di consenso
- Protocolli di Networking
- Metodi di crittografia
- Storage APIs
- Client Side Frameworks
- Web Frameworks
- Moduli di Authentication/Authorization
Ciò implica che gli sviluppatori non costruiscono tutto da zero (noto anche come core blockchain) e, allo stesso tempo, non si affidano alla sicurezza e alle prestazioni dei progetti già esistenti (noti anche come fork e smart contract). Di conseguenza, questa strategia incorpora gli aspetti che funzionano meglio di tutte le altre.
Progetti di esempio:
- Hyperledger
- Binance Chain
- Kava (KAVA)
- Oasis Network (ROSE)
Cos’è Tendermint e come funziona
Tendermint è un insieme di strumenti e tecnologie già pronti per essere utilizzati allo scopo di implementare i livelli di consenso e di rete delle applicazioni blockchain. In altre parole, gli sviluppatori possono costruire progetti completi collegando la logica aziendale delle loro applicazioni ai componenti di Tendermint. Vediamo ora più da vicino i due componenti principali della pianta: le foglie e gli steli.
#1 – Il Blockchain Consensus Engine, noto anche come Tendermint Core.
Il Tendermint Core è il nome dato alla componente della rete responsabile del raggiungimento del consenso. Questo componente è guidato dal modello di consenso Byzantine Fault Tolerant (BFT). Byzantine è una forma abbreviata della parola “traditore” o “cattivo attore”, e il modello BFT può ottenere il consenso con meno di un terzo dei validatori Byzantine anche se sono presenti.
Si può avere una panoramica del processo BFT guardando l’immagine qui sopra. Le fasi principali sono quattro:
- Propose
Un nuovo validatore propone di collocare un blocco a una particolare altezza. - Prevote
Nella fase iniziale della votazione, nota come pre-voto, almeno due terzi dei validatori devono votare a favore del blocco proposto.
- Precommit
Il precommit è la seconda fase della votazione. Qui si richiede che almeno due terzi dei validatori si impegnino a sostenere il blocco proposto. - Commit
Il blocco proposto sarà aggiunto alla blockchain una volta convalidato e impegnato.
Nel caso in cui qualcosa vada storto in un determinato momento, sono previste alcune regole e condizioni per affrontare la circostanza. Se un validatore non è in grado di impegnare un blocco, ad esempio, gli altri validatori, dopo un periodo di attesa, bypasseranno il blocco e passeranno alla fase decisionale successiva.
#2 – L’Application BlockChain Interface (ABCI)
L’Application Blockchain Interface (ABCI) è un insieme di metodi già predisposti per l’uso e progettati per collegare la logica del livello applicativo al motore di consenso. Pertanto, l’ABCI è la parte più importante del livello di rete e si raccomanda che tutte le comunicazioni e le transazioni vengano instradate attraverso di essa.
È possibile stabilire più connessioni socket ABCI contemporaneamente a un’applicazione. Le seguenti sono le più significative:
- CheckTx
CheckTx è utilizzato per convalidare le transazioni ricevute dagli utenti prima che vengano aggiunte al mempool. - BeginBlock
BeginBlock è il nome di un hook utilizzato per determinare se un nuovo blocco debba essere creato o meno quando la maggior parte dei validatori del set di validatori ha dato la propria approvazione. - DeliverTx
DeliverTx chiamerà la logica dell’applicazione per analizzare e gestire la transazione e aggiornare lo stato. - EndBlock
EndBlock è un gancio che interrompe l’elaborazione di ogni blocco dopo il suo completamento. - Commit
Dopo che l’elaborazione del blocco è stata completata, si esegue il commit per terminare l’elaborazione del blocco.
È importante notare che il componente fondamentale di ABCI è un insieme di chiamate API. Pertanto, gli sviluppatori hanno la totale libertà di utilizzare il linguaggio di programmazione che preferiscono (come Solidity, Rust o C++) per implementare queste funzioni nel livello di logica applicativa del loro software.
Quali sono i vantaggi di Tendermint
Compartimentazione dei rischi
Come già detto, Tendermint è composto da due elementi principali. Tendermint Core è il motore di consenso, mentre ABCI è l’interfaccia di programmazione applicativa per il livello di rete. I vari livelli che compongono un progetto blockchain possono essere scomposti nelle loro parti componenti utilizzando questa strategia. Ciò offre una certa flessibilità agli sviluppatori, consentendo loro di concentrarsi sui problemi di ciascun livello.
Consenso BFT
Il modello di consenso Byzantine Fault Tolerant (BFT) è un metodo sicuro e affidabile per raggiungere un accordo tra i nodi. Questo modello è utilizzato nel motore di consenso di Tendermint e su di esso sono state costruite molte altre funzioni per garantire un funzionamento impeccabile in tutti i progetti.
Quali sono gli svantaggi e rischi di Tendermint
Attacchi 33%
Come appena già accennato, il modello BFT è in grado di accogliere fino a un terzo dei nodi bizantini come traditori. Ciò indica che la blockchain è suscettibile di attacchi, spesso noti come hack, se un terzo dei nodi validatori della rete si comporta in modo sbagliato.
Questo tasso di tolleranza ai guasti è significativamente più basso rispetto a quello di altri modelli di consenso. A titolo di esempio, questo tasso è del 51% nel modello di consenso Proof of Work (PoW).
Il numero totale di validatori
Tendermint non è una piattaforma di calcolo completamente asincrona. I validatori devono comunicare tra loro durante i vari processi (prevote, precommit e commit) in modo che la rete possa ottenere il consenso e diffondere le transazioni e i blocchi.
Di conseguenza, il throughput dell’intero sistema è estremamente dipendente dal numero totale di validatori. Il throughput del sistema diminuirà proporzionalmente al numero di validatori presenti nel sistema.