ELI5: O que é IBC?
O nascimento do Bitcoin levou a uma explosão cambriana de blockchains com diferentes decisões de design e casos de uso. Embora esses registros distribuídos tenham propósitos diferentes, eles existiam (e ainda existem até certo ponto) como silos com interação significativa limitada.
Semelhante à Internet, que facilita a comunicação entre diferentes tipos de computadores em diferentes partes do mundo, uma tecnologia semelhante que atua como o tecido conectivo entre blockchains é necessária para o acúmulo de valor real. O protocolo Inter-Blockchain Communication (IBC) visa atender a esse propósito.
O IBC é um protocolo de interoperabilidade universal que permite que dois blockchains diferentes se comuniquem. O IBC garante uma comunicação confiável , ordenada e autenticada .
Talvez uma das propriedades mais importantes do IBC seja a minimização da confiança. Em blockchains, a propriedade de minimização de confiança está inerentemente ligada à segurança. Nenhum sistema distribuído é totalmente 'sem confiança'. Portanto, a questão da segurança se resume a quem ou o que é confiável e como essa confiança pode ser violada, ou seja, o que é necessário para que a entidade confiável seja corrompida?
Nesse sentido, e ao contrário da maioria das soluções de ponte, a IBC não usa terceiros confiáveis. Isso significa que, se você confiar em duas cadeias específicas para usar as funções que elas fornecem (e, por padrão, seus mecanismos de consenso), não haverá suposição de confiança adicional necessária ao usar o IBC para interagir entre as referidas cadeias.
O IBC também é mais do que apenas uma ponte que facilita as transferências de tokens. É um protocolo de passagem de mensagens de uso geral . Isso significa que qualquer forma de dados pode ser comunicada pelo IBC.
Como funciona o IBC?
Para entender como o IBC funciona, é importante separar as duas camadas diferentes do IBC — 1) a camada de transporte e 2) a camada de aplicação.
Camada de transporte
As mensagens transmitidas pelo IBC são transportadas em pacotes de dados . E a camada de transporte é responsável por transportar , autenticar e ordenar esses pacotes de dados.
A camada de transporte não especifica nada sobre quais devem ser os dados nos pacotes ou como eles devem ser interpretados por uma cadeia de recebimento. Do ponto de vista da camada de transporte, as informações contidas nos pacotes de dados são apenas bytes aleatórios.
Os principais componentes da camada de transporte são light clients, retransmissores, conexões e canais.
Um cliente leve é uma representação leve de um blockchain. Ao contrário de um full node , os light clients não armazenam todo o histórico de todas as mensagens contidas em um blockchain. Nem eles executam transações. Em vez disso, os clientes leves são projetados para se conectar a um nó completo e verificar os cabeçalhos do bloco (um resumo dos dados contidos em um bloco). Isso permite que os clientes leves sejam eficientes em termos de armazenamento e computação.
Dois blockchains independentes A e B interagindo sobre IBC têm clientes leves da cadeia de contraparte. Isso significa que A tem um cliente leve em sua blockchain que atua como uma representação leve da blockchain de B. Quando A deseja comunicar uma determinada mensagem 'X' com B , ele envia o cabeçalho do bloco em que essa mensagem existe, juntamente com uma prova de confirmação dessa mensagem para B . A prova de compromisso é usada para verificar a presença ou ausência de uma determinada mensagem em A . Usando o cabeçalho do bloco e a prova, B verifica criptograficamente queA realmente realizou X. É esse uso de light clients no IBC que permite que os blockchains troquem mensagens entre si sem a necessidade de um terceiro confiável.
Mas A e B não enviam diretamente essas mensagens/pacotes de dados entre si. Em vez disso, quando A deseja enviar uma mensagem para B , ele confirma ou armazena um hash de um pacote de dados contendo a mensagem em sua máquina de estado . Os retransmissores , que são processos fora da cadeia, observam constantemente essas mensagens. Quando eles veem que A enviou uma mensagem destinada a B em sua máquina de estado, eles simplesmente pegam essa mensagem e a passam para B . Observe que os retransmissores não têm permissão e, portanto, podem ser executados por qualquer pessoa.
Connections são responsáveis por conectar light clients em duas chains diferentes. E os canais são condutos para a transferência de pacotes entre módulos nessas diferentes cadeias. Portanto, enquanto as conexões são específicas da cadeia, os canais são específicos do módulo. Cada final de canal possui um ID de canal exclusivo (e um ID de porta) que é usado para rotear pacotes com precisão entre dois módulos.
Camada de aplicação
A camada de aplicativo é com a qual os usuários finais interagem. Consiste em vários aplicativos que usam a camada de transporte para construir no topo. A camada de transporte não especifica como os pacotes de dados precisam ser interpretados. Esta função é desempenhada pela camada de aplicação.
O IBC suporta uma variedade de aplicações, como transferências de tokens fungíveis/não fungíveis, feeds oracle entre cadeias, contas intercadeias , consultas intercadeias, middleware de taxas (para incentivar retransmissores), etc.
Por exemplo, o aplicativo de nível IBC para transferências de token - denominado Interchain Standard 20 (ICS 20) - especifica como os pacotes de dados devem ser estruturados e como eles devem ser interpretados pelas cadeias de recebimento. No caso de transferências de tokens fungíveis, os pacotes de dados contêm informações sobre o remetente, destinatário, valor e denominação (denominação IBC). O campo denom traça o caminho que um determinado token percorreu para chegar a uma determinada cadeia. A lógica sobre como os pacotes devem ser tratados também é especificada pelo ICS 20.
Uma analogia simples que pode ser útil para entender o IBC é a do sistema de entrega de correspondência. Quando você envia uma carta para alguém, você a envia por meio de um serviço postal que recolhe o envelope contendo a carta de você e a deposita na caixa de correio do destinatário. O destinatário então abre o referido envelope e lê sua carta. A camada de transporte do IBC pode ser considerada como o serviço postal. O serviço postal não informa qual deve ser o conteúdo da carta ou como o destinatário deve interpretar sua mensagem.
Eles também não sabem qual é o conteúdo do envelope. Ele apenas realiza a ação de coletar o envelope do ponto A e enviá-lo ao ponto B. O próprio envelope pode ser pensado como pacotes IBC que são enviados de uma cadeia para outra. E neste envelope, você especificaria o endereço do destinatário. Isso é semelhante a como os pacotes IBC contêm informações sobre quem enviou o pacote (especificado pelo ID do canal) e para quem ele se destina (especificado pelo ID do canal da contraparte). No final, é o destinatário (aplicativo) o responsável por abrir o envelope (pacote de dados) e interpretar o conteúdo da carta.
Para que serve o IBC?
Além das transferências de tokens fungíveis, dois outros aplicativos de nível IBC incluem contas Interchain e segurança Interchain .
As contas Interchain facilitam a interação entre cadeias enquanto permanecem em uma única interface. Isso significa efetivamente que qualquer ação, como transferências, participação ou votação em propostas de governança que podem ser executadas em B (chamada de 'cadeia de host'), pode ser executada de A (chamada de 'cadeia de controlador'). As contas Interchain aumentam significativamente a capacidade de composição dentro da Interchain, melhorando a experiência do usuário.
Interchain Security é a versão de segurança compartilhada do Ecossistema Cosmos. Ele permite que um blockchain alugue a segurança de outra cadeia de maneira totalmente opcional. Isso é especialmente útil para novas cadeias que podem optar por aproveitar a segurança oferecida por uma rede já estabelecida, como o Cosmos Hub. O Interchain Security elimina a necessidade de as chains inicializarem seu próprio conjunto de validadores.
O escopo de aplicativos que podem ser executados usando o IBC como um núcleo primitivo está crescendo consistentemente. Transferências NFT entre cadeias e consultas entre cadeias (onde uma cadeia pode ler o estado de outra cadeia) estão sendo desenvolvidas e em breve estarão prontas para produção.
Qual problema o IBC resolve?
Em uma frase, o IBC resolve o problema de blockchains existentes como silos com interação limitada. A interoperabilidade entre blockchains é necessária para o acúmulo máximo de valor.
Cada blockchain atende a um ou mais casos de uso especializados. Se esses casos de uso não puderem ser aproveitados em vários blockchains, isso prejudicará gravemente sua utilidade. O avanço que a internet forneceu é que as informações podem fluir facilmente em diferentes partes do mundo com facilidade. Da mesma forma, a utilidade de diferentes blockchains precisa ser livremente acessível em várias plataformas.
Por exemplo, os usuários podem querer usar stablecoins de um blockchain para gerar rendimento por meio de um pool de liquidez (LP) em uma exchange descentralizada (DEX) que existe em outro blockchain. Ou eles podem querer aproveitar as propriedades de preservação da privacidade fornecidas por um blockchain diferente. A interoperabilidade entre as cadeias é necessária para realizar esses casos de uso e muito mais.
O IBC não apenas resolve o problema de interoperabilidade, mas também o faz de maneira segura, extensível, extensível e de propósito geral.
Como posso, como desenvolvedor de aplicativos, usar o IBC?
A natureza modular do Cosmos SDK evita que os desenvolvedores tenham que se preocupar com algumas das camadas de abstrações, como clientes leves, conexões, verificação de prova, etc. Para desenvolvedores, os requisitos e funções mais relevantes para se familiarizar são canais e portas . Para obter informações mais detalhadas sobre o IBC, consulte nosso portal do desenvolvedor l.
Se você estiver construindo seu blockchain usando o Cosmos SDK, as etapas necessárias para habilitar o IBC para um módulo SDK são detalhadas aqui . Você também pode se inscrever no Interchain Builders Program, uma iniciativa da ICF, para obter suporte para construir no Cosmos.
Sobre o autor: este post foi escrito por Adi Ravi Raj , Analista de Protocolo IBC da Interchain GmbH.





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)