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 layoutLayouts 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 layoutLayouts 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