Construção de Protocolos e Payloads

Construção de Protocolos e Payloads Introdução O SDK TypeScript do Wormhole fornece um sistema flexível e poderoso para integrar a comunicação cross-chain em suas aplicações. Uma característica chave do SDK é sua capacidade de definir protocolos—unidades modulares que representam funcionalidades distintas—e seus payloads associados, que encapsulam os dados necessários para operações específicas dentro desses protocolos.

Este guia irá ajudá-lo a entender como construir protocolos e payloads no SDK, cobrindo:

  • O papel dos protocolos e payloads na comunicação cross-chain

  • A mecânica do registro de protocolos e payloads usando o SDK

  • Melhores práticas para criar layouts fortemente tipados para garantir compatibilidade e confiabilidade

  • Exemplos do mundo real utilizando o TokenBridge como implementação de referência

Ao final deste guia, você terá uma compreensão sólida de como definir, registrar e usar protocolos e payloads em seus projetos.

O que é um Protocolo? No SDK do Wormhole, um protocolo representa uma funcionalidade ou característica significativa que opera em várias blockchains. Protocolos fornecem a estrutura para lidar com tipos específicos de mensagens, transações ou operações de maneira consistente e padronizada.

Exemplos de Protocolos:

  • TokenBridge - permite transferências de tokens cross-chain, incluindo operações como transferir tokens e relatar payloads

  • NTT (Native Token Transfers) - gerencia o movimento de tokens nativos entre blockchains

Os protocolos são definidos por:

  • Um nome - um identificador string (por exemplo, TokenBridge, Ntt)

  • Um conjunto de payloads - estes representam as ações ou mensagens específicas suportadas pelo protocolo, como Transfer ou TransferWithPayload

Cada protocolo é registrado no SDK do Wormhole, permitindo que os desenvolvedores aproveitem seus recursos predefinidos ou o estendam com payloads personalizados.

O que é um Payload? Um payload é um pedaço estruturado de dados que encapsula os detalhes de uma operação específica dentro de um protocolo. Ele define o formato, campos e tipos de dados usados em uma mensagem ou transação. Payloads garantem consistência e segurança de tipos ao lidar com operações cross-chain complexas.

Cada payload é definido como:

  • Um layout - descreve o formato binário dos campos do payload

  • Um literal - combina o nome do protocolo e o nome do payload em um identificador único (por exemplo, TokenBridge:Transfer)

Ao registrar payloads, os desenvolvedores podem garantir a segurança de tipos e permitir a serialização e desserialização para operações específicas do protocolo.

Registrar Protocolos e Payloads Protocolos e payloads trabalham juntos para permitir a comunicação cross-chain com segurança de tipo precisa. Por exemplo, no protocolo TokenBridge:

  • O protocolo é registrado sob o namespace TokenBridge

  • Payloads como Transfer ou AttestMeta são vinculados ao protocolo para lidar com operações específicas

Entender a conexão entre esses componentes é importante para personalizar ou estender o SDK conforme suas necessidades.

Registrar Protocolos Registrar um protocolo estabelece sua conexão com a infraestrutura do Wormhole, garantindo que ele interaja perfeitamente com payloads e plataformas enquanto mantém segurança de tipos e consistência.

Como o Registro de Protocolos Funciona O registro de protocolos envolve duas tarefas principais:

  • Mapeamento de protocolos para interfaces - conecta o protocolo à sua interface correspondente, definindo seu comportamento esperado através das redes (N) e blockchains (C). Isso garante segurança de tipo, semelhante ao forte tipagem, ao evitar erros de execução se as definições do protocolo estiverem incorretas.

  • Vinculação de protocolos a plataformas - especifica implementações específicas da plataforma, se necessário, ou usa mapeamentos padrão para protocolos agnósticos à plataforma

Por exemplo, aqui está o registro do protocolo TokenBridge:

Este trecho de código:

  • Mapeia o protocolo TokenBridge para sua interface, definindo como ele opera

  • Vincula o protocolo a um mapeamento de plataforma padrão via EmptyPlatformMap

Você pode ver a implementação completa no arquivo do protocolo TokenBridge.

Protocolos Específicos de Plataforma Alguns protocolos requerem comportamentos específicos de plataforma. Por exemplo, o Wormhole Registry compatível com EVM mapeia endereços nativos para blockchains baseadas em Ethereum:

Isso garante que EvmAddress seja registrado como o tipo de endereço nativo para plataformas compatíveis com EVM. Veja o arquivo de endereços da plataforma EVM para mais detalhes.

Registrar Payloads O registro de payloads permite que os desenvolvedores definam, serializem e manipulem tipos personalizados de mensagens dentro de seus protocolos. Ele estabelece a conexão entre um protocolo e seus payloads, garantindo integração perfeita, segurança de tipos e eficiência de tempo de execução.

