Explicando o XCMP — Como as Parachains conversam entre si

Neste artigo, vamos dar uma olhada no protocolo XCMP — a base da interoperabilidade crosschain das parachains Polkadot.

O que é XCMP?

O nome completo do XCMP é “Cross-Chain Message Passing”. É um dos protocolos de transmissão de mensagens cross-chain, ou cadeia cruzada, da Polkadot, que define a forma de transmissão das mensagens entre parachains da mesma Relay chain.

O protocolo XCMP usa um mecanismo simples de enfileiramento baseado em árvores Merkle para garantir a precisão das informações entre cadeia cruzada. O validador da Relay chain precisa mover a transação na fila de saída de uma parachain para a fila de entrada da parachain de destino.

Por que XCMP?

Por que precisamos de mensagens cross-chain entre parachains? Blockchains tradicionais são altamente isoladas. Embora os contratos inteligentes dentro de uma blockchain possam chamar uns aos outros mutuamente, a troca de mensagens crosschain entre blockchains é difícil.

A visão da Polkadot é construir um ecossistema multi-chain. Uma parachain conectada à Relaychain Polkadot não precisa ser onipotente. Em vez disso, ela pode se concentrar em fazer o que é bom, otimizar-se em uma direção específica e depois interagir com outras cadeias para aprender umas com as outras por meio da interoperabilidade cross-chain.

Por exemplo, um desenvolvedor de jogos deseja desenvolver um jogo no ecossistema multichain da Polkadot. Ele pode executar o jogo em uma parachain de alto desempenho, usar os personagens do jogo fornecidos por uma parachain de NFT e usar stablecoins fornecidas pela parachain DeFi para trocar skins do jogo.

Dessa forma, cada parachain pode ter sua própria vantagem comparativa como um país com livre comércio. À medida que há cada vez mais parachains, há cada vez mais “componentes” que podem ser usados ​​por outras parachains, formando assim um efeito de rede.

O pré-requisito para tudo isso é que deve haver um conjunto de protocolos cross-chain entre parachains para definir todo o processo de transmissão de mensagens, assim como existem regras gerais de comércio em comércios internacionais. E este protocolo é XCMP.

Uma coisa que precisa ser explicada é que a cadeia cruzada que o XCMP pode fazer inclui não apenas a cadeia cruzada de ativos. O XCMP pode ser usado não apenas para enviar tokens entre parachains, mas também qualquer tipo de dados e mensagens. Por exemplo, contratos inteligentes podem ser chamados entre parachains. Isso permite que os desenvolvedores do ecossistema Polkadot aproveitem as características de várias parachains em vez de se limitarem às características de uma cadeia, abrindo assim mais novos casos de uso. Parachains podem ter interoperabilidade, ou seja, composição entre cadeias.

Como o XCMP funciona?

Existem duas funções importantes na Polkadot, os nodes validadores da rede e os nodes collator.

Os nodes validadores estão na relaychain e são responsáveis por produzir blocos na cadeia de retransmissão e receber a prova de transição de estado do collator.

Os collator nodes estão nas parachains e são nós completos da parachain e da Relaychain. Eles coletam as transações da parachain e fornecem provas de transição de estado (state transition proofs) para os validadores. Além disso, os collators também enviam e recebem mensagens de outras parachains por meio do XCMP.

Vamos dar um exemplo para entender como o XCMP funciona. Suponha que um contrato inteligente na parachain A queira enviar uma mensagem para a parachain B, chamando outro contrato inteligente na parachain B para transferir alguns ativos na parachain B.

O collator da parachain A colocará esta mensagem na fila de saída da parachain A, junto com seu destino e um carimbo de data e hora.

O collator da parachain B encontra esta mensagem ao solicitar uma nova mensagem da rede, nessa hora ele coloca a mensagem na sua fila de entrada.

Os validadores da parachain A e da parachain B também irão ler as filas de saída e entrada, respectivamente, para que possam verificar se o transporte da mensagem aconteceu corretamente. Quando o collator da parachain B produzir o próximo bloco na parachain B, a nova mensagem será processada a partir da fila de entrada, e esta mensagem será executada na parachain B para concluir a transferência do ativo conforme o esperado.

