Introduzione
Cosmos a primo impatto può essere confusa per una semplice blockchain, una delle tante.
In realtà è molto più complessa e affascinante e sta rapidamente crescendo grazie alla sua facilità di sviluppo ed efficienza.
L’obiettivo di Cosmos è risolvere il famoso trilemma della blockchain, ossia costruire una blockchain che sia contemporaneamente molto sicura, molto decentralizzata e molto scalabile.
Tutto quello che leggi in questa guida è riportato all’interno di questo video.
Cosa è una Blockchain
Partiamo col capire cosa è una blockchain. Ne abbiamo parlato approfonditamente qui, ma in questo caso riprendiamo la stessa domanda da un altro punto di vista.
Una blockchain può essere descritta come un registro digitale diffuso, mantenuto insieme da un set di validatori (di cosa è un validatore ne parliamo meglio più avanti).
Ciascun validatore memorizza una copia del libro mastro sul proprio server e lo aggiorna secondo le regole definite dal protocollo, quando riceve blocchi di transazioni.
L’obiettivo della blockchain è assicurarsi che il libro mastro sia replicato correttamente ovunque.
Questo fa sì che ogni nodo onesto onesto veda la stessa versione del libro mastro in un dato momento (parlo di nodo onesto perché vedremo successivamente che alcuni nodi potrebbe non essere onesti e potrebbero non comportarsi bene. Quando avviene che dei nodi cerchino di imbrogliare ci sono delle conseguenze pesanti, sia per il nodo, sia per chi eventualmente ha delegato a quel nodo lo stake).
Dicevamo, il principale vantaggio della tecnologia blockchain è la possibilità per le parti di condividere un libro mastro senza dover fare affidamento su un’autorità centrale.
Dal punto di vista dell’architettura, le blockchain (bitcoin, ethereum e tutte le altre) possono essere suddivise in tre livelli concettuali:
Applicazione: responsabile dell’aggiornamento dello stato in base a una serie di transazioni, ovvero l’elaborazione delle transazioni.
Consenso: consente ai nodi di concordare sullo stato corrente del sistema.
Networking: Responsabile della propagazione delle transazioni e dei messaggi relativi al consenso.
Quali sono le limitazioni delle blockchain
Approfondiamo quali sono i limiti delle altre blockchain e cosa propone Cosmos di innovativo.
Nella storia abbiamo una prima tipologia di blockchain, che è quella di Bitcoin. È la prima chain a essere creata e per questo non è particolarmente ottimizzata. Paradossalmente forse è anche questo che ha creato poi tutto il valore di bitcoin.
Non nasce per essere avere applicazioni decentralizzate e non nasce per condividere la blockchain con altre potenziali applicazioni. Impropriamente possiamo dire che bitcoin è l’unica applicazione decentralizzata della rete Bitcoin.
Bitcoin è monolitico: la rete e la applicazione che gira sopra sono praticamente la stessa cosa e anche i tre livelli di cui parlavamo poco fa, networking, consenso e applicazione sono sostanzialmente fusi in un unico oggetto.
Per ovviare a questo problema viene inventato Ethereum, che rimane una chain PoW fino a circa metà del 2022 (ancora lo è).
Ethereum va a creare una blockchain su cui è possibile sviluppare infinite applicazioni decentralizzate grazie alla Ethereum Virtual Machine.
Così facendo potrebbe sembrare che la parte di Applicazione si smembri dal Consenso e dal Network, in realtà è la stessa EVM che è l’unica APP a girare su Ethereum e sopra la EVM girano le dapps.
Quindi si presentano sostanzialmente tre tipi di problemi:
- Scalabilità: finché sono 2, 3, 10, 100 applicazioni decentralizzate il sistema è sostenibile. Quando le applicazioni su Ethereum diventano più complesse e sono migliaia o decine e centinaia di migliaia, allora la scalabilità ne risente moltissimo.
La chain Proof of Work di Ethereum ha una massima di 15 transazioni al secondo e quando le richieste son più alte, aumenta l’attesa e aumentano i costi - Usabilità: la Ethereum Virtual Machine è una macchina che deve adattarsi a tuti i casi d’uso e non può essere ottimizzata per una operatività specifica. Questo fa sì che gli sviluppatori debbano costantemente scendere a compromessi e non raggiungere mai il livello di ottimizzazione desiderato. A prescindere da quanto appena detto, i linguaggi di programmazione su Ethereum sono pochi e spesso non sono quelli più canonici.
- Sovranità: il terzo problema è la sovranità, infatti ci son due livelli di governance, quello della applicazione e quello della rete sottostante. Per entrambi i livelli, quindi sia che si voglia modificare una dAPP o che si voglia modificare la EVM, bisogna sempre fare affidamento su un unico metodo di consenso.
Questo tipo di limitazioni non sono specifiche di Ethereum ma di ogni blockchain che cerchi di creare un’unica piattaforma adatta a tutti i casi d’uso.
Cosa propone Cosmos di differente
Dopo tutta questa mega intro alla storia delle blockchain, ecco che arriviamo alle novità e alla nuova visione che propone Cosmos.
La visione di Cosmos è quella di rendere facile per gli sviluppatori costruire direttamente delle blockchain e successivamente rompere le barriere tra blockchain consentendo di effettuare transazioni fra di loro.
L’obiettivo finale è creare quella che viene chiamato Internet of Blockchains, ossia una rete di blockchain in grado di comunicare tra loro in modo decentralizzato.
Con Cosmos le blockchain possono mantenere la sovranità, elaborare rapidamente le transazioni e comunicare con altre blockchain nell’ecosistema, rendendolo ottimale per una varietà di casi d’uso differenti.
In poche parole: ognuno si fa la propria blockchain e ognuno lavora per conto proprio, ma grazie ad alcuni accorgimenti le chain diventano intercomunicanti.
Gli strumenti che sono alla base di questo nuovo approccio si chiamano:
- Tendermint
- Cosmos SDK
- IBC
E adesso andiamo ad approfondire nello specifico a che cosa servono.
Cosa è Tendermint BFT di Cosmos
Partiamo da Tendermint BFT.
Fino a prima di Cosmos, la costruzione di una blockchain richiedeva la costruzione di tutti e tre i livelli (Rete, Consenso e Applicazione) da zero.
Tendermint BFT è una soluzione che racchiude i livelli di rete e consenso di una blockchain in un motore generico. Quindi gli sviluppatori possono concentrarsi sullo sviluppo delle applicazioni anziché sul complesso protocollo sottostante. È come se a una casa automobilistica arrivasse il motore e la scocca già pronti e devono solo personalizzare carrozzeria e interni.
Tendermint fa risparmiare centinaia di ore di tempo di sviluppo.
Ma accanto a Tendermint c’è anche il termine BFT, che è il tipo di algoritmo di consenso.
BFT sta (Byzantine Fault Tolerant); non lo approfondiamo in questo momento, basti sapere che è un metodo di consenso che prevede che se almeno ⅔ dei nodi validatori (di cui parliamo più approfonditamente in una successiva successiva) della rete rimangono onesti, allora la rete è salva. Rovesciando la medaglia: se più di ⅓ dei nodi diventano malevoli, allora a quel la rete potrebbe esser in pericolo.

