ELI5: Cos'è l'IBC?

Dec 22 2022
La nascita di Bitcoin ha portato a un'esplosione cambriana di blockchain con diverse decisioni di progettazione e casi d'uso. Sebbene questi registri distribuiti abbiano scopi diversi, esistevano (ed esistono ancora in una certa misura) come silos con un'interazione significativa limitata.

La nascita di Bitcoin ha portato a un'esplosione cambriana di blockchain con diverse decisioni di progettazione e casi d'uso. Sebbene questi registri distribuiti abbiano scopi diversi, esistevano (ed esistono ancora in una certa misura) come silos con un'interazione significativa limitata.

Simile a Internet che facilita la comunicazione tra diversi tipi di computer in diverse parti del mondo, una tecnologia simile che funge da tessuto connettivo tra blockchain è necessaria per un vero valore aggiunto. Il protocollo Inter-Blockchain Communication (IBC) mira a servire a questo scopo.

IBC è un protocollo di interoperabilità universale che consente a due diverse blockchain di comunicare tra loro. IBC garantisce comunicazioni affidabili , ordinate e autenticate .

Forse una delle proprietà più importanti di IBC è la minimizzazione della fiducia. Nelle blockchain, la proprietà di minimizzazione della fiducia è intrinsecamente legata alla sicurezza. Nessun sistema distribuito è interamente "senza fiducia". Pertanto, la questione della sicurezza si riduce a chi o cosa è attendibile e come può essere violata tale fiducia, ad esempio, cosa ci vuole perché l'entità attendibile venga corrotta?

In questo senso, e diversamente dalla maggior parte delle soluzioni di bridging, IBC non utilizza terze parti fidate. Ciò significa che se ti fidi di due catene particolari per utilizzare le funzioni che forniscono (e per impostazione predefinita i loro meccanismi di consenso), non è richiesta alcuna assunzione di fiducia aggiuntiva durante l'utilizzo di IBC per interagire tra dette catene.

IBC è anche più di un semplice ponte che facilita i trasferimenti di token. È un protocollo di passaggio di messaggi generico . Ciò significa che qualsiasi forma di dati può essere comunicata tramite IBC.

Come funziona l'IBC?

Per capire come funziona IBC, è importante separare i due diversi livelli di IBC: 1) il livello di trasporto e 2) il livello di applicazione.

Rappresentazione di alto livello del flusso di pacchetti IBC tra due blockchain

Livello di trasporto

I messaggi comunicati tramite IBC vengono trasportati all'interno di pacchetti di dati . E il livello di trasporto è responsabile del trasporto , dell'autenticazione e dell'ordinamento di questi pacchetti di dati.

Il livello di trasporto non specifica nulla su quali dovrebbero essere i dati nei pacchetti o su come dovrebbero essere interpretati da una catena ricevente. Dal punto di vista del livello di trasporto, le informazioni all'interno dei pacchetti di dati sono solo byte casuali.

I componenti chiave del livello di trasporto sono light client, relayer, connessioni e canali.

Un client leggero è una rappresentazione leggera di una blockchain. A differenza di un full node , i light client non memorizzano l'intera cronologia di tutti i messaggi contenuti in una blockchain. Né eseguono transazioni. Piuttosto, i client leggeri sono progettati per connettersi a un nodo completo e verificare le intestazioni di blocco (un riepilogo dei dati contenuti all'interno di un blocco). Ciò consente ai client leggeri di essere efficienti in termini di archiviazione e calcolo.

Due blockchain indipendenti A e B che interagiscono su IBC hanno clienti leggeri della catena della controparte. Ciò significa che A ha un client leggero sulla sua blockchain che funge da rappresentazione leggera della blockchain di B. Quando A vuole comunicare un certo messaggio 'X' con B , invia l'intestazione del blocco in cui esiste quel messaggio, insieme a una prova di impegno di quel messaggio a B . La prova di impegno viene utilizzata per verificare la presenza o l'assenza di un particolare messaggio su A . Utilizzando l'intestazione del blocco e la prova, B lo verifica crittograficamenteA ha effettivamente eseguito X . È questo uso di client leggeri in IBC che consente alle blockchain di scambiarsi messaggi tra loro senza la necessità di una terza parte fidata.

Ma A e B non si scambiano direttamente questi messaggi/pacchetti di dati. Invece, quando A desidera inviare un messaggio a B , esegue il commit o memorizza un hash di un pacchetto di dati contenente il messaggio nella sua macchina a stati . I relayer , che sono processi off-chain, osservano costantemente tali messaggi. Quando vedono che A ha inserito un messaggio destinato a B nella sua macchina a stati, semplicemente raccolgono questo messaggio e lo passano a B . Si noti che i relayer sono senza autorizzazione e quindi possono essere eseguiti da chiunque.

Le connessioni sono responsabili della connessione dei client leggeri su due diverse catene. E i canali sono condotti per il trasferimento di pacchetti tra moduli su queste diverse catene. Pertanto, mentre le connessioni sono specifiche della catena, i canali sono specifici del modulo. Ogni estremità del canale ha un ID canale univoco (e un ID porta) utilizzato per instradare accuratamente i pacchetti tra due moduli.

Livello applicazione

Il livello dell'applicazione è ciò con cui interagiscono gli utenti finali. Consiste in varie applicazioni che utilizzano il livello di trasporto per costruire sopra. Il livello di trasporto non specifica come devono essere interpretati i pacchetti di dati. Questo ruolo viene svolto dal livello dell'applicazione.

