¿Qué es Cosmos IBC? Una introducción a Inter-Blockchain Communication

¿Qué es Cosmos IBC? Una introducción a Inter-Blockchain Communication

¿Qué es Cosmos IBC?

Cosmos IBC es un protocolo mediante el cual blockchains independientes pueden intercambiar mensajes de forma segura entre sí. IBC significa Inter-Blockchain Communication y surgió dentro del ecosistema Cosmos. Por eso, a menudo se escucha el nombre Cosmos IBC, pero el diseño no está pensado únicamente para blockchains de Cosmos SDK.

En términos simples, IBC es un conjunto común de reglas para blockchains que desean comunicarse entre sí. El protocolo determina cómo se envía un mensaje, cómo la blockchain receptora comprueba que el mensaje es auténtico y en qué orden se procesan los mensajes. Puede verse IBC como una especie de estándar de comunicación para blockchains, de forma similar a cómo la EVM dentro de Ethereum ofrece un entorno estándar para ejecutar smart contracts.

Por tanto, IBC no es una blockchain, ni un centro central, ni tampoco solo un puente para tokens. Una transferencia de tokens sí es una aplicación conocida, pero IBC también puede transmitir otros tipos de mensajes. Piense en instrucciones para la gestión de cuentas en otra blockchain.

Es importante saber lo siguiente: el contenido de un mensaje IBC lo determina la aplicación que lo envía y lo recibe. IBC se encarga sobre todo del transporte y de la verificación que lo rodea. Puede verse como un sistema de entrega fiable, mientras que la aplicación determina qué contiene el paquete y qué debe hacerse con él.

El diseño original se denomina IBC v1. En él, dos blockchains crean primero una connection y después channels antes de que las aplicaciones puedan intercambiar mensajes. IBC v2 es la versión más reciente del diseño y busca simplificar esto mediante comunicación directa entre clients. Los estándares de v2 todavía están en Draft.


Puntos clave

  • IBC significa Inter-Blockchain Communication y permite que blockchains independientes intercambien mensajes.
  • Cosmos IBC no es una blockchain ni un centro central, sino un protocolo de interoperabilidad.
  • IBC puede utilizarse para mucho más que solo transferencias de tokens.
  • IBC v1 funciona con connections y channels entre dos blockchains.
  • IBC v2 es la iteración más reciente, pero las especificaciones todavía figuran como Draft.

¿Cómo funciona Cosmos IBC?

Cosmos IBC funciona porque ambas blockchains se verifican entre sí mediante un light client propio en cadena. Un light client es un pequeño componente en una blockchain que puede seguir información de otra blockchain y comprobar pruebas criptográficas.

Suena técnico, pero la idea es bastante lógica. La blockchain A no tiene que creer ciegamente lo que le diga la blockchain B o un relayer. La blockchain A conserva información con la que puede comprobar si un mensaje realmente forma parte del estado de la blockchain B.

En IBC v1, dos blockchains primero establecen una connection. Se trata de una conexión controlada mediante la cual ambas blockchains dejan constancia de con qué red se están comunicando.

La creación de esa connection se realiza en cuatro pasos. ConnectionOpenInit inicia la conexión, ConnectionOpenTry permite que la otra blockchain responda, ConnectionOpenAck confirma que los datos son correctos y ConnectionOpenConfirm finaliza la conexión. Así, ambas blockchains verifican paso a paso que están conectadas con la contraparte correcta.

En una sola connection pueden funcionar varios channels. Un channel es un canal de comunicación específico entre dos aplicaciones en distintas blockchains. Las aplicaciones se vinculan a un port único. Puede verse un port como el punto de contacto fijo de una aplicación, y un channel como la ruta acordada hacia la aplicación del otro lado.