Em seguida, este colllator envia o bloco para o validador, o validador verificará se a mensagem foi processada e se outros aspectos estão corretos, então o validador incluirá o bloco na RelayChain. Pronto, todo o processo crosschain foi realizado.

Designer XCMP

O XCMP está atualmente em desenvolvimento e os detalhes podem mudar. No entanto, as decisões gerais de arquitetura e design são as seguintes:

  • As mensagens de cadeia cruzada entre parachains não serão entregues à Relaychain.

  • As mensagens de cadeia cruzada serão restritas a um tamanho máximo em bytes.

  • As parachains têm permissão para bloquear mensagens de outras parachains, nesse caso a parachain remetente ficaria ciente do bloqueio.

  • Os node collator são responsáveis pelo roteamento de mensagens entre as cadeias.

  • Collators produzem a lista de saída de mensagens e recebem as mensagens de entrada de outras parachains.

  • Em cada bloco, espera-se que as parachains encaminhem mensagens de algum subconjunto de todas as outras parachains.

  • Quando um collator produz um novo bloco para entregar para um validador, ele coleta as informações mais recentes da fila de entrada e as processa.

  • Os validadores verificarão a prova de que o novo candidato para o próximo bloco da parachain inclui o processamento das mensagens de entrada esperadas para essa parachain.

As filas XCMP devem ser iniciadas abrindo primeiro um canal entre duas parachains. O canal é identificado pelas parachains do remetente e do destinatário, o que significa que é um canal unidirecional. Duas parachains podem ter no máximo dois canais entre elas, um para enviar mensagens para a outra chain e outra para receber mensagens. O canal exigirá um depósito em DOT para ser aberto, que será devolvido quando o canal for fechado.

XCMP x XCM

As abreviaturas de XCMP e XCM são semelhantes, e para evitar possíveis confusões, fazemos uma distinção aqui.

XCM é a abreviação de Cross-Consensus Message Format em Polkadot. É um formato de mensagem, não um protocolo de cadeia cruzada. Ele define como a transmissão da mensagem deve ser entendida, mas não pode transmitir a mensagem em si.

As mensagens no formato XCM podem ser usadas não apenas para protocolos de cadeia cruzada, como XCMP, mas também para transferir mensagens entre diferentes sistemas de consenso.

Atualizações do XCMP.

O XCMP está atualmente em desenvolvimento e ainda não foi lançado, então alguns detalhes ainda não foram determinados.

Atualmente, a comunicação cross-chain entre parachains usa HRMP (Horizontal Rela-routed Message Passing) como um protocolo paliativo. Por exemplo, hoje o canal entre Karura e Kintsugi usa HRMP. Este esquema tem a mesma função do XCMP. A diferença é que ele consome muito mais recursos, pois armazena todas as mensagens no armazenamento da cadeia de retransmissão, enquanto no XCMP apenas os metadados associados são armazenados como um hash no armazenamento da cadeia de retransmissão. Depois que o XCMP ficar online, provavelmente o HRMP será desativado.

Artigo original em: Polkadot XCMP Explained — How Parachains Talk to Each Other


Giorge Abdala

Twitter: https://twitter.com/AbdalaGiorge

Wallet DOT: 16XUE2ByWUV3xU3Lmpi2fiba122ZgnARFZcHyY7QxXB468uv

Formado em TI pela UFPR, com pós graduação em Gestão de Marketing e MBA em Mercado Financeiro. É um membro ativo da comunidade DotSama Brasileira, desenvolvedor de softwares, apaixonado pelo ecosssitema de Polkadot, Kusama e suas parachains. Produz conteúdo original no Medium Blog PolkaMix e traduz conteúdos ainda não traduzidos para o português sobre o mundo DotSama no geral.

0
3tZwTo…phy6nVPost author

Espaço para atualizações e novidades do Ecossistema Polkadot e Kusama .

0 comments

Espaço para atualizações e novidades do Ecossistema Polkadot e Kusama .