Run a Relayer
Os relayers desempenham um papel crucial na comunicação cross-chain, garantindo que as mensagens sejam transferidas de forma contÃnua entre diferentes blockchains. Embora os relayers do Wormhole forneçam uma maneira confiável de gerenciar essas transferências, eles podem não atender a todos os requisitos exclusivos de cada aplicação.
Relayers personalizados abordam essas limitações ao oferecer soluções sob medida que atendem à s necessidades distintas de sua aplicação. Desenvolver um relayer personalizado proporciona controle total sobre o processamento das mensagens, mecanismos de entrega e integração com sistemas existentes. Essa personalização permite otimizar o desempenho e implementar recursos especÃficos que os relayers implantados pelo Wormhole podem não oferecer.
Um relayer personalizado pode ser tão simples quanto um processo no navegador que consulta a API para verificar a disponibilidade de um VAA após a submissão de uma transação e entregá-lo à cadeia de destino. Também pode ser implementado com um Spy combinado a um daemon que escuta por VAAs de um ID de cadeia e emissor relevantes, tomando ações quando um VAA é observado.
Este guia ensina como configurar e configurar um relayer personalizado para o manuseio eficiente de mensagens. Você começará entendendo como identificar de forma única um VAA utilizando o endereço do emissor, ID de sequência e ID de cadeia. Em seguida, explorará o Relayer Engine, um pacote que fornece uma estrutura para a construção de relayers personalizados, e aprenderá como buscar e processar VAAs utilizando o SDK do Wormhole.
Iniciando com um Relayer Personalizado Para começar a construir um relayer personalizado, é essencial entender os componentes que você estará gerenciando como parte do seu serviço de relaying. Seu relayer deve ser capaz de recuperar e entregar VAAs.

Como Identificar de Forma Exclusiva um VAA
Independentemente do ambiente, para obter o VAA que você deseja retransmitir, é necessário ter:
O endereço do emissor
O ID de sequência da mensagem de interesse
O chainId da cadeia que emitiu a mensagem
Com esses três componentes, é possÃvel identificar de forma única um VAA e processá-lo.
Usando o Relayer Engine
O relayer-engine é um pacote que fornece a estrutura e o ponto de partida para um relayer personalizado.
Com o Relayer Engine, um desenvolvedor pode escrever uma lógica especÃfica para filtrar e receber apenas as mensagens que interessam.
Após receber uma mensagem do Wormhole, o desenvolvedor pode aplicar lógica adicional para analisar payloads personalizados ou enviar as Verifiable Action Approvals (VAA) para uma ou várias cadeias de destino.
Para usar o Relayer Engine, o desenvolvedor pode especificar como retransmitir mensagens do Wormhole para sua aplicação, utilizando uma API inspirada em middleware Express/Koa, deixando que a biblioteca cuide dos detalhes.
Instalar o Relayer Engine
Primeiro, instale o pacote relayer-engine com o gerenciador de pacotes de sua preferência:
Começando com o Relayer Engine
No exemplo a seguir, você:
Configura um
StandardRelayerApp, passando as opções de configuração para o relayer.Adiciona um filtro para capturar apenas as mensagens que a aplicação se importa, com um callback para processar o VAA assim que for recebido.
Inicia o aplicativo do relayer.
A primeira linha significativa instancia o StandardRelayerApp, uma subclasse de RelayerApp com padrões padrão.
Configurações do StandardRelayerAppOpts
StandardRelayerAppOptsOutras opções podem ser passadas ao construtor do StandardRelayerApp para configurar ainda mais o aplicativo:
wormholeRpcs: Lista de URLs de onde consultar VAAs perdidosconcurrency: Quantidade de requisições simultâneas para workflowsspyEndpoint: Endereço do Spylogger: Logger personalizadoprivateKeys: Conjunto de chaves para assinar e enviar transaçõestokensByChain: Lista de tokens relevantesworkflows: Como configurar tentativas de workflowsredisClusterEndpoints: Configuração do Redis
Adicionando Filtros e Middleware
A última linha no exemplo simples executa await app.listen(), que inicia o motor do relayer. Uma vez iniciado, o Relayer Engine envia solicitações de assinatura para o Spy e começa outros workflows, como o rastreamento de VAAs perdidos.
O processo continuará até ser interrompido ou até encontrar um erro irrecuperável. Para desligar o relayer de forma ordenada, chame app.stop().
O código-fonte para este exemplo está disponÃvel no repositório relayer-engine.
Iniciar Processos em Segundo Plano
Estes processos precisam estar em execução para que o aplicativo do relayer funcione corretamente.
A seguir, você deve iniciar um Spy para escutar os VAAs disponÃveis publicados na rede Guardian. Também é necessário uma camada de persistência; este exemplo usa Redis.
Mais detalhes sobre o Spy estão disponÃveis na documentação do Spy.
Spy da Rede Wormhole
Para que o aplicativo do relayer receba mensagens, um Spy local deve estar em execução, monitorando a rede Guardian. O aplicativo do relayer receberá atualizações desse Spy.
Mainnet Spy
Testnet Spy
Persistência Redis
Nota
Embora esteja utilizando o Redis aqui, a camada de persistência pode ser trocada por outro banco de dados, implementando a interface apropriada.
Uma instância do Redis também deve estar disponÃvel para persistir os dados das tarefas de recuperação de VAAs do Spy.
Usando o Wormhole SDK
Você também pode usar o Wormhole SDK para fazer polling no RPC do Guardian até que um VAA assinado esteja pronto, utilizando a função getSignedVAAWithRetry do SDK.
Uma vez que você tenha o VAA, o método de entrega depende da cadeia.
EVM
Em cadeias EVM, os bytes do VAA podem ser passados diretamente como um argumento para um método ABI.
SOLANA
No Solana, o VAA é primeiro postado no core bridge, e então uma transação personalizada é preparada para processar e validar o VAA.
Last updated