¿Cómo pasa entonces un mensaje de A a B?

  1. La aplicación crea un packet La aplicación emisora crea un packet. Dicho de forma sencilla, es un paquete de datos, como una instrucción para enviar tokens.

  2. La blockchain de origen registra un commitment La blockchain desde la que sale el packet escribe un packet commitment en su propio estado. Se trata de una prueba criptográfica de que el packet quedó registrado allí.

  3. Un relayer transporta el packet y la prueba Un relayer lee el packet y la prueba correspondiente y presenta ambos en la blockchain receptora.

  4. La blockchain receptora verifica todo El light client comprueba la prueba criptográfica. Si la prueba es correcta, la aplicación receptora puede procesar el packet.

  5. Normalmente se devuelve un acknowledgement Tras el procesamiento, la aplicación receptora suele escribir un acknowledgement. Se trata de un mensaje de recepción o de resultado. Un relayer puede devolver esta prueba a la blockchain donde comenzó el packet.

Los packets también tienen un time-out. Si un packet no llega a tiempo, la blockchain de origen puede iniciar el tratamiento del time-out, pero solo con pruebas del estado de la blockchain de destino. Por tanto, no recibir respuesta no basta para revertir una transferencia sin más.

Ejemplo: Suponga que envía tokens de la blockchain A a la blockchain B mediante IBC. La blockchain A registra que el mensaje fue enviado. Después, un relayer lleva el mensaje con la prueba a la blockchain B. En cuanto la blockchain B ha verificado que la prueba es correcta, la transferencia se procesa y puede enviarse una confirmación de vuelta a la blockchain A.

IBC v2 busca simplificar esta estructura. En lugar de varios pasos técnicos para conectar dos blockchains, v2 permite enviar mensajes de forma más directa entre ambas redes. Este enfoque todavía no es el estándar en todas partes, porque los principales estándares de IBC v2 siguen en desarrollo.

¿Qué papel desempeñan los relayers dentro de Cosmos IBC?

Los relayers son los repartidores de mensajes IBC entre blockchains. Supervisan las blockchains y envían los mensajes a la otra blockchain.

La blockchain A y la blockchain B no se envían mensajes IBC directamente entre sí. Un relayer, por ejemplo, detecta que en la blockchain A hay un nuevo mensaje listo y lo lleva, junto con la prueba de que el mensaje es auténtico, a la blockchain B.

El relayer no decide por sí mismo si un mensaje es válido. Eso lo comprueba la propia blockchain B. De este modo, la blockchain B no tiene que confiar ciegamente en el relayer.

Los relayers no solo reenvían mensajes nuevos. También pueden devolver una confirmación a la blockchain original. Si un mensaje no se procesa a tiempo, además pueden comunicar que el plazo ha expirado.

En principio, cualquiera puede actuar como relayer. IBC no tiene una parte central que esté obligada a reenviar todos los mensajes. Un relayer también puede optar por admitir solo ciertos tipos de mensajes o determinadas conexiones.

Sin embargo, debe haber al menos un relayer activo para seguir reenviando mensajes. Un relayer normalmente no puede falsificar un mensaje válido, pero si no hay ningún relayer activo, un mensaje puede quedarse bloqueado.

IBC no tiene un sistema fijo mediante el cual los relayers reciban siempre un pago. Por ello, la forma en que obtienen una remuneración puede variar según la blockchain o la aplicación.

¿Qué blockchains pueden usar Cosmos IBC?

En principio, cualquier blockchain puede usar IBC siempre que esa blockchain admita los componentes necesarios para enviar y verificar mensajes. Para ello, las blockchains no tienen que usar la misma tecnología ni el mismo mecanismo de consenso.

Para poder verificar otra blockchain, IBC utiliza un llamado light client. El light client necesario depende de la blockchain con la que se establezca la conexión. Las blockchains de Cosmos, por ejemplo, suelen usar un light client para CometBFT, aunque también existen otros tipos para otras aplicaciones.