Este processo vincula um protocolo aos seus payloads usando uma combinação de:

  • Literais de Payload - identificadores únicos no formato <ProtocolName>:<PayloadName>. Esses literais mapeiam cada payload para um layout

  • Layouts de Payload - estruturas que definem a representação binária dos dados do payload

  • A fábrica de payloads - um registro centralizado de tempo de execução que mapeia literais de payload para layouts para resolução dinâmica e serialização

Esses componentes trabalham juntos para simplificar a definição e o gerenciamento dos payloads do protocolo.

Como o Registro de Payloads Funciona O registro de payloads envolve:

  • Definir layouts de payload - criar layouts para estruturar seus payloads. Por exemplo, um protocolo pode usar um layout TransferWithPayload:

  • Registrar payloads - usar registerPayloadTypes para mapear literais de payload para seus layouts:

  • Acessar payloads registrados - usar a função getPayloadLayout para buscar o layout de um literal de payload específico. Esse método garante que o layout correto seja recuperado dinamicamente e de forma segura:

Essas etapas vinculam literais de payload aos seus layouts, permitindo o manuseio dinâmico no tempo de execução.

A Fábrica de Payloads No núcleo do processo de registro de payloads está a payloadFactory, um registro que gerencia o mapeamento entre literais de payload e layouts:

A payloadFactory garante que cada literal de payload seja mapeado para seu layout de forma única. A função registerPayloadType adiciona payloads individuais, enquanto registerPayloadTypes suporta o registro em massa.

Essa implementação garante manuseio dinâmico e eficiente de payloads no tempo de execução.

Integrar Protocolos com Payloads Integrar payloads com protocolos permite identificação dinâmica através de literais de payload, enquanto a serialização e desserialização garantem que sua representação binária seja compatível entre blockchains.

Discriminadores de Payload Discriminadores de payload são mecanismos no SDK do Wormhole que identificam dinamicamente e mapeiam payloads recebidos para seus respectivos layouts no tempo de execução. Eles são relevantes para protocolos como o TokenBridge, permitindo o manuseio eficiente de tipos diversos de payloads enquanto garantem segurança de tipos e integração consistente.

Como os Discriminadores Funcionam Os discriminadores avaliam dados binários serializados e determinam o layout correspondente ao inspecionar campos fixos ou padrões dentro dos dados. Cada layout de payload está associado a um literal de payload (por exemplo, TokenBridge:Transfer ou TokenBridge:TransferWithPayload).

Esse sistema garante:

  • Identificação dinâmica no tempo de execução - os payloads são analisados com base no seu conteúdo, mesmo que um único protocolo manipule múltiplos tipos de payloads

  • Garantia estrita de tipos - os discriminadores usam mapeamentos de layout para evitar que payloads inválidos sejam processados

Aqui está um exemplo de como o SDK do Wormhole constrói um discriminador para distinguir entre layouts de payloads:

A função layoutDiscriminator recebe uma lista de layouts e gera uma função que pode identificar o layout apropriado para um payload serializado fornecido. O parâmetro allowAmbiguous determina se layouts com características sobrepostas são permitidos.

Exemplo Real: Protocolo Token Bridge Integrar protocolos com seus respectivos payloads exemplifica como o SDK do Wormhole aproveita layouts e mecanismos de registro seguros de tipos para garantir comunicação cross-chain eficiente. Esta seção foca em como protocolos como o TokenBridge usam payloads para facilitar operações específicas.

Token Bridge Protocol e Payloads O protocolo TokenBridge permite transferências de tokens cross-chain através de seus payloads. Payloads chave incluem:

  • Transfer - lida com operações básicas de transferência de tokens

  • TransferWithPayload - estende o payload Transfer para incluir dados personalizados, aprimorando a funcionalidade

Payloads são registrados no protocolo TokenBridge via a interface PayloadLiteralToLayoutMapping, que vincula literais de payload (por exemplo, TokenBridge:Transfer) aos seus layouts.

Além disso, o protocolo usa layouts reutilizáveis como transferCommonLayout e os estende em layouts mais especializados, como transferWithPayloadLayout.

Usar o Discriminador Para gerenciar múltiplos payloads, o protocolo TokenBridge utiliza um discriminador para distinguir entre tipos de payloads dinamicamente. Por exemplo:

A função getTransferDiscriminator avalia dinamicamente payloads usando layouts predefinidos, garantindo que cada tipo de payload seja processado de acordo com sua estrutura única e layout seguro de tipos.

Registrar Payloads no Protocolo Aqui Construção de Protocolos e Payloads Introdução O SDK TypeScript do Wormhole fornece um sistema flexível e poderoso para integrar a comunicação cross-chain em suas aplicações. Uma característica chave do SDK é sua capacidade de definir protocolos—unidades modulares que representam funcionalidades distintas—e seus payloads associados, que encapsulam os dados necessários para operações específicas dentro desses protocolos.

