🌌
Wormhole Docs Brasil
  • Bem-vindo!
  • Materiais
    • Build
      • Começer a Buildar
        • Redes Suportadas
        • Testnet Faucets
        • Demos
      • Construindo Aplicações Frontend
        • Wormhole SDK
          • Wormhole TypeScript SDK
          • Data Layouts
          • Construção de Protocolos e Payloads
        • Queries
          • Overview
          • Usando Queries
          • F.A.Q.
        • Conexão
          • Overview
          • Routes
          • Features
          • Configuração
          • v1 Migration
          • F.A.Q.
      • Construindo Integrações de contratos
        • Wormhole Relayer
        • Core Contracts
        • CCTP
        • Transferências de Tokens Nativos
          • Processos de Deployment
        • Comandos NTT CLI
        • Configuração de NTT
          • Limitação de Taxas
          • Controle de Acesso
        • Managers e Transceivers
        • F.A.Q. Wormhole NTT
      • MultiGov
        • Deployment
        • Upgrades Contracts
        • F.A.Q. Tecnicas
      • Ambiente de Desenvolvimento
      • F.A.Q sobre Integrações de Contratos
      • Toolkit
        • Wormholescan
        • Wormhole CLI
        • Wormhole SDK
          • TypeScript SDK
          • Data Layouts
          • Construindo Protocolos e Payloads
        • Solidity SDK
        • Tilt
        • Toolkit F.A.Q.
      • Referências
    • Infraestrutura
      • Run a Relayer
      • Run a Spy
    • Tutoriais
      • Tutorial de Conexão
      • Tutorial de Contratos Cross-Chain
        • Criação de Contratos de Mensagens Cross-Chain
        • Criação de contratos de transferência de tokens Cross-Chain
      • Tutoriais de Transferências de Tokens Nativos (NTT - Native Token Transfers)
        • Crie Tokens Multichain
      • Tutorial MultiGov
        • Proposta Cross-Chain treasury management
      • Tutoriais do Wormhole SDK
        • Transferir USDC via CCTP
        • Transferir Tokens via a Token Bridge
    • Learn
      • Fundamentos
        • Introdução
        • Segurança
        • Overview de Arquitetura
        • Glossário
      • Componentes de Infraestrutura
        • Core Contracts
        • VAAs (Verified Action Approvals)
        • Guardians
        • Spy
        • Relayers
      • Messaging
        • Token Bridge
        • Circle's CCTP Bridge
        • Transferencias de Token Nativos
          • Overview
          • Arquitetura
          • Modelos de Deploy
          • Security
      • Multigov
        • MultiGov: Governança Cross-Chain com Wormhole
        • MultiGov Architecture
        • FAQs
    • Links úteis
Powered by GitBook
On this page
  1. Materiais
  2. Build
  3. Construindo Aplicações Frontend
  4. Wormhole SDK

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:

