XMC: Formato de Mensajería de Consenso Cruzado de Polkadot

martes, 13 de septiembre de 2022

XCM Polkadot

El Cross-Consensus Message Format, abreviado como XCM, es un formato de mensajería habilitado en Polkadot que define la forma en la que se debe realizar el intercambio de información entre dos blockchains. Polkadot aspira a que el formato XCM no sea un lenguaje exclusivo para Polkadot, sino que se extienda entre diferentes sistemas de consenso y diferentes blockchains fuera de su ecosistema.

De la misma forma que existe el sistema IBC en el ecosistema Cosmos, el formato XCM permite a las distintas parachains de Polkadot comunicarse entre sí impulsando así la interoperabilidad entre redes.

Esto es posible gracias al XCMP o Cross-Chain Message Passing, uno de los protocolos de comunicación de Polkadot que permite a las parachains intercambiar mensajes entre sí haciendo uso del formato XCM. De esta forma, Polkadot pretende garantizar una interoperabilidad nativa, uno de sus estandartes.

Tipos de vías de comunicación en Polkadot

Actualmente, Polkadot cuenta con tres vías distintas para intercambiar mensajes entre sus parachains: UMP, DMP y XCMP, sin contar con los bridges y los pallets de contratos. Veamos en qué consiste cada uno de ellos:

  • UMP o Upward Message Passing: permite que las parachains envíen mensajes a la relay chain.
  • DMP o Downward Message Passing: permite a la relay chain enviar mensajes a cualquiera de sus parachains.
  • XCMP o Cross-Chain Message Passing: permite la comunicación entre las diferentes parachains.

Diferencia entre XCM vs. XCMP

Las siglas XCMP y XCM pueden parecer muy similares, por lo que haremos una distinción para evitar confusiones. XCM es un formato de mensaje, no un protocolo cross-chain de Polkadot. En otras palabras, proporciona instrucciones sobre cómo debe entenderse el mensaje, pero no puede enviar el mensaje por sí solo. En cambio, los mensajes XCM pueden ser utilizados no solo por otros protocolos de mensajería cross-chain como el XCMP, sino que además también pueden emplearse entre distintos protocolos de consenso.

¿Cómo funciona XCMP?

Pongamos un ejemplo para entender cómo funciona el XCMP. Supongamos que el contrato inteligente en Parachain A quiere enviar un mensaje a la Parachain B, llamando así a otro contrato inteligente de la Parachain B para transferir determinados activos a la Parachain B. El collator de la Parachain A pondrá este mensaje en la cola de salida de la Parachain A, junto con su destino y marca de tiempo.

El collator de la Parachain B encontrará este mensaje al solicitar un nuevo mensaje de la red y lo pondrá en su cola de entrada. Los validadores de la Parachain A y de la Parachain B también leerán las colas de salida y de entrada, respectivamente, para poder verificar que se produjo este intercambio de mensajes. Cuando el collator de la Parachain B produzca el siguiente bloque en la Parachain B, el nuevo mensaje será procesado desde la cola de entrada y este mensaje será ejecutado en la Parachain B para completar la transferencia de activos como se esperaba. A continuación, este collator envía el bloque al validador y este verificará que el mensaje ha sido procesado y que los demás factores del bloque estén correctos, y será entonces cuando el validador incluirá el bloque en la relay chain. Así se realiza todo el proceso.

Al igual que ocurre con los canales IBC de Cosmos, las colas de entrada y salida del XCMP se tienen que crear abriendo un canal entre dos parachains. El canal es identificado por ambas parachains, la emisora y la receptora, lo que significa que es un canal unidireccional. Un par de parachains puede tener como máximo dos canales entre ellos, uno para enviar mensajes y otro para recibirlos. El canal requerirá un depósito en DOT para ser abierto que será devuelto cuando el canal se cierre, así es como funciona XCMP.

¿Cómo se ejecuta el formato XCM?

Del mismo modo que los contratos inteligentes en Ethereum se ejecutan a través de EVM, en este caso, XCM se ejecuta a través de la máquina virtual XCVM (Cross-Consensus Virtual Machine) y permite interpretar los mensajes en cada una de las anteriormente mencionadas vías de comunicación. XCVM es una computadora no completa de Turing ultra rápida y sus instrucciones están diseñadas para estar aproximadamente al mismo nivel que las transacciones. XCVM incluye una serie de registros, así como el acceso al estado general del sistema de consenso que la aloja.

En definitiva, un mensaje en XCM es un programa que se ejecuta en XCVM. Con esto Polkadot busca establecer una máquina virtual capaz de ejecutar una amplia gama de instrucciones que le permiten una gran flexibilidad a la hora de realizar distintas operaciones.

Objetivos de XCM

El formato de mensajería XCM se encuentra en fase inicial, y tiene algunas aplicaciones en el sistema de Polkadot, como XCMP. Sin embargo, su desarrollo debe estar en constante evolución si desea consolidarse como un formato de comunicación de última generación. Para ello, XCM debe ser:

  • Un lenguaje general que permita intercomunicar todo un ecosistema en constante crecimiento.

  • Un lenguaje extensible aplicable a aquellas situaciones que impliquen un cambio de timón, puesto que el ecosistema blockchain es cambiante y evolutivo.

  • Un lenguaje eficiente que pueda ejecutarse on-chain y en entornos controlados.

XCM vs. Bridges

Hemos visto como en los últimos años han surgido bridges con la finalidad de enviar datos y tokens de una blockchain a otra (cross-chain). Aunque en principio han podido lograr el objetivo, algunos de ellos han sido víctimas de ataques, como es el caso de Wormhole y Meter.io.

Podemos decir que los bridges son los primeros intentos de interoperabilidad entre cadenas, pero aún presentan ciertas limitaciones. Partiendo de esto, Vitalik Buterin, cofundador de Ethereum, ha empleado una narrativa que insta a los desarrolladores a crear sistemas multichain que permitan intercambiar activos entre blockchains en la misma capa, en vez de recurrir a soluciones cross-chain como los bridges.

Polkadot se posiciona en la vanguardia al diseñar el formato de mensajería XCM, un sistema nativo multichain capaz de transmitir datos y valor entre blockchains desde la misma capa, garantizando un entorno seguro de intercambio y estando actualmente operativo.

El futuro de XCM

XCM en primera instancia fue desarrollado para compartir datos y activos entre las distintas parachains que se encuentren conectadas a la relay chain de Polkadot, sin embargo, su alcance va más allá, ya que permite la comunicación entre los contratos inteligentes y los módulos de tiempo de ejecución de Substrate, también conocidos como pallets. Así mismo, los desarrolladores de XCM plantean la posibilidad de que el lenguaje sea compatible con otras blockchains fuera del ecosistema de Polkadot, de este modo quieren asegurarse de que exista una comunicación fluida de datos y activos, y que dicha comunicación goce de la seguridad que ofrece su relay chain.

Escrito por