Que una blockchain admita IBC no significa automáticamente que pueda comunicarse de inmediato con cualquier otra blockchain IBC. Ambas blockchains deben poder verificarse técnicamente entre sí y debe existir un relayer que reenvíe los mensajes entre ambas redes. En IBC v1, además, primero debe establecerse una conexión entre ambas blockchains.

Tampoco significa que todas las funciones estén disponibles automáticamente. Dos blockchains pueden estar conectadas, por ejemplo, mientras que las transferencias de tokens, las transferencias de NFT u otras funciones IBC todavía no estén habilitadas en esa conexión.

La versión Go de IBC se utiliza en muchas blockchains dentro del ecosistema IBC. Además, también existen soluciones para Solidity/EVM y Solana, aunque el funcionamiento técnico y la seguridad pueden variar según la integración.

¿Para qué se utiliza Cosmos IBC?

Cosmos IBC se utiliza para enviar todo tipo de mensajes cross-chain, no solo tokens. Las aplicaciones de ambos lados determinan por sí mismas cómo estructuran y procesan los datos de un packet.

La aplicación más conocida es ICS-20, el estándar para transferencias de fungible tokens. Fungible significa que cada unidad es intercambiable con otra, como un token que puede intercambiarse por otro token del mismo tipo.

En una transferencia de este tipo, la ruta y el origen del token permanecen disponibles como denomination trace. Así, el software puede ver de dónde procede una representación de token IBC y por qué ruta llegó.

IBC también puede utilizarse para Interchain Accounts mediante ICS-27. Con ello, una blockchain controladora puede enviar instrucciones de transacción a una cuenta en una blockchain anfitriona. La blockchain anfitriona verifica las instrucciones y solo ejecuta lo que está permitido.

Además, existe ICS-721 para transferencias de NFT. Si un NFT sale de la blockchain original, allí se deposita en escrow. En la blockchain receptora, a continuación, se crea un voucher correspondiente. Si el NFT regresa, ocurre lo contrario.

También existe un estándar para consultas cross-chain, ICS-31. En este caso, una blockchain puede solicitar información a otra blockchain y un relayer devuelve la respuesta con prueba. Este estándar todavía figura como Draft y, por tanto, no está disponible automáticamente en todas partes.

Por último, está Interchain Security. Con ello, las blockchains de Cosmos pueden prestarse seguridad proof-of-stake entre sí. Se trata de una aplicación IBC aparte y no de una parte estándar de cada conexión IBC.

¿Cuáles son las ventajas de Cosmos IBC?

La mayor ventaja de Cosmos IBC es que las blockchains pueden comunicarse entre sí sin renunciar a sus propias reglas o a su mecanismo de consenso. Cada blockchain sigue siendo independiente, pero aun así puede intercambiar mensajes con otras blockchains.

Otro punto fuerte es la verificación. La blockchain receptora comprueba los packet commitments y los acknowledgements mediante pruebas criptográficas a través de su light client. El relayer aporta los datos, pero no tiene por qué ser la parte en la que se confía para validar su autenticidad.

Además, IBC es modular. La misma capa base puede utilizarse para distintas aplicaciones, como:

  • transferencias de fungible tokens;
  • transferencias de NFT;
  • transacciones cross-chain mediante Interchain Accounts;
  • otras aplicaciones que quieran enviar mensajes entre blockchains.

IBC no tiene un centro central obligatorio ni un operador exclusivo de relay. Esto permite el permissionless relaying: distintas partes pueden ejecutar relayers y procesar packets.

Los channels también ofrecen opciones en el procesamiento de mensajes. Un channel puede funcionar de forma ordenada, en cuyo caso los packets deben llegar en un orden fijo, o de forma desordenada. Con acknowledgements y time-outs, además, las aplicaciones disponen de una forma definida de gestionar un packet recibido, fallido o expirado.

Una connection puede soportar varios channels. Por ello, distintas aplicaciones entre las mismas dos blockchains no tienen que establecer una nueva connection completa cada vez.

¿Cuáles son las desventajas de Cosmos IBC?

Cosmos IBC también tiene desventajas, sobre todo en relación con la disponibilidad, la complejidad técnica y la seguridad de las blockchains conectadas. IBC permite la comunicación cross-chain, pero también añade pasos adicionales en comparación con una transacción local normal.

La primera dependencia es la de los relayers. Sin al menos un relayer correcto y activo, los packets, acknowledgements y actualizaciones del client pueden retrasarse o quedarse bloqueados por completo. Eso no significa automáticamente que alguien pueda robar tokens, pero sí que su transferencia puede no completarse.

La seguridad de una conexión IBC también depende de los light clients y de la seguridad del consenso de ambas blockchains. Si un grupo de validadores malicioso supera el threshold de confianza de un light client, la connection puede volverse insegura.

Además, un light client puede dejar de ser utilizable. Por ejemplo, cuando la blockchain seguida se detiene, cuando las actualizaciones tardan demasiado o cuando el client se congela tras detectar misbehavior. En la lógica básica de IBC e ICS-20, los activos en un channel afectado pueden quedar entonces bloqueados de forma permanente si no existe un mecanismo de recuperación.

El procesamiento cross-chain también requiere más tiempo y, a menudo, más comisiones de transacción. Un flujo normal puede consistir en enviar un packet, recibirlo en la otra blockchain, devolver un acknowledgement y, en ocasiones, ejecutar un procedimiento de time-out. Son varias acciones en dos blockchains distintas.

La configuración técnica no es precisamente sencilla. Los light clients, las connections, los channels, los módulos de aplicación y los relayers deben funcionar bien juntos. Un error de configuración, integración o mantenimiento puede causar problemas.

Los time-outs también son más complejos de lo que parecen a primera vista. Si existe una partición completa de la red, la blockchain de origen no puede concluir solo por la ausencia de respuesta que el packet nunca se ejecutó. La blockchain de destino debe ser accesible para proporcionar la prueba necesaria.

En un entorno privado de pruebas también se han observado, entre otros, retrasos en las confirmaciones, cuellos de botella en RPC y problemas de concurrencia en relayers. Estos resultados dependen del entorno y de la implementación utilizados, pero muestran que el relaying puede encontrar límites técnicos en la práctica.

Conclusión

Cosmos IBC es un protocolo mediante el cual blockchains independientes pueden intercambiar mensajes de forma controlada. Por tanto, va mucho más allá de enviar solo tokens: IBC también puede servir para transferencias de NFT, Interchain Accounts y otras aplicaciones cross-chain.

La clave es que las blockchains pueden verificarse entre sí mediante light clients y pruebas criptográficas. Los relayers llevan los mensajes de un lado a otro, pero no deciden por sí mismos si un mensaje es válido. Al mismo tiempo, los relayers activos, una buena configuración y la seguridad de ambas blockchains siguen siendo cruciales.

Para crypto, IBC hace posible que las aplicaciones en distintas blockchains cooperen mejor entre sí. No es una solución mágica sin riesgos, pero sí un componente importante para un mundo blockchain más conectado.

Acerca de Finst

Finst es una plataforma de criptomonedas líder en los Países Bajos que ofrece comisiones de trading ultrabajas, seguridad de nivel institucional y un conjunto integral de servicios cripto como trading, custodia, staking y rampas fiat de entrada y salida. Finst, fundada por el antiguo equipo central de DEGIRO, está autorizada como proveedor de servicios de criptoactivos por la Autoridad Neerlandesa de los Mercados Financieros (AFM) y presta servicios tanto a clientes minoristas como institucionales en 30 países europeos.

La plataforma de criptomonedas para todos los inversores

Tanto si es un trader activo como un inversor a largo plazo, Finst le permite hacer crecer su patrimonio en criptomonedas con confianza y tranquilidad.

Abrir cuenta gratis