Cos’è Cosmos IBC? Un’introduzione a Inter-Blockchain Communication

Cos’è Cosmos IBC? Un’introduzione a Inter-Blockchain Communication

Cos’è Cosmos IBC?

Cosmos IBC è un protocollo che permette a blockchain separate di scambiarsi messaggi in modo sicuro. IBC sta per Inter-Blockchain Communication ed è nato all’interno dell’ecosistema Cosmos. Per questo spesso senti il nome Cosmos IBC, ma il progetto non è pensato solo per blockchain Cosmos SDK.

Detto in modo semplice, IBC è un insieme condiviso di regole per blockchain che vogliono comunicare tra loro. Il protocollo stabilisce come viene inviato un messaggio, come la blockchain ricevente controlla che il messaggio sia autentico e in quale ordine i messaggi vengono elaborati. Puoi vedere IBC come una specie di standard di comunicazione per blockchain, un po’ come la EVM dentro Ethereum offre un ambiente standard per eseguire gli smart contract.

Quindi IBC non è una blockchain, non è un hub centrale e non è solo un ponte per i token. Un trasferimento di token è sicuramente un caso d’uso noto, ma IBC può anche trasmettere altri tipi di messaggi. Pensa, per esempio, a istruzioni per la gestione di un account su un’altra blockchain.

Cosa importante da sapere: il contenuto di un messaggio IBC viene definito dall’applicazione che lo invia e lo riceve. IBC si occupa soprattutto del trasporto e dei controlli attorno al messaggio. Puoi immaginarlo come un sistema di consegna affidabile, mentre l’applicazione decide cosa c’è nel pacco e cosa deve succedere dopo.

La configurazione originale si chiama IBC v1. In questo caso, due blockchain creano prima una connection e poi dei channel prima che le applicazioni possano scambiarsi messaggi. IBC v2 è l’ultima versione del progetto e vuole semplificare tutto questo con una comunicazione diretta tra client. Gli standard per v2 sono ancora in Draft.


In breve

  • IBC sta per Inter-Blockchain Communication e permette a blockchain separate di scambiarsi messaggi.
  • Cosmos IBC non è una blockchain o un hub centrale, ma un protocollo di interoperabilità.
  • IBC può essere usato per molto più che semplici trasferimenti di token.
  • IBC v1 funziona con connection e channel tra due blockchain.
  • IBC v2 è l’iterazione più recente, ma le specifiche sono ancora indicate come Draft.

Come funziona Cosmos IBC?

Cosmos IBC funziona perché entrambe le blockchain si controllano a vicenda con un proprio light client on-chain. Un light client è una piccola componente su una blockchain che può seguire informazioni da un’altra blockchain e verificare prove crittografiche.

Sembra tecnico, ma l’idea è abbastanza logica. La blockchain A non deve fidarsi ciecamente di quello che dice la blockchain B o un relayer. La blockchain A conserva informazioni che le permettono di verificare se un messaggio è davvero presente nello stato della blockchain B.

Con IBC v1, due blockchain prima impostano una connection. È una connessione controllata che permette a entrambe di stabilire con quale rete stanno comunicando.

La creazione di una connection avviene in quattro passaggi. ConnectionOpenInit avvia la connessione, ConnectionOpenTry permette all’altra blockchain di rispondere, ConnectionOpenAck conferma che i dati sono corretti e ConnectionOpenConfirm completa la connessione. In questo modo entrambe le blockchain verificano passo dopo passo di essere collegate alla controparte giusta.

Su una sola connection possono funzionare più channel. Un channel è un canale di comunicazione specifico tra due applicazioni su blockchain diverse. Le applicazioni si collegano a una port unica. Puoi vedere una port come il punto di contatto fisso di un’applicazione e un channel come il percorso concordato verso l’applicazione dall’altra parte.

