ELI5: ¿Qué es IBC?
El nacimiento de Bitcoin condujo a una explosión cámbrica de cadenas de bloques con diferentes decisiones de diseño y casos de uso. Si bien estos registros distribuidos sirven para diferentes propósitos, existieron (y aún existen hasta cierto punto) como silos con una interacción significativa limitada.
Al igual que Internet, que facilita que diferentes tipos de computadoras en diferentes partes del mundo se comuniquen entre sí, se necesita una tecnología similar que actúe como el tejido conectivo entre las cadenas de bloques para la acumulación de valor real. El protocolo Inter-Blockchain Communication (IBC) tiene como objetivo cumplir este propósito.
IBC es un protocolo de interoperabilidad universal que permite que dos cadenas de bloques diferentes se comuniquen entre sí. IBC garantiza una comunicación confiable , ordenada y autenticada .
Quizás una de las propiedades más importantes de IBC es la minimización de la confianza. En las cadenas de bloques, la propiedad de minimizar la confianza está inherentemente vinculada a la seguridad. Ningún sistema distribuido es completamente 'sin confianza'. Por lo tanto, la cuestión de la seguridad se reduce a en quién o en qué se confía y cómo se puede violar esa confianza, es decir, ¿qué se necesita para que la entidad de confianza se corrompa?
En este sentido, ya diferencia de la mayoría de las soluciones puente, IBC no utiliza terceros de confianza. Esto significa que si confía en dos cadenas en particular para usar las funciones que brindan (y, de manera predeterminada, sus mecanismos de consenso), entonces no se requiere una suposición de confianza adicional al usar IBC para interactuar entre dichas cadenas.
IBC también es más que un simple puente que facilita las transferencias de tokens. Es un protocolo de paso de mensajes de propósito general . Esto significa que cualquier forma de datos se puede comunicar a través de IBC.
¿Cómo funciona IBC?
Para comprender cómo funciona IBC, es importante separar las dos capas diferentes de IBC: 1) la capa de transporte y 2) la capa de aplicación.
Capa de transporte
Los mensajes comunicados a través de IBC se transportan dentro de paquetes de datos . Y la capa de transporte es responsable de transportar , autenticar y ordenar estos paquetes de datos.
La capa de transporte no especifica nada sobre cuáles deben ser los datos en los paquetes o cómo deben ser interpretados por una cadena receptora. Desde el punto de vista de la capa de transporte, la información dentro de los paquetes de datos son solo bytes aleatorios.
Los componentes clave de la capa de transporte son clientes ligeros, repetidores, conexiones y canales.
Un cliente ligero es una representación ligera de una cadena de bloques. A diferencia de un nodo completo , los clientes ligeros no almacenan el historial completo de todos los mensajes contenidos en una cadena de bloques. Tampoco ejecutan transacciones. Más bien, los clientes ligeros están diseñados para conectarse a un nodo completo y verificar los encabezados de bloque (un resumen de los datos contenidos dentro de un bloque). Esto permite que los clientes ligeros sean eficientes en términos de almacenamiento y computación.
Dos cadenas de bloques A y B independientes que interactúan sobre IBC tienen clientes ligeros de la cadena de contrapartes. Esto significa que A tiene un cliente ligero en su cadena de bloques que actúa como una representación ligera de la cadena de bloques de B. Cuando A quiere comunicar un cierto mensaje 'X' con B , envía el encabezado del bloque en el que existe ese mensaje, junto con una prueba de compromiso de ese mensaje a B. La prueba de compromiso se utiliza para verificar la presencia o ausencia de un mensaje particular en A . Usando el encabezado del bloque y la prueba, B verifica criptográficamente queA de hecho realizó X . Es este uso de clientes ligeros en IBC lo que permite que las cadenas de bloques intercambien mensajes entre sí sin la necesidad de un tercero de confianza.
Pero A y B no se envían directamente estos mensajes/paquetes de datos entre sí. En cambio, cuando A desea enviar un mensaje a B , confirma o almacena un hash de un paquete de datos que contiene el mensaje en su máquina de estado . Los repetidores , que son procesos fuera de la cadena, observan constantemente dichos mensajes. Cuando ven que A ha enviado un mensaje destinado a B en su máquina de estado, simplemente toman este mensaje y lo pasan a B. Tenga en cuenta que los repetidores no tienen permiso y, por lo tanto, cualquiera puede ejecutarlos.
Las conexiones son responsables de conectar clientes ligeros en dos cadenas diferentes. Y los canales son conductos para transferir paquetes entre módulos en estas diferentes cadenas. Por lo tanto, mientras que las conexiones son específicas de la cadena, los canales son específicos del módulo. Cada extremo de canal tiene una ID de canal única (y una ID de puerto) que se usa para enrutar paquetes de manera precisa entre dos módulos.
Capa de aplicación
La capa de aplicación es con lo que interactúan los usuarios finales. Consiste en varias aplicaciones que usan la capa de transporte para construir encima. La capa de transporte no especifica cómo deben interpretarse los paquetes de datos. Esta función la realiza la capa de aplicación.
IBC admite una variedad de aplicaciones, como transferencias de tokens fungibles/no fungibles, fuentes de Oracle entre cadenas, cuentas entre cadenas, consultas entre cadenas, middleware de tarifas (para incentivar a los repetidores), etc.
Por ejemplo, la aplicación de nivel IBC para transferencias de tokens, denominada Interchain Standard 20 (ICS 20), especifica cómo se deben estructurar los paquetes de datos y cómo deben ser interpretados por las cadenas receptoras. En el caso de las transferencias de tokens fungibles, los paquetes de datos contienen información sobre el remitente, el destinatario, el monto y la denominación (denominación IBC). El campo de denominación traza el camino por el que ha pasado un token en particular para llegar a una determinada cadena. La lógica con respecto a cómo se actuará sobre los paquetes también se especifica en el ICS 20.
Una analogía simple que puede ser útil para comprender IBC es la del sistema de entrega de correo. Cuando envía una carta a alguien, la envía a través de un servicio postal que recoge el sobre que contiene la carta y lo deposita en el buzón del destinatario. El destinatario luego abre dicho sobre y lee su carta. La capa de transporte de IBC se puede considerar como el servicio postal. El servicio postal no le dice cuál debe ser el contenido de la carta, o cómo el destinatario debe interpretar su mensaje.
Tampoco saben cuál es el contenido del sobre. Solo realiza la acción de recoger el sobre del punto A y enviarlo al punto B. El sobre en sí puede considerarse como paquetes IBC que se envían de una cadena a otra. Y en este sobre, especificaría la dirección del destinatario. Esto es similar a cómo los paquetes IBC contienen información sobre quién envió el paquete (especificado por la ID del canal) y para quién está destinado (especificado por la ID del canal de la contraparte). Al final, es el receptor (aplicación) el que se encarga de abrir el sobre (paquete de datos) e interpretar el contenido de la carta.
¿Para qué se puede utilizar IBC?
Además de las transferencias de tokens fungibles, otras dos aplicaciones de nivel IBC incluyen Interchain Accounts e Interchain Security .
Las cuentas entre cadenas facilitan la interacción cadena a cadena mientras permanecen en una sola interfaz. Esto significa que cualquier acción, como transferencias, replanteo o votación de propuestas de gobernanza que se puede realizar en B (llamada 'cadena de host'), se puede realizar desde A (llamada 'cadena de controlador'). Interchain Accounts aumenta significativamente la componibilidad dentro de Interchain al mejorar la experiencia del usuario.
Interchain Security es la versión de seguridad compartida de Cosmos Ecosystem. Permite que una cadena de bloques arriende seguridad de otra cadena de manera completamente opcional. Esto es especialmente útil para las nuevas cadenas que pueden optar por aprovechar la seguridad que ofrece una red ya establecida como Cosmos Hub. Interchain Security elimina la necesidad de que las cadenas inicien su propio conjunto de validadores.
El alcance de las aplicaciones que se pueden realizar usando IBC como una primitiva central está creciendo constantemente. Las transferencias NFT entre cadenas y las consultas entre cadenas (donde una cadena puede leer el estado de otra cadena) se están desarrollando actualmente y pronto estarán listas para la producción.
¿Qué problema resuelve IBC?
En una frase, IBC resuelve el problema de las cadenas de bloques que existen como silos con interacción limitada. La interoperabilidad entre blockchains es necesaria para la máxima acumulación de valor.
Cada cadena de bloques atiende a uno o más casos de uso especializados. Si estos casos de uso no se pueden aprovechar en varias cadenas de bloques, su utilidad se verá gravemente perjudicada. El gran avance que proporcionó Internet es que la información puede fluir fácilmente a través de diferentes partes del mundo con facilidad. Del mismo modo, la utilidad de diferentes cadenas de bloques debe ser de libre acceso en múltiples plataformas.
Por ejemplo, los usuarios pueden querer usar monedas estables de una cadena de bloques para generar rendimiento a través de un grupo de liquidez (LP) en un intercambio descentralizado (DEX) que existe en otra cadena de bloques. O podrían querer aprovechar las propiedades de preservación de la privacidad que proporciona una cadena de bloques diferente. Se requiere interoperabilidad entre cadenas para realizar estos casos de uso y más.
IBC no solo resuelve el problema de la interoperabilidad, sino que lo hace de una manera segura, extensible y de propósito general que minimiza la confianza.
¿Cómo puedo yo, como desarrollador de aplicaciones, usar IBC?
La naturaleza modular de Cosmos SDK evita que los desarrolladores tengan que preocuparse por algunas de las capas de abstracciones, como clientes ligeros, conexiones, verificación de pruebas, etc. Para los desarrolladores, los requisitos y funciones más importantes con los que deben familiarizarse son los canales y los puertos . Para obtener información más detallada sobre IBC, puede consultar nuestro portal para desarrolladores .
Si está construyendo su cadena de bloques con Cosmos SDK, aquí se detallan los pasos necesarios para habilitar IBC para un módulo SDK . También puede postularse al Programa Interchain Builders, una iniciativa de ICF, para obtener apoyo para construir en Cosmos.
Sobre el autor: esta publicación fue escrita por Adi Ravi Raj , analista de protocolo IBC en Interchain GmbH.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































