# Overview

**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.

#### O Fluxo de uma Consulta

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.

<figure><img src="https://3568400230-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FI0kU6STjXwuHPJEO5L0w%2Fuploads%2FLWARQbZ8Rr3QVLwYgQN2%2Fimage.png?alt=media&#x26;token=3f769534-cce6-416b-928b-794815024a31" alt=""><figcaption></figcaption></figure>

**Fluxo passo a passo de uma consulta:**

1. Um processo off-chain inicia uma solicitação de consulta via HTTPS para o **Query Proxy** (ou **Query Server**).
2. O **Query Proxy** valida a solicitação e a encaminha para os **Guardians** via uma rede de gossip.
3. 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**.
4. 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**.
5. 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.

#### Tipos de Consultas Suportados

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)`.

#### Chains Suportadas

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**.

#### Próximos Passos

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**:

* [Basic Demo](https://github.com/wormholelabs-xyz/example-queries-demo/)
* [Solana Stake Pool](https://github.com/wormholelabs-xyz/example-queries-solana-stake-pool)
* [Solana Program Derived Address (PDA) / Token Account Balance](https://github.com/wormholelabs-xyz/example-queries-solana-pda)
* [Verificação de Consultas Solana](https://github.com/wormholelabs-xyz/example-queries-solana-verify)