Come fa poi un messaggio a passare da A a B?

  1. L’applicazione crea un packet L’applicazione che invia crea un packet. In parole semplici, è un pacchetto di dati, per esempio un’istruzione per inviare token.

  2. La blockchain di origine registra un commitment La blockchain da cui parte il packet scrive un packet commitment nel proprio state. È una prova crittografica che dimostra che il packet è stato registrato lì.

  3. Un relayer trasporta packet e prova Un relayer legge il packet e la prova associata e li invia alla blockchain ricevente.

  4. La blockchain ricevente controlla tutto Il light client verifica la prova crittografica. Se la prova è corretta, l’applicazione ricevente può elaborare il packet.

  5. Di solito torna un acknowledgement Dopo l’elaborazione, l’applicazione ricevente spesso scrive un acknowledgement. È un messaggio di ricezione o di risultato. Un relayer può riportare questa prova alla blockchain da cui è partito il packet.

Anche i packet hanno un time-out. Se un packet non arriva in tempo, la blockchain di origine può avviare la gestione del time-out, ma solo con una prova dallo state della blockchain di destinazione. Quindi il semplice fatto di non ricevere una risposta non basta per annullare automaticamente un trasferimento.

Esempio: immagina di inviare token da blockchain A a blockchain B tramite IBC. Blockchain A registra che il messaggio è stato inviato. Poi un relayer porta il messaggio con la prova a blockchain B. Quando blockchain B ha verificato che la prova è corretta, il trasferimento viene elaborato e può essere inviata una conferma di ritorno a blockchain A.

IBC v2 vuole rendere questa struttura più semplice. Invece di diversi passaggi tecnici per collegare due blockchain, v2 permette di inviare messaggi in modo più diretto tra le due reti. Questo approccio non è ancora lo standard ovunque, perché gli standard principali di IBC v2 sono ancora in fase di sviluppo.

Quale ruolo hanno i relayer dentro Cosmos IBC?

I relayer sono i corrieri dei messaggi IBC tra blockchain. Tengono d’occhio le blockchain e inoltrano i messaggi verso l’altra blockchain.

Blockchain A e blockchain B, infatti, non si inviano i messaggi IBC direttamente tra loro. Un relayer vede per esempio che su blockchain A è pronto un nuovo messaggio e lo porta, insieme alla prova che il messaggio è autentico, su blockchain B.

Il relayer non decide da solo se un messaggio è valido. Questo lo controlla blockchain B. Così blockchain B non deve fidarsi del relayer a occhi chiusi.

I relayer non inoltrano solo i nuovi messaggi. Possono anche rimandare una conferma alla blockchain originale. Se un messaggio non viene elaborato in tempo, possono inoltre segnalare che il limite di tempo è scaduto.

In teoria, chiunque può fare da relayer. IBC non ha una parte centrale che deve per forza inoltrare tutti i messaggi. Un relayer può anche scegliere di supportare solo certi tipi di messaggi o solo determinate connessioni.

Però deve esserci almeno un relayer attivo per continuare a inoltrare i messaggi. Un relayer normalmente non può falsificare un messaggio valido, ma se non c’è nessun relayer attivo, un messaggio può restare bloccato.

IBC non ha un sistema fisso con cui i relayer vengono sempre pagati. Il modo in cui ricevono una ricompensa può quindi cambiare da blockchain a blockchain o da applicazione ad applicazione.

Quali blockchain possono usare Cosmos IBC?

In teoria, qualsiasi blockchain può usare IBC, purché supporti i componenti necessari per inviare e controllare i messaggi. Le blockchain non devono per forza usare la stessa tecnologia o lo stesso meccanismo di consenso.

Per controllare un’altra blockchain, IBC usa un cosiddetto light client. Quale light client serve dipende dalla blockchain con cui si crea la connessione. Le blockchain Cosmos, per esempio, usano spesso un light client per CometBFT, ma esistono anche altri tipi per altri casi d’uso.

