WEB3DEV

Cover image for O que é o Plugin Geyser da Solana?
Fatima Lima
Fatima Lima

Posted on

O que é o Plugin Geyser da Solana?

Descubra o provisionamento disponibilizado para manter o alto desempenho dos Validadores da Solana

Última atualização: 2 de janeiro de 2023

Índice

O que é o Plugin Geyser da Solana?

Quais são interfaces no Plugin Geyser da Solana

Casos de uso comuns do Plugin Geyser da Solana

Como configurar um banco de dados PostgreSQL para o Plugin Geyser da Solana

Comece a usar o Plugin Geyser da Solana para acessar dados mais rapidamente

O Plugin Geyser da Solana ajuda a reduzir a dependência de nós de validação. Este artigo vai explicar o que é o Plugin Geyser da Solana, como ele funciona e como configurar um servidor PostgeSQL para usar com uma interface do Plugin Geyser.

O que é o Plugin Geyser Solana?

A Solana desenvolveu um mecanismo chamado Plugin Geyser Solana para encaminhar as solicitações de RPC para outro local de memória e reduzir a dependência de nós validadores. A Remote Procedure Call (RPC - chamada de procedimento remoto) permite que os usuários conectem, leiam e escrevam informações para os nós Solana na rede.Os provedores de serviços RPC podem ser inundados com pedidos quando a rede Solana experimenta alto tráfego. Este tráfego incomum pode fazer com que os validadores Solana fiquem atrás do líder dos nós.

Como o Plugin Geyser Solana ajuda com as fontes de dados externas?

O Plugin Geyser Solana permite que os desenvolvedores acessem algumas formas de dados sem solicitá-los on-chain. Usando Kafka, postgreSQL, e outros possíveis armazenamentos de dados, os desenvolvedores não precisam utilizar recursos de RPC para ações como obter contas, blocos e slots. Para fazer interface com o Plugin Geyser Solana, os desenvolvedores precisam usar crates (caixotes).

O que são crates no Plugin Geyser Solana?

O Plugin Geyser Solana é composto de crates, que é uma unidade de compilação em Rust, que tipicamente se converte em uma biblioteca ou binário quando compilado. Os crates são sinônimo de pacotes em outras linguagens de programação. Mas em Rust, um pacote é uma combinação de um ou mais crates. Os crates são formados por unidades de compilação.

O que são unidades de compilação?

Unidades de compilação são partes do código fonte de um programa que podem ser compiladas independentemente ou separadamente. Como o Rust é uma linguagem de programação de uso geral, suporta programação funcional, imperativa, orientada a objetos, e simultânea. O Rust usa declarações que mudam o estado de um programa à medida que cada uma das declarações é executada por sua vez. Esta abordagem permite que os programas escritos em Rust sejam compostos de unidades de compilação.

O que são Interfaces no Plugin Geyser Solana?

Uma interface de plugin é definida pelo crate que é utilizado. Por exemplo, a interface do Plugin Geyser Solana é especificada por seu atributo GeyserPlugin. Ao permitir o fluxo de comunicação, o GeyserPlugin pode transmitir detalhes da conta e transação.

Casos de uso comuns do Plugin Geyser Solana

Alguns dos casos de uso mais prático de uma interface de Plugin Geyser Solana incluem o recebimento de notificações de atualizações de conta, alterações de slots e notificações de transações.

1. Atualizações da Conta

O seguinte método é usado para notificação de uma atualização de conta:

   fn update_account(
        &mut self,
        account: ReplicaAccountInfoVersions,
        slot: u64,
        is_startup: bool,
    ) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

A estrutura ReplicaAccountInfoVersions contém os metadados e dados da conta que está sendo transmitida.

Quando is_startup é verdadeira, indica que a conta é carregada a partir de snapshots quando o nó validador é iniciado. Quando is_startup é falsa, a conta é atualizada ao processar uma transação.

Chamar esta função após todas as contas terem sido alertadas como validador restaura os detalhes da Account a partir de snapshots.

fn notify_end_of_startup(&mut self) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

A permanência de dados externos é mantida, assegurando que os processos sejam executados de forma assíncrona. Isto faz com que o processamento de transações funcione rapidamente e em paralelo quando a update_account é chamada.

2. Alterações de Slots

O seguinte método é usado para notificar mudanças de status dos slots:

  fn update_slot_status(
        &mut self,
        slot: u64,
        parent: Option,
        status: SlotStatus,
    ) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

Em caso de erro ao preservar os dados, o plugin pode decidir abortar o validador. Os dados permanecem consistentes e, uma vez que o validador reinicia, todos os dados da conta são retransmitidos.

3. Notificando as Transações

O seguinte método é utilizado para notificar as transações:

   fn notify_transaction(
        &mut self,
        transaction: ReplicaTransactionInfoVersions,
        slot: u64,
    ) -> Result<()>
Enter fullscreen mode Exit fullscreen mode

Como configurar um banco de dados PostgreSQL para o Plugin Geyser da Solana

O plugin PostgreSQL é utilizado para armazenar dados da conta PostgreSQL Para configurar corretamente seus arquivos, use as diretrizes de configuração na página oficial de documentação da Solana e siga estes passos para configurar o banco de dados: instalar um servidor PostgreSQL, criar a instância do banco de dados e criar os objetos do schema (coleção de objetos de banco de dados).

1. Instale o Servidor PostgreSQL

Siga as instruções para instalar o servidor PostgreSQL na sua máquina. Para um desempenho adequado em seu nó validador, é altamente recomendável que você execute o servidor de banco de dados em um nó que seja diferente do validador.

2. Crie a Instância do Banco de Dados

Em seguida, inicie o servidor, crie o banco de dados, crie um usuário e verifique se tudo está funcionando.

Inicie o servidor:

sudo systemctl start postgresql@14-main
Enter fullscreen mode Exit fullscreen mode

No exemplo oficial, a seguinte linha cria um banco de dados chamado 'solana':

sudo -u postgres createdb solana -p 5433
Enter fullscreen mode Exit fullscreen mode

Criar o usuário do banco de dados:

sudo -u postgres createuser -p 5433 solana
Enter fullscreen mode Exit fullscreen mode

A linha de código anterior irá criar um usuário chamado 'solana'.

Verifique se o banco de dados está funcionando como desejado:

psql -U solana -p 5433 -h 10.138.0.9 -w -d solana
Enter fullscreen mode Exit fullscreen mode

3. Crie os Objetos do Schema

Use o script create_schema.sql do GitHub para criar objetos para armazenamento de contas e slots.

Execute o script abaixo:

psql -U solana -p 5433 -h 10.138.0.9 -w -d solana -f create_schema.sql
Enter fullscreen mode Exit fullscreen mode

Agora, inicie o validador com este plugin que foi carregado nele.

Comece a usar o Plugin Geyser Solana para acessar dados mais rapidamente

Além da imutabilidade, os dados devem estar prontamente disponíveis e acessíveis em blockchains. O Plugin Geyser Solana torna esta acessibilidade possível e mais rápida na Solana, enquanto ajuda os nós validadores a gerenciar seus recursos e tempo de atividade.

Esse artigo foi escrito por Alchemy e traduzido por Fátima Lima. O original pode ser lido aqui.

Oldest comments (0)