Cosa è ABCI di Cosmos
A questo punto abbiamo il motore Tendermint BFT che è praticamente già pronto, viene dato chiavi in mano. Dall’altra parte abbiamo l’applicazione che viene sviluppata dal team del progetto.
Per far parlare applicazione e Tendermint è stato sviluppato un ulteriore componente che si chiama Application Blockchain Interface (ABCI). Questa parte di sistema permette di programmare in moltissimi linguaggi differenti; si può sviluppare in Java, C++, Go e tanti altri e ABCI si occupa di interfacciarlo con il resto del motore.
Capite bene che tutto questo attrae non poco gli sviluppatori, che possono continuare a usare linguaggi che già conoscono, senza doversi preoccupare di altro se non di sviluppare la loro applicazione.
Se questo non fosse abbastanza introduciamo un’ulteriore caratteristica interessante di Tendermint.
Infatti abbiamo detto che Tenderming fornisce il motore, ossia network e consenso, ma non fornisce il set di validatori. Il set di validatori è scelto dalla parte di applicazione ed è così che possiamo trovare varie modalità di utilizzo.
Abbiamo quindi delle blockchain pubbliche, in cui tutto quel che conta è il numero di coin messe in stake presso un validatore o delegate a un validatore. Abbiamo delle chain completamente private, in cui i validatori son scelti a priori. Abbiamo delle blockchain miste o fortemente controllate, in cui i validatori sono pochi e sono lì solo se rispettano dei parametri molto restrittvi.
Tendermint è stato sviluppato in modo tale che di fronte a una biforcazione della blochckain, quindi se qualcuno tenta di fare il furbo e creare blocchi finti, sia capace di capire, registrare e punire il nodo validatore che ha fatto l’errore, che sia in buona o cattiva fede.
Gli errori in una blockchain non ci devono essere!
Cosa è Cosmos SDK
Abbiamo visto che Tendermint BFT riduce il tempo di sviluppo di una blockchain da anni a settimane, ma costruire un’app ABCI sicura da zero rimane un compito difficile.
È proprio questo è il motivo per cui esiste Cosmos SDK.
SDK significa Software Development Kit ed è un framework che semplifica il processo di creazione di applicazioni blockchain su Tendermint BFT.
Il principio base su cui si basa è la modularità, infatti l’obiettivo di Cosmos SDK è creare un ecosistema di moduli che consenta agli sviluppatori di creare facilmente blockchain specifiche senza dover codificare da zero tutta l’applicazione.
Chiunque può creare un modulo per Cosmos SDK oppure può utilizzare moduli già preparati per altre applicazioni e importarli nella propria.
Ad esempio, c’è un modulo è quello per gestire lo staking, un modulo per gestire la governance, uno per sapere cosa succede quando un nodo si comporta male, uno per collegarsi con altre chain.