Il fatto che una blockchain supporti IBC non significa automaticamente che possa comunicare subito con qualsiasi altra blockchain IBC. Entrambe le blockchain devono potersi controllare tecnicamente a vicenda e deve esserci un relayer che inoltri i messaggi tra le due reti. Con IBC v1, inoltre, prima va creata una connessione tra le due blockchain.

Anche il supporto a IBC non significa che ogni funzione sia disponibile automaticamente. Due blockchain possono per esempio essere collegate tra loro, mentre i trasferimenti di token, i trasferimenti di NFT o altre funzioni IBC non sono ancora attivati su quella connessione.

La versione Go di IBC viene usata da molte blockchain dentro l’ecosistema IBC. Esistono anche soluzioni per Solidity/EVM e Solana, anche se il funzionamento tecnico e la sicurezza possono cambiare da integrazione a integrazione.

A cosa serve Cosmos IBC?

Cosmos IBC viene usato per inviare tanti tipi diversi di messaggi cross-chain, non solo token. Le applicazioni su entrambi i lati decidono da sole come costruire e gestire i dati in un packet.

L’uso più noto è ICS-20, lo standard per i trasferimenti di token fungibili. Fungibile significa che ogni unità è uguale alle altre, come un token che può essere scambiato con un altro token dello stesso tipo.

In un trasferimento del genere, il percorso e l’origine del token restano disponibili come denomination trace. Così il software può vedere da dove proviene una rappresentazione IBC del token e quale percorso ha seguito.

IBC può essere usato anche per gli Interchain Accounts tramite ICS-27. In questo modo una blockchain controller può inviare istruzioni di transazione a un account su una blockchain host. La blockchain host controlla le istruzioni ed esegue solo ciò che è consentito.

Esiste anche ICS-721 per i trasferimenti di NFT. Se un NFT parte dalla blockchain originale, lì viene messo in escrow. Sulla blockchain ricevente viene poi creato un voucher corrispondente. Se l’NFT torna indietro, succede il contrario.

C’è anche uno standard per le cross-chain query, ICS-31. In questo caso una blockchain può chiedere informazioni a un’altra blockchain e un relayer riporta la risposta con la prova. Questo standard è ancora indicato come Draft, quindi non è automaticamente disponibile ovunque.

Infine c’è Interchain Security. Con questo sistema le blockchain Cosmos possono condividere tra loro la sicurezza proof-of-stake. È una applicazione IBC separata e non una parte standard di ogni connessione IBC.

Quali sono i vantaggi di Cosmos IBC?

Il vantaggio più grande di Cosmos IBC è che le blockchain possono comunicare tra loro senza rinunciare alle proprie regole o al proprio meccanismo di consenso. Ogni blockchain resta autonoma, ma può comunque scambiarsi messaggi con altre blockchain.

Un altro punto forte è la verifica. La blockchain ricevente controlla packet commitment e acknowledgement con prove crittografiche tramite il suo light client. Il relayer fornisce i dati, ma non è la parte di cui devi fidarti per la loro validità.

In più, IBC è modulare. Lo stesso livello base può essere usato per applicazioni diverse, come:

  • trasferimenti di token fungibili;
  • trasferimenti di NFT;
  • transazioni cross-chain tramite Interchain Accounts;
  • altre applicazioni che vogliono inviare messaggi tra blockchain.

IBC non ha un hub centrale obbligatorio o un operatore di relay esclusivo. Questo rende possibile il permissionless relaying: parti diverse possono far girare relayer ed elaborare packet.

Anche i channel offrono scelta nel modo in cui i messaggi vengono elaborati. Un channel può funzionare in modo ordinato, quindi i packet devono arrivare in un ordine preciso, oppure in modo non ordinato. Con acknowledgement e time-out, inoltre, le applicazioni hanno un modo chiaro per gestire un packet ricevuto, fallito o scaduto.

Una connection può supportare più channel. Così applicazioni diverse tra le stesse due blockchain non devono creare ogni volta una nuova connection completa.

