Wat is Cosmos IBC? Een introductie tot Inter-Blockchain Communication

Wat is Cosmos IBC?
Cosmos IBC is een protocol waarmee afzonderlijke blockchains veilig berichten met elkaar kunnen uitwisselen. IBC staat voor Inter-Blockchain Communication en is ontstaan binnen het Cosmos-ecosysteem. Daarom hoor je vaak de naam Cosmos IBC, maar het ontwerp is niet alleen bedoeld voor Cosmos SDK-blockchains.
Simpel gezegd is IBC een gezamenlijke set spelregels voor blockchains die met elkaar willen communiceren. Het protocol bepaalt hoe een bericht wordt verstuurd, hoe de ontvangende blockchain controleert dat het bericht echt is en in welke volgorde berichten worden verwerkt. Je kunt IBC daarbij zien als een soort communicatiestandaard voor blockchains, vergelijkbaar met hoe de EVM binnen Ethereum een standaardomgeving biedt voor het uitvoeren van smart contracts.
IBC is dus geen blockchain, geen centrale hub en ook niet alleen een brug voor tokens. Een token transfer is wel een bekende toepassing, maar IBC kan ook andere soorten berichten doorgeven. Denk aan instructies voor accountbeheer op een andere blockchain.
Belangrijk om te weten: de inhoud van een IBC-bericht wordt bepaald door de applicatie die het verstuurt en ontvangt. IBC zorgt vooral voor het transport en de controle eromheen. Je kunt het zien als een betrouwbaar bezorgsysteem, terwijl de applicatie bepaalt wat er in het pakket zit en wat ermee moet gebeuren.
De oorspronkelijke opzet heet IBC v1. Daarbij maken twee blockchains eerst een connection en daarna channels aan voordat applicaties berichten kunnen uitwisselen. IBC v2 is de nieuwste versie van het ontwerp en wil dit eenvoudiger maken met directe communicatie tussen clients. De standaarden voor v2 zijn nog Draft.
Korte samenvatting
- IBC staat voor Inter-Blockchain Communication en laat afzonderlijke blockchains berichten uitwisselen.
- Cosmos IBC is geen blockchain of centrale hub, maar een interoperabiliteitsprotocol.
- IBC kan voor veel meer worden gebruikt dan alleen transfers van tokens.
- IBC v1 werkt met connections en channels tussen twee blockchains.
- IBC v2 is de nieuwste iteratie, maar de specificaties staan nog als Draft vermeld.
Hoe werkt Cosmos IBC?
Cosmos IBC werkt doordat beide blockchains elkaar controleren met een eigen on-chain lichtclient. Een lichtclient is een klein onderdeel op een blockchain dat informatie van een andere blockchain kan volgen en cryptografische bewijzen kan controleren.
Dat klinkt technisch, maar het idee is vrij logisch. Blockchain A hoeft niet blind te geloven wat blockchain B of een relayer vertelt. Blockchain A bewaart informatie waarmee zij kan nagaan of een bericht echt in de toestand van blockchain B staat.
Bij IBC v1 zetten twee blockchains eerst een connection op. Dat is een gecontroleerde verbinding waarmee beide blockchains vastleggen met welk netwerk ze communiceren.
Het opzetten van zo’n connection gebeurt in vier stappen. ConnectionOpenInit start de verbinding, ConnectionOpenTry laat de andere blockchain reageren, ConnectionOpenAck bevestigt dat de gegevens kloppen en ConnectionOpenConfirm rondt de verbinding af. Zo controleren beide blockchains stap voor stap dat ze met de juiste tegenpartij verbonden zijn.
Op één connection kunnen meerdere channels draaien. Een channel is een specifiek communicatiekanaal tussen twee applicaties op verschillende blockchains. Applicaties koppelen zich daarbij aan een unieke port. Je kunt een port zien als het vaste aanspreekpunt van een applicatie, en een channel als de afgesproken route naar de applicatie aan de andere kant.
Hoe gaat een bericht vervolgens van A naar B?
-
De applicatie maakt een packet De verzendende applicatie maakt een packet aan. Dat is simpel gezegd een pakketje met data, zoals een instructie om tokens te versturen.
-
De bronblockchain legt een commitment vast De blockchain waarop het packet vertrekt, schrijft een packet commitment in haar eigen state. Dat is een cryptografisch bewijs dat het packet daar is vastgelegd.
-
Een relayer brengt packet en bewijs over Een relayer leest het packet en het bijbehorende bewijs uit en dient beide in bij de ontvangende blockchain.
-
De ontvangende blockchain controleert alles De lichtclient controleert het cryptografische bewijs. Klopt het bewijs, dan kan de ontvangende applicatie het packet verwerken.
-
Er komt meestal een acknowledgement terug Na verwerking schrijft de ontvangende applicatie vaak een acknowledgement. Dat is een ontvangst- of resultaatbericht. Een relayer kan dit bewijs terugbrengen naar de blockchain waar het packet begon.
Packets hebben ook een time-out. Komt een packet niet op tijd aan, dan kan de bronblockchain de time-outafhandeling starten, maar alleen met bewijs uit de state van de bestemmingsblockchain. Alleen geen antwoord krijgen is dus niet genoeg om zomaar een transfer terug te draaien.
Voorbeeld: Stel dat je via IBC tokens van blockchain A naar blockchain B verstuurt. Blockchain A legt vast dat het bericht is verstuurd. Daarna brengt een relayer het bericht met bewijs naar blockchain B. Zodra blockchain B heeft gecontroleerd dat het bewijs klopt, wordt de transfer verwerkt en kan er een bevestiging terug naar blockchain A worden gestuurd.
IBC v2 wil deze opzet eenvoudiger maken. In plaats van meerdere technische stappen om twee blockchains met elkaar te verbinden, laat v2 berichten directer tussen beide netwerken versturen. Deze aanpak is nog niet overal de standaard, omdat de belangrijkste standaarden voor IBC v2 nog in ontwikkeling zijn.
Welke rol spelen relayers binnen Cosmos IBC?
Relayers zijn de bezorgers van IBC-berichten tussen blockchains. Ze houden blockchains in de gaten en sturen berichten door naar de andere blockchain.
Blockchain A en blockchain B sturen IBC-berichten namelijk niet rechtstreeks naar elkaar. Een relayer ziet bijvoorbeeld dat er op blockchain A een nieuw bericht klaarstaat en brengt dit, samen met het bewijs dat het bericht echt is, naar blockchain B.
De relayer bepaalt niet zelf of een bericht geldig is. Dat controleert blockchain B zelf. Daardoor hoeft blockchain B de relayer niet zomaar te vertrouwen.
Relayers sturen niet alleen nieuwe berichten door. Ze kunnen ook een bevestiging terugsturen naar de oorspronkelijke blockchain. Als een bericht niet op tijd wordt verwerkt, kunnen ze daarnaast doorgeven dat de tijdslimiet is verstreken.
In principe kan iedereen als relayer werken. IBC heeft geen centrale partij die verplicht alle berichten moet doorsturen. Een relayer kan er ook voor kiezen om alleen bepaalde soorten berichten of bepaalde verbindingen te ondersteunen.
Wel moet er minstens één actieve relayer zijn om berichten te blijven doorsturen. Een relayer kan een geldig bericht normaal gesproken niet vervalsen, maar als er geen relayer actief is, kan een bericht wel blijven hangen.
IBC heeft geen vast systeem waarmee relayers altijd worden betaald. Hoe zij een vergoeding krijgen, kan daarom per blockchain of applicatie verschillen.
Welke blockchains kunnen Cosmos IBC gebruiken?
In principe kan elke blockchain IBC gebruiken, zolang die blockchain de benodigde onderdelen ondersteunt om berichten te versturen en te controleren. Blockchains hoeven daarvoor niet dezelfde techniek of dezelfde manier van consensus te gebruiken.
Om een andere blockchain te kunnen controleren, gebruikt IBC een zogeheten light client. Welke light client nodig is, hangt af van de blockchain waarmee verbinding wordt gemaakt. Cosmos-blockchains gebruiken bijvoorbeeld vaak een light client voor CometBFT, terwijl er ook andere soorten bestaan voor andere toepassingen.
Dat een blockchain IBC ondersteunt, betekent niet automatisch dat die direct met elke andere IBC-blockchain kan communiceren. Beide blockchains moeten elkaar technisch kunnen controleren en er moet een relayer zijn die de berichten tussen beide netwerken doorstuurt. Bij IBC v1 moet daarnaast eerst een verbinding tussen beide blockchains worden opgezet.
Ook betekent IBC-ondersteuning niet dat elke functie automatisch beschikbaar is. Twee blockchains kunnen bijvoorbeeld wel met elkaar verbonden zijn, terwijl token transfers, NFT-transfers of andere IBC-functies op die verbinding nog niet zijn ingeschakeld.
De Go-versie van IBC wordt gebruikt door veel blockchains binnen het IBC-ecosysteem. Daarnaast zijn er ook oplossingen voor onder meer Solidity/EVM en Solana, al kan de technische werking en beveiliging per integratie verschillen.
Waarvoor wordt Cosmos IBC gebruikt?
Cosmos IBC wordt gebruikt om allerlei soorten cross-chain berichten te versturen, niet alleen tokens. De applicaties aan beide kanten bepalen zelf hoe zij de data in een packet opbouwen en verwerken.
De bekendste toepassing is ICS-20, de standaard voor transfers van fungible tokens. Fungible betekent dat iedere eenheid onderling gelijk is, zoals één token die uitwisselbaar is voor een andere token van dezelfde soort.
Bij zo'n transfer blijft de route en oorsprong van de token beschikbaar als denomination trace. Daardoor kan software terugzien waar een IBC-tokenrepresentatie vandaan komt en via welke route die is gekomen.
IBC kan ook worden gebruikt voor Interchain Accounts via ICS-27. Daarmee kan een controller blockchain transactie-instructies naar een account op een host blockchain sturen. De host blockchain controleert de instructies en voert alleen uit wat is toegestaan.
Daarnaast bestaat ICS-721 voor NFT-transfers. Vertrekt een NFT vanaf de oorspronkelijke blockchain, dan wordt die daar in escrow gezet. Op de ontvangende blockchain ontstaat vervolgens een bijpassende voucher. Gaat de NFT terug, dan gebeurt het omgekeerde.
Er is ook een standaard voor cross-chain queries, ICS-31. Daarbij kan een blockchain informatie opvragen bij een andere blockchain en een relayer brengt het antwoord met bewijs terug. Deze standaard staat nog als Draft vermeld en is dus niet automatisch overal beschikbaar.
Tot slot is er Interchain Security. Daarmee kunnen Cosmos-blockchains proof-of-stake-beveiliging aan elkaar uitlenen. Dat is een aparte IBC-applicatie en geen standaardonderdeel van iedere IBC-verbinding.
Wat zijn de voordelen van Cosmos IBC?
Het grootste voordeel van Cosmos IBC is dat blockchains met elkaar kunnen communiceren zonder hun eigen regels of consensusmechanisme op te geven. Iedere blockchain blijft dus zelfstandig, maar kan wel berichten uitwisselen met andere blockchains.
Een ander sterk punt is de verificatie. De ontvangende blockchain controleert packet commitments en acknowledgements met cryptografische bewijzen via haar lichtclient. De relayer levert de data aan, maar hoeft niet de partij te zijn die je vertrouwt voor de geldigheid ervan.
Verder is IBC modulair. Dezelfde basislaag kan worden gebruikt voor verschillende toepassingen, zoals:
- transfers van fungible tokens;
- NFT-transfers;
- cross-chain transacties via Interchain Accounts;
- andere applicaties die berichten tussen blockchains willen versturen.
IBC kent geen verplichte centrale hub of exclusieve relay-operator. Dat maakt permissionless relaying mogelijk: verschillende partijen kunnen relayers draaien en packets verwerken.
Ook bieden channels keuze in de verwerking van berichten. Een channel kan geordend werken, waarbij packets in een vaste volgorde moeten aankomen, of ongeordend. Met acknowledgements en time-outs krijgen applicaties bovendien een vaste manier om een ontvangen, mislukt of verlopen packet af te handelen.
Een connection kan meerdere channels dragen. Daardoor hoeven verschillende applicaties tussen dezelfde twee blockchains niet steeds opnieuw een volledige connection op te zetten.
Wat zijn de nadelen van Cosmos IBC?
Cosmos IBC heeft ook nadelen, vooral rond beschikbaarheid, technische complexiteit en de security van de verbonden blockchains. IBC maakt cross-chain communicatie mogelijk, maar voegt ook extra stappen toe ten opzichte van een gewone lokale transactie.
De eerste afhankelijkheid is die van relayers. Zonder minstens één correcte en actieve relayer kunnen packets, acknowledgements en client-updates vertraging oplopen of helemaal blijven hangen. Dat betekent niet automatisch dat iemand tokens kan stelen, maar je transfer kan wel niet worden afgerond.
De security van een IBC-connection hangt ook af van de lichtclients en de consensusbeveiliging van beide blockchains. Als een kwaadaardige validatorgroep de trust threshold van een lichtclient overschrijdt, kan de connection onveilig worden.
Een lichtclient kan bovendien onbruikbaar worden. Bijvoorbeeld wanneer de gevolgde blockchain stopt, wanneer updates te lang uitblijven of wanneer de client bevriest na gedetecteerd misbehavior. In de basis IBC- en ICS-20-logica kunnen assets in een getroffen channel dan permanent vast blijven zitten als er geen herstelmechanisme is.
Cross-chain verwerking kost ook meer tijd en vaak meer transactiekosten. Een normale flow kan bestaan uit het versturen van een packet, ontvangen op de andere blockchain, een acknowledgement terugsturen en soms een time-outprocedure. Dat zijn meerdere acties op twee verschillende blockchains.
De technische inrichting is niet bepaald simpel. Lichtclients, connections, channels, applicatiemodules en relayers moeten goed samenwerken. Een fout in configuratie, integratie of onderhoud kan problemen veroorzaken.
Time-outs zijn ook lastiger dan ze op het eerste gezicht lijken. Is er een volledige netwerkpartitie, dan kan de bronblockchain niet uit alleen het uitblijven van een antwoord concluderen dat het packet nooit is uitgevoerd. De bestemmingsblockchain moet bereikbaar zijn om het benodigde bewijs te leveren.
In een private testomgeving zijn ook onder meer vertraging bij bevestigingen, RPC-knelpunten en concurrencyproblemen bij relayers gezien. Zulke resultaten zijn afhankelijk van de gebruikte omgeving en implementatie, maar ze laten wel zien dat relaying in de praktijk technische grenzen kan tegenkomen.
Conclusie
Cosmos IBC is een protocol waarmee zelfstandige blockchains gecontroleerd berichten kunnen uitwisselen. Het gaat dus om veel meer dan alleen tokens versturen: IBC kan ook dienen voor NFT-transfers, Interchain Accounts en andere cross-chain toepassingen.
De kern is dat blockchains elkaar via lichtclients en cryptografische bewijzen kunnen controleren. Relayers brengen de berichten heen en weer, maar beslissen niet zelf of een bericht geldig is. Tegelijk blijven actieve relayers, goede configuratie en de security van beide blockchains cruciaal.
Voor crypto maakt IBC het mogelijk om applicaties op verschillende blockchains beter met elkaar te laten samenwerken. Het is geen magische oplossing zonder risico, maar wel een belangrijke bouwsteen voor een meer verbonden blockchainwereld.