declare module '../../registry.js' {
  export namespace WormholeRegistry {
    interface ProtocolToInterfaceMapping<N, C> {
      TokenBridge: TokenBridge<N, C>;
    }
    interface ProtocolToPlatformMapping {
      TokenBridge: EmptyPlatformMap<'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:

declare module '@wormhole-foundation/sdk-connect' {
  export namespace WormholeRegistry {
    interface PlatformToNativeAddressMapping {
      Evm: EvmAddress;
    }
  }
}

registerNative(_platform, EvmAddress);

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:

export const transferWithPayloadLayout = <
  const P extends CustomizableBytes = undefined
>(
  customPayload?: P
) =>
  [
    payloadIdItem(3),
    ...transferCommonLayout,
    { name: 'from', ...universalAddressItem },
    customizableBytes({ name: 'payload' }, customPayload),
  ] as const;
  • Registrar payloads - usar registerPayloadTypes para mapear literais de payload para seus layouts:

registerPayloadTypes('ProtocolName', protocolNamedPayloads);
  • 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:

const layout = getPayloadLayout('ProtocolName:PayloadName');

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:

export const payloadFactory = new Map<LayoutLiteral, Layout>();

export function registerPayloadType(
  protocol: ProtocolName,
  name: string,
  layout: Layout
) {
  const payloadLiteral = composeLiteral(protocol, name);
  if (payloadFactory.has(payloadLiteral)) {
    throw new Error(`Payload type ${payloadLiteral} already registered`);
  }
  payloadFactory.set(payloadLiteral, layout);
}

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:

export function layoutDiscriminator<B extends boolean = false>(
  layouts: readonly Layout[],
  allowAmbiguous?: B
): Discriminator<B> {
  // Lógica interna para determinar layouts distinguíveis
  const [distinguishable, discriminator] = internalBuildDiscriminator(layouts);
  if (!distinguishable && !allowAmbiguous) {
    throw new Error('Cannot uniquely distinguish the given layouts');
  }

  return (
    !allowAmbiguous
      ? (encoded: BytesType) => {
          const layout = discriminator(encoded);
          return layout.length === 0 ? null : layout[0];
        }
      : discriminator
  ) as Discriminator<B>;
}

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:

const tokenBridgePayloads = ['Transfer', 'TransferWithPayload'] as const;

export const getTransferDiscriminator = lazyInstantiate(() =>
  payloadDiscriminator([_protocol, tokenBridgePayloads])
);

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:

declare module '../../registry.js' {
  export namespace WormholeRegistry {
    interface ProtocolToInterfaceMapping<N, C> {
      TokenBridge: TokenBridge<N, C>;
    }
    interface ProtocolToPlatformMapping {
      TokenBridge: EmptyPlatformMap<'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:

declare module '@wormhole-foundation/sdk-connect' {
  export namespace WormholeRegistry {
    interface PlatformToNativeAddressMapping {
      Evm: EvmAddress;
    }
  }
}

registerNative(_platform, EvmAddress);

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:

export const transferWithPayloadLayout = <
  const P extends CustomizableBytes = undefined
>(
  customPayload?: P
) =>
  [
    payloadIdItem(3),
    ...transferCommonLayout,
    { name: 'from', ...universalAddressItem },
    customizableBytes({ name: 'payload' }, customPayload),
  ] as const;
  • Registrar payloads - usar registerPayloadTypes para mapear literais de payload para seus layouts:

registerPayloadTypes('ProtocolName', protocolNamedPayloads);
  • 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:

const layout = getPayloadLayout('ProtocolName:PayloadName');

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:

export const payloadFactory = new Map<LayoutLiteral, Layout>();

export function registerPayloadType(
  protocol: ProtocolName,
  name: string,
  layout: Layout
) {
  const payloadLiteral = composeLiteral(protocol, name);
  if (payloadFactory.has(payloadLiteral)) {
    throw new Error(`Payload type ${payloadLiteral} already registered`);
  }
  payloadFactory.set(payloadLiteral, layout);
}

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:

export function layoutDiscriminator<B extends boolean = false>(
  layouts: readonly Layout[],
  allowAmbiguous?: B
): Discriminator<B> {
  // Lógica interna para determinar layouts distinguíveis
  const [distinguishable, discriminator] = internalBuildDiscriminator(layouts);
  if (!distinguishable && !allowAmbiguous) {
    throw new Error('Cannot uniquely distinguish the given layouts');
  }

  return (
    !allowAmbiguous
      ? (encoded: BytesType) => {
          const layout = discriminator(encoded);
          return layout.length === 0 ? null : layout[0];
        }
      : discriminator
  ) as Discriminator<B>;
}

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:

const tokenBridgePayloads = ['Transfer', 'TransferWithPayload'] as const;

export const getTransferDiscriminator = lazyInstantiate(() =>
  payloadDiscriminator([_protocol, tokenBridgePayloads])
);

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:

registerPayloadTypes('TokenBridge', [
  'Transfer',
  'TransferWithPayload',
  'AttestMeta',
]);

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.

PreviousData LayoutsNextQueries

Last updated 5 months ago