IBC supporta una varietà di applicazioni come trasferimenti di token fungibili/non fungibili, feed Oracle cross-chain, account interchain, query interchain, middleware a pagamento (per incentivare i relayer), ecc.

Ad esempio, l'applicazione a livello IBC per i trasferimenti di token, denominata Interchain Standard 20 (ICS 20), specifica come devono essere strutturati i pacchetti di dati e come devono essere interpretati dalle catene di ricezione. Nel caso di trasferimenti di token fungibili, i pacchetti di dati contengono informazioni relative a mittente, destinatario, importo e denominazione (denominazione IBC). Il campo denom traccia il percorso che un particolare token ha percorso per raggiungere una determinata catena. Anche la logica relativa al modo in cui i pacchetti devono essere gestiti è specificata da ICS 20.

Una semplice analogia che può essere utile per comprendere l'IBC è quella del sistema di consegna della posta. Quando invii una lettera a qualcuno, la invii tramite un servizio postale che ritira da te la busta contenente la lettera e la deposita nella casella di posta del destinatario. Il destinatario quindi apre detta busta e legge la tua lettera. Il livello di trasporto di IBC può essere considerato come il servizio postale. Il servizio postale non ti dice quale dovrebbe essere il contenuto della lettera o come il destinatario dovrebbe interpretare il tuo messaggio.

Né sanno quale sia il contenuto della busta. Esegue solo l'azione di raccogliere la busta dal punto A e inviarla al punto B. La busta stessa può essere considerata come pacchetti IBC che vengono inviati da una catena all'altra. E su questa busta, dovresti specificare l'indirizzo del destinatario. Questo è simile al modo in cui i pacchetti IBC contengono informazioni su chi ha inviato il pacchetto (specificato dall'ID del canale) e a chi è destinato (specificato dall'ID del canale della controparte). Alla fine, è il destinatario (applicazione) che è responsabile dell'apertura della busta (pacchetto dati) e dell'interpretazione del contenuto della lettera.

Per cosa può essere utilizzato l'IBC?

Oltre ai trasferimenti di token fungibili, altre due applicazioni a livello IBC includono Interchain Accounts e Interchain Security .

Gli account interchain facilitano l'interazione da catena a catena rimanendo su un'unica interfaccia. Ciò significa effettivamente che qualsiasi azione come trasferimenti, staking o voto su proposte di governance che possono essere eseguite su B (chiamata "catena host"), può essere eseguita da A (chiamata "catena di controllori"). Interchain Accounts aumenta significativamente la componibilità all'interno di Interchain migliorando l'esperienza dell'utente.

Interchain Security è la versione della sicurezza condivisa di Cosmos Ecosystem. Consente a una blockchain di affittare la sicurezza da un'altra catena in modo completamente opt-in. Ciò è particolarmente utile per le nuove catene che possono scegliere di attingere alla sicurezza offerta da una rete già consolidata come Cosmos Hub. Interchain Security elimina la necessità per le catene di eseguire il bootstrap del proprio set di validatori.

L'ambito delle applicazioni che possono essere eseguite utilizzando IBC come primitiva di base è in costante crescita. I trasferimenti NFT cross-chain e le query interchain (in cui una catena può leggere lo stato di un'altra catena) sono attualmente in fase di sviluppo e saranno presto pronti per la produzione.

Quale problema risolve IBC?

In una frase, IBC risolve il problema delle blockchain esistenti come silos con interazione limitata. L'interoperabilità tra blockchain è necessaria per il massimo valore accumulato.

Ogni blockchain si rivolge a uno o più casi d'uso specializzati. Se questi casi d'uso non possono essere sfruttati su più blockchain, ne ostacola gravemente l'utilità. La svolta fornita da Internet è che le informazioni possono facilmente fluire attraverso diverse parti del mondo con facilità. Allo stesso modo, l'utilità di diverse blockchain deve essere liberamente accessibile su più piattaforme.

Ad esempio, gli utenti potrebbero voler utilizzare stablecoin da una blockchain, per generare rendimento attraverso un pool di liquidità (LP) su uno scambio decentralizzato (DEX) che esiste su un'altra blockchain. Oppure potrebbero voler sfruttare le proprietà di conservazione della privacy fornite da una blockchain diversa. L'interoperabilità tra le catene è necessaria per realizzare questi casi d'uso e altro ancora.

IBC non solo risolve il problema dell'interoperabilità, ma lo fa in modo affidabile, sicuro, estendibile e generico.

Come posso utilizzare IBC come sviluppatore di applicazioni?

La natura modulare di Cosmos SDK impedisce agli sviluppatori di doversi occupare di alcuni dei livelli di astrazione come client leggeri, connessioni, verifica delle prove e così via. Per gli sviluppatori, i requisiti e le funzioni più rilevanti con cui familiarizzare sono i canali e le porte . Per informazioni più dettagliate su IBC, puoi fare riferimento al nostro portale per sviluppatori l.

Se stai creando la tua blockchain utilizzando Cosmos SDK, i passaggi necessari per abilitare IBC per un modulo SDK sono descritti in dettaglio qui . Puoi anche fare domanda per l'Interchain Builders Program, un'iniziativa di ICF, per ottenere supporto per la costruzione in Cosmos.

Informazioni sull'autore: questo post è stato scritto da Adi Ravi Raj , IBC Protocol Analyst presso Interchain GmbH.