Overview
Last updated
Last updated
Wormhole Guardians, que operam nós completos para várias blockchains conectadas, facilitam um novo serviço de consulta cross-chain que permite respostas validadas sob demanda, evitando as ineficiências de recuperação de dados baseadas em transações tradicionais. Esse método é mais rápido e econômico, eliminando a necessidade de pagamentos de gás e tempos de espera para finalização de transações.
Nota As consultas estão atualmente em beta fechada, mas você pode começar a desenvolver hoje mesmo. Confira Use Queries e entre em contato para participar da beta.
O Wormhole Queries oferece acesso sob demanda a dados atestados por Guardians na blockchain. A implementação atual fornece aos integradores um simples ponto de extremidade REST para iniciar uma solicitação off-chain via um proxy. O proxy encaminha a solicitação para os Guardians e coleta um quorum de respostas. O resultado retorna a resposta codificada, incluindo os detalhes da solicitação e as assinaturas dos Guardians. A validação da solicitação realizada pelo módulo de consulta segue um processo de três etapas que envolve verificar a assinatura para garantir que ela tenha o prefixo correto, confirmar que o signatário está autorizado a executar solicitações de consulta e validar a legitimidade de todas as solicitações por cadeia contidas na consulta. Você pode ler mais sobre Queries no white paper.
A visão geral do fluxo de uma consulta é a seguinte: um processo off-chain envia solicitações HTTPS de consulta para um Query Proxy, que valida e encaminha as solicitações para os Guardians; esses Guardians validam independentemente, assinam e retornam a resposta, com todo o processo normalmente levando menos de um segundo.
Fluxo passo a passo de uma consulta:
Um processo off-chain inicia uma solicitação de consulta via HTTPS para o Query Proxy (ou Query Server).
O Query Proxy valida a solicitação e a encaminha para os Guardians via uma rede de gossip.
Os Guardians validam independentemente a solicitação, fazem as chamadas RPC necessárias, verificam os resultados, assinam e enviam uma resposta de volta para o Query Proxy.
O Query Proxy agrega os resultados e retorna uma resposta quando atinge um quorum de dois terços ou mais do conjunto atual de Guardians - o mesmo requisito de quorum do core bridge.
O processo off-chain pode então enviar essas solicitações para um contrato on-chain que deve verificar as assinaturas e validar a solicitação antes de processar o resultado.
Neste fluxo, o Query Proxy é uma parte do protocolo autorizada, mas sem a necessidade de confiança. Em casos normais, todo esse processo leva menos de um segundo. Se uma solicitação for inválida ou não puder ser processada pelos Guardians, eles tentarão novamente por até um minuto antes de expirar. As solicitações podem ser agrupadas para permitir que os Guardians façam múltiplas chamadas para várias redes. Isso pode reduzir ainda mais a sobrecarga para processar respostas de consulta on-chain. Até 255 consultas podem ser agrupadas, com certos tipos permitindo o agrupamento por conta própria.
Atualmente, existem cinco tipos de consultas suportados. Consulte o white paper para mais detalhes sobre cada um.
eth_call
Esse tipo de consulta é essencialmente um equivalente a eth_call
contra um bloco especificado por número ou hash. As chamadas são agrupadas para permitir especificar múltiplas chamadas (mesmo para múltiplos contratos) contra o mesmo bloco. Essas chamadas são incluídas em uma única chamada RPC em lote, simplificando a verificação on-chain. Até 255 chamadas podem ser agrupadas em uma única consulta eth_call
.
eth_call By Timestamp
Semelhante ao eth_call
, mas destina-se a um timestamp específico, em vez de um block_id
. Isso é útil quando se precisa de dados de outra cadeia com base no timestamp de um determinado bloco.
eth_call With Finality
Semelhante ao eth_call
, mas garante que o bloco especificado tenha alcançado a finalização especificada antes de retornar os resultados da consulta.
sol_account
Essa consulta é usada para ler dados de uma ou mais contas na Solana, semelhante ao getMultipleAccounts
.
sol_pda
Essa consulta é usada para ler dados de uma ou mais Program Derived Addresses (PDA) na Solana, semelhante a chamar getMultipleAccounts
no resultado de PublicKey.findProgramAddressSync(seeds, programId)
.
A tabela a seguir fornece o suporte esperado com base nos testes. O sucesso de uma consulta depende do sucesso da chamada subjacente em cada nó RPC de cada Guardian.
Lembre-se de que o Wormhole Queries está atualmente em beta. Você pode se registrar para participar da beta e experimentar completamente o Wormhole Queries.
Confira também os exemplos de aplicativos que utilizam Wormhole Queries: