O que é o Cosmos IBC? Uma introdução à Inter-Blockchain Communication

O que é o Cosmos IBC? Uma introdução à Inter-Blockchain Communication

O que é o Cosmos IBC?

Cosmos IBC é um protocolo que permite que blockchains independentes troquem mensagens entre si de forma segura. IBC significa Inter-Blockchain Communication e surgiu no ecossistema Cosmos. Por isso, ouve-se muitas vezes o nome Cosmos IBC, mas o design não se destina apenas a blockchains da Cosmos SDK.

Em termos simples, IBC é um conjunto comum de regras para blockchains que querem comunicar entre si. O protocolo define como uma mensagem é enviada, como a blockchain recetora verifica que a mensagem é autêntica e em que ordem as mensagens são processadas. Pode ver o IBC como uma espécie de norma de comunicação para blockchains, de forma semelhante a como a EVM dentro da Ethereum oferece um ambiente padrão para executar smart contracts.

O IBC, portanto, não é uma blockchain, não é um centro central e também não é apenas uma ponte para tokens. Uma transferência de tokens é, de facto, uma aplicação conhecida, mas o IBC também pode transmitir outros tipos de mensagens. Pense em instruções para a gestão de contas noutra blockchain.

É importante saber: o conteúdo de uma mensagem IBC é determinado pela aplicação que a envia e recebe. O IBC trata sobretudo do transporte e da verificação em torno disso. Pode vê-lo como um sistema de entrega fiável, enquanto a aplicação determina o que está dentro da encomenda e o que deve acontecer com ela.

A configuração original chama-se IBC v1. Nessa versão, duas blockchains criam primeiro uma connection e depois channels antes de as aplicações poderem trocar mensagens. O IBC v2 é a versão mais recente do design e pretende simplificar isto com comunicação direta entre clients. As normas para a v2 ainda estão em Draft.


Pontos principais

  • IBC significa Inter-Blockchain Communication e permite que blockchains independentes troquem mensagens.
  • O Cosmos IBC não é uma blockchain nem um centro central, mas sim um protocolo de interoperabilidade.
  • O IBC pode ser usado para muito mais do que apenas transferências de tokens.
  • O IBC v1 funciona com connections e channels entre duas blockchains.
  • O IBC v2 é a iteração mais recente, mas as especificações ainda estão indicadas como Draft.

Como funciona o Cosmos IBC?

O Cosmos IBC funciona porque ambas as blockchains se verificam mutuamente com um light client on-chain próprio. Um light client é um pequeno componente numa blockchain que pode acompanhar informação de outra blockchain e verificar provas criptográficas.

Isto soa técnico, mas a ideia é bastante lógica. A blockchain A não precisa de acreditar cegamente no que a blockchain B ou um relayer dizem. A blockchain A guarda informação que lhe permite confirmar se uma mensagem está realmente no estado da blockchain B.

No IBC v1, duas blockchains estabelecem primeiro uma connection. Trata-se de uma ligação controlada que permite que ambas as blockchains definam com que rede estão a comunicar.

A criação de uma connection deste tipo acontece em quatro passos. ConnectionOpenInit inicia a ligação, ConnectionOpenTry permite que a outra blockchain responda, ConnectionOpenAck confirma que os dados estão corretos e ConnectionOpenConfirm conclui a ligação. Desta forma, ambas as blockchains verificam passo a passo que estão ligadas à contraparte correta.

Numa única connection podem funcionar vários channels. Um channel é um canal de comunicação específico entre duas aplicações em blockchains diferentes. As aplicações ligam-se, nesse contexto, a uma port única. Pode ver uma port como o ponto de contacto fixo de uma aplicação e um channel como a rota acordada para a aplicação do outro lado.

Como é que uma mensagem passa então de A para B?

  1. A aplicação cria um packet A aplicação emissora cria um packet. Em termos simples, trata-se de um pequeno pacote com dados, como uma instrução para enviar tokens.

  2. A blockchain de origem regista um commitment A blockchain onde o packet parte regista um packet commitment no seu próprio estado. Trata-se de uma prova criptográfica de que o packet ficou aí registado.

  3. Um relayer transporta o packet e a prova Um relayer lê o packet e a respetiva prova e submete ambos à blockchain recetora.

  4. A blockchain recetora verifica tudo O light client verifica a prova criptográfica. Se a prova estiver correta, a aplicação recetora pode processar o packet.

  5. Normalmente, volta uma acknowledgement Após o processamento, a aplicação recetora escreve muitas vezes uma acknowledgement. Trata-se de uma mensagem de receção ou de resultado. Um relayer pode trazer esta prova de volta para a blockchain onde o packet começou.

Os packets também têm um time-out. Se um packet não chegar a tempo, a blockchain de origem pode iniciar o tratamento do time-out, mas apenas com prova do estado da blockchain de destino. Portanto, o simples facto de não receber resposta não é suficiente para reverter uma transferência sem mais.

Exemplo: Imagine que envia tokens da blockchain A para a blockchain B através do IBC. A blockchain A regista que a mensagem foi enviada. Depois, um relayer transporta a mensagem com prova para a blockchain B. Assim que a blockchain B verifica que a prova está correta, a transferência é processada e pode ser enviada uma confirmação de volta para a blockchain A.

O IBC v2 pretende simplificar esta configuração. Em vez de vários passos técnicos para ligar duas blockchains, a v2 permite enviar mensagens de forma mais direta entre ambas as redes. Esta abordagem ainda não é o padrão em todo o lado, porque as principais normas para o IBC v2 ainda estão em desenvolvimento.

Que papel desempenham os relayers no Cosmos IBC?

Os relayers são os entregadores das mensagens IBC entre blockchains. Monitorizam blockchains e encaminham mensagens para a outra blockchain.

A blockchain A e a blockchain B não enviam mensagens IBC diretamente uma para a outra. Um relayer vê, por exemplo, que existe uma nova mensagem pronta na blockchain A e leva-a, juntamente com a prova de que a mensagem é autêntica, para a blockchain B.

O relayer não decide por si se uma mensagem é válida. Isso é verificado pela própria blockchain B. Assim, a blockchain B não precisa de confiar cegamente no relayer.

Os relayers não encaminham apenas novas mensagens. Também podem enviar uma confirmação de volta para a blockchain original. Se uma mensagem não for processada a tempo, podem ainda comunicar que o prazo expirou.

Em princípio, qualquer pessoa pode atuar como relayer. O IBC não tem uma entidade central que tenha de encaminhar obrigatoriamente todas as mensagens. Um relayer também pode optar por suportar apenas certos tipos de mensagens ou determinadas ligações.

Ainda assim, tem de existir pelo menos um relayer ativo para continuar a encaminhar mensagens. Um relayer normalmente não pode falsificar uma mensagem válida, mas, se não houver nenhum relayer ativo, uma mensagem pode ficar bloqueada.

O IBC não tem um sistema fixo que pague sempre os relayers. A forma como recebem uma remuneração pode, por isso, variar consoante a blockchain ou a aplicação.

Que blockchains podem usar o Cosmos IBC?

Em princípio, qualquer blockchain pode usar o IBC, desde que essa blockchain suporte os componentes necessários para enviar e verificar mensagens. Para isso, as blockchains não precisam de usar a mesma tecnologia nem o mesmo mecanismo de consenso.

Para poder verificar outra blockchain, o IBC usa um chamado light client. O light client necessário depende da blockchain com que se estabelece ligação. As blockchains Cosmos, por exemplo, usam muitas vezes um light client para CometBFT, embora também existam outros tipos para outras aplicações.

O facto de uma blockchain suportar IBC não significa automaticamente que possa comunicar de imediato com qualquer outra blockchain IBC. Ambas as blockchains têm de conseguir verificar-se tecnicamente uma à outra e tem de existir um relayer que encaminhe as mensagens entre ambas as redes. No IBC v1, além disso, tem primeiro de ser estabelecida uma ligação entre as duas blockchains.

Também não significa que todas as funções fiquem automaticamente disponíveis. Duas blockchains podem, por exemplo, estar ligadas entre si, enquanto as transferências de tokens, as transferências de NFT ou outras funções IBC ainda não estão ativadas nessa ligação.

A versão Go do IBC é usada por muitas blockchains dentro do ecossistema IBC. Além disso, existem também soluções para, entre outras, Solidity/EVM e Solana, embora o funcionamento técnico e a segurança possam variar consoante a integração.

Para que é usado o Cosmos IBC?

O Cosmos IBC é usado para enviar vários tipos de mensagens cross-chain, não apenas tokens. As aplicações em ambos os lados determinam por si como estruturam e processam os dados num packet.

A aplicação mais conhecida é a ICS-20, a norma para transferências de fungible tokens. Fungible significa que cada unidade é mutuamente igual, como um token que é intercambiável por outro token do mesmo tipo.

Numa transferência deste tipo, o percurso e a origem do token permanecem disponíveis como denomination trace. Assim, o software pode ver de onde veio uma representação de token IBC e por que rota chegou.

O IBC também pode ser usado para Interchain Accounts através da ICS-27. Com isto, uma blockchain controladora pode enviar instruções de transação para uma conta numa blockchain anfitriã. A blockchain anfitriã verifica as instruções e executa apenas o que é permitido.

Além disso, existe a ICS-721 para transferências de NFT. Se um NFT sair da blockchain original, fica aí em escrow. Na blockchain recetora, surge então um voucher correspondente. Se o NFT regressar, acontece o inverso.

Existe também uma norma para consultas cross-chain, a ICS-31. Nesse caso, uma blockchain pode pedir informação a outra blockchain e um relayer traz a resposta com prova de volta. Esta norma ainda está indicada como Draft e, por isso, não está automaticamente disponível em todo o lado.

Por fim, existe a Interchain Security. Com ela, as blockchains Cosmos podem emprestar segurança proof-of-stake umas às outras. Trata-se de uma aplicação IBC separada e não de uma parte padrão de qualquer ligação IBC.

Quais são as vantagens do Cosmos IBC?

A maior vantagem do Cosmos IBC é que as blockchains podem comunicar entre si sem abdicar das suas próprias regras ou do seu mecanismo de consenso. Cada blockchain continua autónoma, mas pode trocar mensagens com outras blockchains.

Outro ponto forte é a verificação. A blockchain recetora verifica packet commitments e acknowledgements com provas criptográficas através do seu light client. O relayer fornece os dados, mas não precisa de ser a parte em que confia para validar esses dados.

Além disso, o IBC é modular. A mesma camada base pode ser usada para diferentes aplicações, como:

  • transferências de fungible tokens;
  • transferências de NFT;
  • transações cross-chain através de Interchain Accounts;
  • outras aplicações que queiram enviar mensagens entre blockchains.

O IBC não tem um centro central obrigatório nem um operador de relay exclusivo. Isto torna possível o permissionless relaying: diferentes partes podem executar relayers e processar packets.

Os channels também oferecem escolha no processamento das mensagens. Um channel pode funcionar de forma ordenada, em que os packets têm de chegar numa ordem fixa, ou de forma desordenada. Com acknowledgements e time-outs, as aplicações têm ainda uma forma definida de tratar um packet recebido, falhado ou expirado.

Uma connection pode suportar vários channels. Assim, diferentes aplicações entre as mesmas duas blockchains não têm de estabelecer sempre uma connection completa de novo.

Quais são as desvantagens do Cosmos IBC?

O Cosmos IBC também tem desvantagens, sobretudo relacionadas com disponibilidade, complexidade técnica e a segurança das blockchains ligadas. O IBC permite comunicação cross-chain, mas também acrescenta passos extra em comparação com uma transação local normal.

A primeira dependência é a dos relayers. Sem pelo menos um relayer correto e ativo, os packets, acknowledgements e atualizações de clients podem sofrer atrasos ou ficar completamente bloqueados. Isto não significa automaticamente que alguém possa roubar tokens, mas a sua transferência pode não ser concluída.

A segurança de uma connection IBC também depende dos light clients e da segurança de consenso de ambas as blockchains. Se um grupo de validadores malicioso ultrapassar o threshold de confiança de um light client, a connection pode tornar-se insegura.

Um light client também pode ficar inutilizável. Por exemplo, quando a blockchain seguida deixa de funcionar, quando as atualizações demoram demasiado ou quando o client congela após a deteção de misbehavior. Na lógica base do IBC e da ICS-20, os ativos num channel afetado podem então ficar permanentemente bloqueados se não existir um mecanismo de recuperação.

O processamento cross-chain também custa mais tempo e, muitas vezes, mais taxas de transação. Um fluxo normal pode incluir o envio de um packet, a receção na outra blockchain, o envio de uma acknowledgement de volta e, por vezes, um procedimento de time-out. São várias ações em duas blockchains diferentes.

A configuração técnica não é propriamente simples. Light clients, connections, channels, módulos de aplicação e relayers têm de funcionar bem em conjunto. Um erro na configuração, integração ou manutenção pode causar problemas.

Os time-outs também são mais difíceis do que parecem à primeira vista. Se houver uma partição total da rede, a blockchain de origem não pode concluir apenas pela ausência de resposta que o packet nunca foi executado. A blockchain de destino tem de estar acessível para fornecer a prova necessária.

Num ambiente privado de testes, também foram observados, entre outros, atrasos nas confirmações, estrangulamentos de RPC e problemas de concorrência em relayers. Estes resultados dependem do ambiente e da implementação utilizados, mas mostram que o relaying pode encontrar limites técnicos na prática.

Conclusão

O Cosmos IBC é um protocolo que permite que blockchains independentes troquem mensagens de forma controlada. Portanto, trata-se de muito mais do que apenas enviar tokens: o IBC também pode servir para transferências de NFT, Interchain Accounts e outras aplicações cross-chain.

O núcleo é que as blockchains se podem verificar mutuamente através de light clients e provas criptográficas. Os relayers transportam as mensagens de um lado para o outro, mas não decidem por si se uma mensagem é válida. Ao mesmo tempo, relayers ativos, uma boa configuração e a segurança de ambas as blockchains continuam a ser cruciais.

Para a criptomoeda, o IBC torna possível que aplicações em diferentes blockchains trabalhem melhor em conjunto. Não é uma solução mágica sem risco, mas é um bloco de construção importante para um mundo blockchain mais interligado.

Sobre a Finst

A Finst é uma plataforma de criptomoedas líder nos Países Baixos que oferece taxas de transação bastante reduzidas, segurança de nível institucional e um conjunto abrangente de serviços de criptomoedas, como negociação, custódia, staking e rampas de entrada e saída de moeda fiduciária. Fundada pelo antigo núcleo da equipa da DEGIRO, a Finst está autorizada como prestador de serviços de criptoativos pela Autoridade Holandesa para os Mercados Financeiros (AFM) e serve clientes privados e institucionais em 30 países europeus.

A plataforma de criptomoedas para todos os investidores

Quer seja um investidor ativo ou de longo prazo, a Finst permite-lhe aumentar o seu património de criptomoedas com confiança e tranquilidade.

Criar conta gratuita