Cosa è IBC di Cosmos
Abbiamo visto che con Tendermint e Cosmos SDK si possono sviluppare molto velocemente delle blockchain. L’idea di Cosmos è stata: perché non le facciamo anche comunicare?
Detto, fatto!
La connessione tra blockchain avviene tramite un protocollo chiamato Inter-Blockchain Communication protocol (IBC).
Come funziona IBC
Il principio alla base dell’IBC è abbastanza semplice. Facciamo un esempio in cui un account sulla catena A vuole inviare 10 token (ATOM) alla catena B.
I passaggi sono i seguenti:
- Tracciamento: continuamente, la catena B riceve le intestazioni della catena A e viceversa. Ciò consente a ciascuna catena di tracciare il set di validatori dell’altra. In sostanza, ogni catena gestisce un light-client dell’altra.
- Legame: quando viene avviato il trasferimento IBC, gli ATOM vengono bloccati sulla catena A.
- Relè di prova: una prova che i 10 ATOM sono bloccati viene trasmessa dalla catena A alla catena B.
- Convalida: la prova viene verificata sulla catena B rispetto all’intestazione della catena A e, se è valida, vengono creati 10 ATOM sulla catena B.
Gli ATOM che sono stati creati sulla catena B non sono ATOM reali, poiché ATOM esistono solo sulla catena A. Sono una rappresentazione su B di ATOM dalla catena A, insieme a una prova che questi ATOM sono congelati sulla catena A.
Un meccanismo simile viene utilizzato per sbloccare ATOM quando tornano alla loro catena di origine.
Cosa è un validatore
Visti i tre strumenti di Comsos, capiamo precisamente cosa è un validatore.
Il ruolo dei validatori è banalmente quello eseguire l’attività di consenso che prevede di tener traccia di tutte le attività storiche e approvare nuovi blocchi nella blockchain.
In cambi del loro lavoro i validatori ricevono una ricompensa.
Cosa vuol dire mettere in stake
I validatori validano in base al tipo di algoritmo di consenso.
Nel caso del mondo Cosmos l’algoritmo di consenso per le chain pubbliche si basa sul Proof of Stake, ossia su quante coin son stake messi in stake dal validatore. In alcuni casi è possibile che l’algoritmo abbia nomi differenti, per esempio la Thorchain fa chiamare il suo algoritmo “Proof of Bond”, ma il concetto è praticamente identico.
Mettere in stake è il processo di blocco di un asset digitale (ATOM nel caso del Cosmos Hub) per fornire sicurezza economica a una blockchain pubblica.
Infatti bloccare l’asset determina tre cose:
- Potere di validare la blockchain.
- Rendita economica per il lavoro fatto.
- Stabilità economica per la chain, poiché l’asset non può essere venduto.
Chi è un delegator e cosa fa
Per essere un validatore bisogna avere dei requisiti piuttosto importanti:
- Bisogna saper gestire un server.
- Bisogna avere hardware e software adeguato.
- Bisogna avere una buona connessione.
Non è banale gestire un nodo validatore e non è sicuramente mestiere per tutti; per questo i propri asset si possono delegare a un validatore.
Quindi, facciamo un esempio:
- Mettiamo che io abbia 10mila CRO di Crypto.com
- Non posso o non voglio aprire un nodo validatore perché non lo so fare/costa troppo.
- Posso delegare i miei 10mila CRO a un validatore che li usi come se fossero sua parte di stake, rendendomi una parte dei guadagni.
All’inizio del contenuto è stato accennato che dobbiamo stare attenti a chi deleghiamo i nostri valori poiché, se il nodo validatore viene accusato dal protocollo di barare, sarà multato.
In quel caso la multa si riversa anche sui delegatori e in alcuni casi potremmo vederci tagliare e requisire il 5% dei nostri valori messi in delega.
Come è organizzato Comsos – Internet della blockchain
Bene, a questo punto facciamo un attimo un riepilogo di tutti gli elementi e cerchiamo di avere una visione di insieme del sistema.
Cosmos si struttura con
- Tendermint, che è un motore di network e di consenso.
- Sopra Tendermint c’è il livello dell’applicazione che comunica con Tendermint grazie al socket ABCI.
- Per costruire un’applicazione è stato messo a disposizione il Cosmos SDK che ha al suo interno moltissime funzionalità già sviluppate, debuggate, testate e ottimamente funzionanti.
- Grazie a IBC è possibile mettere in comunicazione due o più blockchain eterogenee e permette di trasferire token dall’una all’altra.
Come collegare le blockchain
Rimane una questione aperta: come collegare tutte le blockchain?
Cioè, se colleghiamo singolarmente ogni chain a tutte le altre si ripresenta un problema not, ossia finché sono su 10 o 20 chain è un conto, ma più si sale più il numero di connessioni cresce fino a diventare ingestibile.
Per risolvere questo problema, Cosmos propone un’architettura modulare con due classi di blockchain: Hub e Zone.
Le zone sono blockchain eterogenee e gli hub sono blockchain specificamente progettati per collegare le zone insieme.
Quando una Zona crea una connessione IBC con un Hub, può accedere automaticamente (ovvero inviare e ricevere da) ogni altra Zona ad essa connessa. Di conseguenza, ogni Zona deve solo stabilire un numero limitato di connessioni con un insieme limitato di Hub.
Gli hub impediscono anche la doppia spesa tra le zone. Ciò significa che quando una zona riceve un token da un hub tramite IBC, deve solo fidarsi della zona di origine di questo token e dell’hub.
Il primo Hub lanciato nel Cosmos Network è il Cosmos Hub. Cosmos Hub è una blockchain pubblica Proof-of-Stake il cui token di staking nativo è chiamato ATOM e dove le commissioni di transazione saranno pagate in più token.
Credo sia più chiaro ora perché si chiami Cosmos.
Come tracciare una chain esterna e cosa è la PEG Zone
All’inzio di questo contenuto abbiamo visto che non tutte le blockchain sono Proof of Stake come quelle pensate da Cosmos.
Una fra tutte Ethereum. In realtà Ethereum diventerà nella seconda metà del 2022 Proof of Stake, ma sarà comunque meno ottimale rispetto a Cosmos, proprio a causa delle carattersiche costruttive di Cosmos.
Quindi, per questo tipo di chain, come anche per Bitcoin le cose si fanno più complicate.
Per queste chain utilizziamo un tipo speciale di catena proxy chiamata Peg-Zone.
Una Peg-Zone è una blockchain che traccia lo stato di un’altra blockchain.
La stessa Peg-Zone ha una finalità rapida ed è quindi compatibile con IBC. Il suo ruolo è stabilire la finalità per la blockchain che collega.
Esempio di Peg-Zone con Ethereum
Vogliamo collegare la blockchain Proof-of-Work di Ethereum per rendere possibile l’invio di token avanti e indietro tra Ethereum e Cosmos. Poiché Ethereum Proof-of-Work non ha una finalità rapida, dobbiamo creare una Peg-Zone che funga da ponte tra le due.
In primo luogo, la Peg-Zone deve decidere una soglia di finalità per la catena di origine. Ad esempio, può considerare che un dato blocco della catena di origine è definitivo quando sono stati aggiunti 100 blocchi dopo di esso.
In secondo luogo, deve essere implementato un contratto sulla blockchain principale di Ethereum. Quando gli utenti vogliono inviare token da Ethereum a Cosmos, iniziano inviando token a questo contratto. Il contratto blocca gli asset e dopo 100 blocchi, una rappresentazione di questi asset viene rilasciata sulla Peg-Zone. Un meccanismo simile viene utilizzato al contrario far tornare le risorse alla catena di origine.
Scalabilità
Se abbiamo detto che l’obiettivo è andare a risolvere o quantomeno rimandare il Trilemma della Blockchain, Cosmos ha introdotto due tipi di scalabilità. Ecco quali sono e perché sembrano essere particolarmente vincenti.
La prima è la scalabilità verticale, ossia la scelta di allontanarsi dal Proof of Work e abbracciare il Proof of Stake e di utilizzare componenti ottimizzati come Tendermint BFT e soprattutto Cosmos SDK.
La seconda è la Scalabilità orizzontale, ossia l’idea di parallelizzare tante catene piuttosto che far girare tante applicazioni sulla stessa chain.
Proprio questo è uno dei motivi per cui Cosmos suggerisce e incentiva a sviluppare una singola blockchain per ogni singola applicazione.
Rispetto al passato è assurdo. Una vola per sviluppare una chain servivano anni di lavoro, ora invece Cosmos suggerisce esattamente il contrario.
Keplr Wallet
Al termine di questo contenuto è probabilmente opportuno presentare uno dei migliori wallet in circolazione, sia in senso assoluto, sia per l’ecosistema di Cosmos.
Il Keplr Wallet permette l’accesso e il monitoraggio contestuale di buona parte delle chain attualmente sviluppate su Cosmos (Cosmos, Terra, Crypto.org Chain, Osmosis, Juno, etc…).
Consiglio di approfondire l’argomento guardando il contenuto qui sotto sul Keplr Wallet.