Quali sono gli svantaggi di Cosmos IBC?

Cosmos IBC ha anche degli svantaggi, soprattutto per quanto riguarda disponibilità, complessità tecnica e sicurezza delle blockchain collegate. IBC rende possibile la comunicazione cross-chain, ma aggiunge anche passaggi extra rispetto a una normale transazione locale.

La prima dipendenza è quella dai relayer. Senza almeno un relayer corretto e attivo, packet, acknowledgement e aggiornamenti del client possono subire ritardi o restare bloccati del tutto. Questo non significa automaticamente che qualcuno possa rubare token, ma il tuo trasferimento potrebbe non completarsi.

La sicurezza di una connection IBC dipende anche dai light client e dalla sicurezza del consenso di entrambe le blockchain. Se un gruppo di validator malevoli supera la soglia di trust threshold di un light client, la connection può diventare insicura.

Un light client può anche diventare inutilizzabile. Per esempio quando la blockchain seguita si ferma, quando gli aggiornamenti tardano troppo o quando il client si blocca dopo aver rilevato un comportamento scorretto. Nella logica base di IBC e ICS-20, gli asset in un channel colpito possono allora restare bloccati in modo permanente se non esiste un meccanismo di recupero.

L’elaborazione cross-chain richiede anche più tempo e spesso più commissioni di transazione. Un flusso normale può includere l’invio di un packet, la ricezione sull’altra blockchain, l’invio di un acknowledgement e a volte una procedura di time-out. Sono quindi più azioni su due blockchain diverse.

L’impostazione tecnica non è affatto semplice. Light client, connection, channel, moduli applicativi e relayer devono lavorare bene insieme. Un errore di configurazione, integrazione o manutenzione può creare problemi.

Anche i time-out sono più complicati di quanto sembrino a prima vista. Se c’è una partizione completa della rete, la blockchain di origine non può concludere solo dal mancato arrivo di una risposta che il packet non sia mai stato eseguito. La blockchain di destinazione deve essere raggiungibile per fornire la prova necessaria.

In un ambiente di test privato sono stati osservati anche ritardi nelle conferme, colli di bottiglia RPC e problemi di concurrency nei relayer. Questi risultati dipendono dall’ambiente e dall’implementazione usati, ma mostrano comunque che il relaying nella pratica può incontrare limiti tecnici.

Conclusione

Cosmos IBC è un protocollo che permette a blockchain autonome di scambiarsi messaggi in modo controllato. Quindi non si tratta solo di inviare token: IBC può servire anche per trasferimenti di NFT, Interchain Accounts e altre applicazioni cross-chain.

Il punto centrale è che le blockchain possono controllarsi a vicenda tramite light client e prove crittografiche. I relayer portano i messaggi avanti e indietro, ma non decidono da soli se un messaggio è valido. Allo stesso tempo, relayer attivi, una buona configurazione e la sicurezza di entrambe le blockchain restano fondamentali.

Per il crypto, IBC rende possibile far collaborare meglio le applicazioni su blockchain diverse. Non è una soluzione magica senza rischi, ma è un tassello importante per un mondo blockchain più connesso.

Chi è Finst

Finst è una piattaforma di criptovalute leader nei Paesi Bassi che offre commissioni di trading ultra-basse, sicurezza di livello istituzionale e una gamma completa di servizi crypto come trading, custodia, staking e rampe fiat di ingresso e uscita. Fondata dall’ex team core di DEGIRO, Finst è autorizzata come fornitore di servizi di criptoasset dall’Autorità olandese per i mercati finanziari (AFM) e serve clienti retail e istituzionali in 30 paesi europei.

La piattaforma crypto per tutti gli investitori

Che tu sia un trader attivo o un investitore di lungo periodo, Finst ti permette di far crescere il tuo patrimonio in crypto con fiducia e tranquillità.

Registrati