Este guia irá ajudá-lo a entender como construir protocolos e payloads no SDK, cobrindo:

  • O papel dos protocolos e payloads na comunicação cross-chain

  • A mecânica do registro de protocolos e payloads usando o SDK

  • Melhores práticas para criar layouts fortemente tipados para garantir compatibilidade e confiabilidade

  • Exemplos do mundo real utilizando o TokenBridge como implementação de referência

Ao final deste guia, você terá uma compreensão sólida de como definir, registrar e usar protocolos e payloads em seus projetos.

O que é um Protocolo? No SDK do Wormhole, um protocolo representa uma funcionalidade ou característica significativa que opera em várias blockchains. Protocolos fornecem a estrutura para lidar com tipos específicos de mensagens, transações ou operações de maneira consistente e padronizada.

Exemplos de Protocolos:

  • TokenBridge - permite transferências de tokens cross-chain, incluindo operações como transferir tokens e relatar payloads

  • NTT (Native Token Transfers) - gerencia o movimento de tokens nativos entre blockchains

Os protocolos são definidos por:

  • Um nome - um identificador string (por exemplo, TokenBridge, Ntt)

  • Um conjunto de payloads - estes representam as ações ou mensagens específicas suportadas pelo protocolo, como Transfer ou TransferWithPayload

Cada protocolo é registrado no SDK do Wormhole, permitindo que os desenvolvedores aproveitem seus recursos predefinidos ou o estendam com payloads personalizados.

O que é um Payload? Um payload é um pedaço estruturado de dados que encapsula os detalhes de uma operação específica dentro de um protocolo. Ele define o formato, campos e tipos de dados usados em uma mensagem ou transação. Payloads garantem consistência e segurança de tipos ao lidar com operações cross-chain complexas.

Cada payload é definido como:

  • Um layout - descreve o formato binário dos campos do payload

  • Um literal - combina o nome do protocolo e o nome do payload em um identificador único (por exemplo, TokenBridge:Transfer)

Ao registrar payloads, os desenvolvedores podem garantir a segurança de tipos e permitir a serialização e desserialização para operações específicas do protocolo.

Registrar Protocolos e Payloads Protocolos e payloads trabalham juntos para permitir a comunicação cross-chain com segurança de tipo precisa. Por exemplo, no protocolo TokenBridge:

  • O protocolo é registrado sob o namespace TokenBridge

  • Payloads como Transfer ou AttestMeta são vinculados ao protocolo para lidar com operações específicas

Entender a conexão entre esses componentes é importante para personalizar ou estender o SDK conforme suas necessidades.

Registrar Protocolos Registrar um protocolo estabelece sua conexão com a infraestrutura do Wormhole, garantindo que ele interaja perfeitamente com payloads e plataformas enquanto mantém segurança de tipos e consistência.

Como o Registro de Protocolos Funciona O registro de protocolos envolve duas tarefas principais:

  • Mapeamento de protocolos para interfaces - conecta o protocolo à sua interface correspondente, definindo seu comportamento esperado através das redes (N) e blockchains (C). Isso garante segurança de tipo, semelhante ao forte tipagem, ao evitar erros de execução se as definições do protocolo estiverem incorretas.

  • Vinculação de protocolos a plataformas - especifica implementações específicas da plataforma, se necessário, ou usa mapeamentos padrão para protocolos agnósticos à plataforma

Por exemplo, aqui está o registro do protocolo TokenBridge:

Este trecho de código:

  • Mapeia o protocolo TokenBridge para sua interface, definindo como ele opera

  • Vincula o protocolo a um mapeamento de plataforma padrão via EmptyPlatformMap

Você pode ver a implementação completa no arquivo do protocolo TokenBridge.

Protocolos Específicos de Plataforma Alguns protocolos requerem comportamentos específicos de plataforma. Por exemplo, o Wormhole Registry compatível com EVM mapeia endereços nativos para blockchains baseadas em Ethereum:

Isso garante que EvmAddress seja registrado como o tipo de endereço nativo para plataformas compatíveis com EVM. Veja o arquivo de endereços da plataforma EVM para mais detalhes.

Registrar Payloads O registro de payloads permite que os desenvolvedores definam, serializem e manipulem tipos personalizados de mensagens dentro de seus protocolos. Ele estabelece a conexão entre um protocolo e seus payloads, garantindo integração perfeita, segurança de tipos e eficiência de tempo de execução.

Este processo vincula um protocolo aos seus payloads usando uma combinação de:

  • Literais de Payload - identificadores únicos no formato <ProtocolName>:<PayloadName>. Esses literais mapeiam cada payload para um layout

  • Layouts de Payload - estruturas que definem a representação binária dos dados do payload

  • A fábrica de payloads - um registro centralizado de tempo de execução que mapeia literais de payload para layouts para resolução dinâmica e serialização

Esses componentes trabalham juntos para simplificar a definição e o gerenciamento dos payloads do protocolo.

Como o Registro de Payloads Funciona O registro de payloads envolve:

  • Definir layouts de payload - criar layouts para estruturar seus payloads. Por exemplo, um protocolo pode usar um layout TransferWithPayload:

  • Registrar payloads - usar registerPayloadTypes para mapear literais de payload para seus layouts:

  • Acessar payloads registrados - usar a função getPayloadLayout para buscar o layout de um literal de payload específico. Esse método garante que o layout correto seja recuperado dinamicamente e de forma segura:

Essas etapas vinculam literais de payload aos seus layouts, permitindo o manuseio dinâmico no tempo de execução.

A Fábrica de Payloads No núcleo do processo de registro de payloads está a payloadFactory, um registro que gerencia o mapeamento entre literais de payload e layouts:

A payloadFactory garante que cada literal de payload seja mapeado para seu layout de forma única. A função registerPayloadType adiciona payloads individuais, enquanto registerPayloadTypes suporta o registro em massa.

Essa implementação garante manuseio dinâmico e eficiente de payloads no tempo de execução.

Integrar Protocolos com Payloads Integrar payloads com protocolos permite identificação dinâmica através de literais de payload, enquanto a serialização e desserialização garantem que sua representação binária seja compatível entre blockchains.

Discriminadores de Payload Discriminadores de payload são mecanismos no SDK do Wormhole que identificam dinamicamente e mapeiam payloads recebidos para seus respectivos layouts no tempo de execução. Eles são relevantes para protocolos como o TokenBridge, permitindo o manuseio eficiente de tipos diversos de payloads enquanto garantem segurança de tipos e integração consistente.

Como os Discriminadores Funcionam Os discriminadores avaliam dados binários serializados e determinam o layout correspondente ao inspecionar campos fixos ou padrões dentro dos dados. Cada layout de payload está associado a um literal de payload (por exemplo, TokenBridge:Transfer ou TokenBridge:TransferWithPayload).

Esse sistema garante:

  • Identificação dinâmica no tempo de execução - os payloads são analisados com base no seu conteúdo, mesmo que um único protocolo manipule múltiplos tipos de payloads

  • Garantia estrita de tipos - os discriminadores usam mapeamentos de layout para evitar que payloads inválidos sejam processados

Aqui está um exemplo de como o SDK do Wormhole constrói um discriminador para distinguir entre layouts de payloads:

A função layoutDiscriminator recebe uma lista de layouts e gera uma função que pode identificar o layout apropriado para um payload serializado fornecido. O parâmetro allowAmbiguous determina se layouts com características sobrepostas são permitidos.

Exemplo Real: Protocolo Token Bridge Integrar protocolos com seus respectivos payloads exemplifica como o SDK do Wormhole aproveita layouts e mecanismos de registro seguros de tipos para garantir comunicação cross-chain eficiente. Esta seção foca em como protocolos como o TokenBridge usam payloads para facilitar operações específicas.

Token Bridge Protocol e Payloads O protocolo TokenBridge permite transferências de tokens cross-chain através de seus payloads. Payloads chave incluem:

  • Transfer - lida com operações básicas de transferência de tokens

  • TransferWithPayload - estende o payload Transfer para incluir dados personalizados, aprimorando a funcionalidade

Payloads são registrados no protocolo TokenBridge via a interface PayloadLiteralToLayoutMapping, que vincula literais de payload (por exemplo, TokenBridge:Transfer) aos seus layouts.

Além disso, o protocolo usa layouts reutilizáveis como transferCommonLayout e os estende em layouts mais especializados, como transferWithPayloadLayout.

Usar o Discriminador Para gerenciar múltiplos payloads, o protocolo TokenBridge utiliza um discriminador para distinguir entre tipos de payloads dinamicamente. Por exemplo:

A função getTransferDiscriminator avalia dinamicamente payloads usando layouts predefinidos, garantindo que cada tipo de payload seja processado de acordo com sua estrutura única e layout seguro de tipos.

Registrar Payloads no Protocolo Aqui está o exemplo de como o registro dos payloads TokenBridge é feito dentro do SDK:

Conclusão O SDK TypeScript do Wormhole fornece uma abordagem sólida e modular para lidar com a comunicação cross-chain. A definição e o registro de protocolos e payloads garantem segurança de tipos e extensibilidade, permitindo que desenvolvedores integrem funcionalidades complexas de forma eficiente e confiável. O uso de layouts e discriminadores assegura que a comunicação entre blockchains seja consistente, sem comprometer a performance ou segurança.

Last updated