
Monitorando eventos on-chain na Solana
Introdução
Uma das partes mais importantes do trabalho de um desenvolvedor de cripto é configurar sistemas que monitorem a blockchain. Você pode acompanhar confirmações de pagamentos, vendas de NFTs, transferências de fundos ou simplesmente monitorar contas por motivos de segurança. Seja qual for o seu caso de uso, é essencial criar sistemas tolerantes a falhas, confiáveis e otimizados para baixa latência ao monitorar a rede.
Neste artigo, veremos algumas maneiras de criar esses sistemas na Solana, exemplos de casos de uso e como você pode desenvolver sistemas melhores com a Helius daqui para frente.
Monitorando a blockchain
Há duas formas principais de monitorar eventos on-chain:
- Consultas periódicas
- Streaming
Consultas periódicas são um método em que o cliente ou aplicativo verifica repetidamente um servidor ou uma fonte de dados em busca de novos dados. Isso pode ser feito em intervalos definidos ou sob demanda. Quando uma solicitação é enviada ao servidor, ele responde com os dados mais recentes, mesmo que nada tenha mudado. Isso significa que o cliente ou aplicativo pode receber os mesmos dados repetidamente, mesmo sem nenhuma atualização.
Já no streaming, o servidor envia dados ao cliente ou aplicativo quando há uma atualização. Assim, o cliente não precisa solicitar dados repetidamente, e o servidor só os envia quando ocorre uma mudança. Isso permite uma transferência de dados mais eficiente e em tempo real, pois o servidor envia apenas dados relevantes.
Embora as consultas periódicas sejam uma técnica simples e amplamente utilizada, elas podem gerar muito tráfego de rede e consumir muitos recursos, especialmente quando as solicitações são frequentes. O streaming, por outro lado, é mais eficiente, pois o servidor envia apenas atualizações, reduzindo o volume de dados transferidos e o tráfego de rede.
O streaming costuma ser usado em aplicativos nos quais atualizações de dados em tempo real são essenciais, como feeds do mercado financeiro, atualizações de redes sociais e jogos online. As consultas periódicas são mais comuns em aplicativos nos quais as atualizações são menos frequentes ou menos críticas, como clientes de e-mail ou sites de notícias.
Embora ambas as técnicas tenham vantagens e desvantagens, o streaming geralmente é o método mais eficiente e indicado para atualizações de dados em tempo real. Já as consultas periódicas continuam úteis em determinados aplicativos nos quais as atualizações são menos frequentes.
Para a maioria dos fluxos de trabalho em blockchains — especialmente na Solana —, prefira o streaming. Há vários motivos para isso, mas o streaming é muito mais simples de implementar e facilita o processamento em casos de uso com alto volume de tráfego, uma especialidade da Solana.
Como monitorar eventos on-chain na Solana
A Solana é uma blockchain muito rápida. Ela emite novos blocos a cada 400 ms, e esses blocos geralmente contêm milhares de transações. O mais impressionante é que esse é o ritmo mais lento que ela terá. À medida que os engenheiros responsáveis pelo núcleo continuam aprimorando o sistema, a taxa de novos dados processados pela rede só aumentará. Por isso, é essencial projetar seus sistemas pensando em escalabilidade.
Felizmente, você tem algumas opções para monitorar dados on-chain na Solana:
- Consultas periódicas
- WebSockets
- Geyser
- Webhooks da Helius
Consultas periódicas
Essa é a forma menos recomendada de monitorar eventos na Solana, embora conceitualmente possa ser a mais simples.
Dependendo dos dados que você deseja obter, basta configurar um loop que chame repetidamente um método JSON-RPC em um nó RPC da Solana. Casos de uso comuns incluem consultar o método getBlock para monitorar novos blocos ou consultar `getSignaturesForAddress` para verificar novas transações de um determinado endereço.
Curiosamente, esse também pode ser o melhor método para casos de uso muito avançados, nos quais você tenha uma lógica altamente personalizada para acionar novas atualizações.
WebSockets
Os RPCs da Solana também disponibilizam WebSockets PubSub aos quais os desenvolvedores podem se conectar. Os tipos de evento disponíveis são:
- accountUnsubscribe
- accountSubscribe
- logsSubscribe
- logsUnsubscribe
- programSubscribe
- programUnsubscribe
- signatureSubscribe
- signatureUnsubscribe
- slotSubscribe
- slotUnsubscribe
Veja um pequeno exemplo de código em JavaScript para monitorar alterações em contas por meio de um RPC da Helius, que oferece suporte a WebSockets:
const solanaWeb3 = require(‘@solana/web3.js’)
const connection = new solanaWeb3.Connection(“https://rpc.helius.xyz?api-key=“);
(async () => {
connection.onAccountChange(
new solanaWeb3.PublicKey(“5yv6Vh8FNx93TXeSS94xy8VLZMbTqx4vXp7Zg5bDLZtE”),
(updatedAccountInfo, context) => console.log(“Updated account info: “, updatedAccountInfo),“confirmed” );
})();Uma ressalva muito importante sobre WebSockets: embora sejam muito úteis para prototipagem, na prática constatamos que eles são bastante frágeis e pouco confiáveis. É altamente recomendável não usá-los em fluxos de trabalho críticos, pois você perderá eventos.
Geyser
Resumo — você pode fazer com que nós da Solana transmitam dados diretamente para você por meio de uma interface de plugin que permite personalizar como esses dados são recebidos. Essa é a forma mais rápida e com menor latência de transmitir dados na Solana, além de ser indispensável para liquidações em DeFi e aplicativos sensíveis à latência.
Validadores e RPCs da Solana têm uma forma exclusiva e nativa da Solana de transmitir dados: plugins Geyser.
Os validadores foram aprimorados para oferecer suporte a um mecanismo de plugins chamado plugin "Geyser", que permite transmitir informações sobre contas, slots, blocos e transações para repositórios externos de dados, como bancos de dados relacionais, bancos de dados NoSQL ou Kafka. Serviços de RPC podem então ser desenvolvidos para consumir dados desses repositórios externos, possibilitando otimizações mais flexíveis e específicas, como cache e indexação.
Infelizmente, configurar o Geyser pode ser bastante complexo e caro. Mesmo depois da configuração, você precisará de um trabalho considerável de DevOps para garantir que tudo funcione corretamente. Felizmente, na Helius desenvolvemos o GeyserVM, que permite enviar seus plugins e colocá-los em funcionamento em poucos segundos. Nossos clusters redundantes e de alta disponibilidade garantem que você não precise se preocupar com problemas de dados. Como os recursos são compartilhados, você pode economizar mais de 200% nos custos mensais!
Se você quiser uma solução dedicada de Geyser como serviço, também oferecemos essa opção, é claro. Clique aqui para saber mais.
Webhooks
Webhooks são um conceito simples. Em resumo, webhooks monitoram eventos e os enviam para um servidor que você configurou quando eles acontecem. Por exemplo, talvez você queira enviar uma notificação ao seu servidor do Discord sempre que ocorrer a venda de um NFT — um webhook faz isso sem complicações.
Para a maioria dos fluxos de monitoramento de eventos na Solana, webhooks são o método mais fácil, flexível e econômico. Você só deve reconsiderar o uso de webhooks em casos que exijam latência extremamente baixa, nos quais uma diferença de 5 ms possa determinar o sucesso ou o fracasso do aplicativo — como em negociações de alta frequência.
Na Helius, criamos a solução de webhooks mais robusta do universo cripto.
Você pode monitorar até 100.000 endereços por webhook, configurar os tipos de evento que deseja acompanhar — nós fazemos o parsing para você — e simplesmente informar a URL do seu servidor. Isso é tudo que você precisa para começar, gratuitamente.
Um dos muitos benefícios de um serviço como esse é que, além de economizar semanas ou meses de tempo e trabalho de desenvolvimento, você recebe um backend elástico que acompanha o crescimento da sua operação.
Casos de uso
Agora você já sabe como monitorar eventos on-chain na Solana. O que fazer em seguida? Veja alguns casos de uso que podem ser interessantes:
Bots
- Quando um NFT for listado no marketplace X, acione uma ação de "compra de NFT".
- Quando uma posição de margem estiver em risco, acione uma ação de "liquidação".
Monitoramento e alertas
- Quando um programa emitir determinado log, acione a integração com o PagerDuty.
- Quando o saldo de uma conta de token mudar mais de X%, use o Dialect para enviar um alerta.
Indexação orientada a eventos
- Quando ocorrer qualquer transação de determinado programa, envie-a diretamente para seu banco de dados ou backend.
Notificações e acompanhamento de atividades
- Quando ocorrer uma transferência da carteira X para a carteira Y, envie uma notificação pelo Slack ou por e-mail.
Análises e logs
- Quando o evento X acontecer, envie-o para um pipeline de ETL ou armazene-o diretamente na Helius para visualizar tendências ao longo do tempo.
Automação de fluxos de trabalho
- Quando o evento X acontecer, acione qualquer conjunto de ações.
Conclusão
Neste artigo, abordamos as diferenças entre consultas periódicas e streaming, diferentes formas de monitorar a blockchain Solana e alguns exemplos de casos de uso.
Em resumo, você pode monitorar eventos on-chain na Solana por meio de consultas periódicas, WebSockets, Geyser ou webhooks da Helius. Cada opção tem vantagens e desvantagens, e é importante considerar os requisitos dos seus sistemas antes de decidir qual abordagem implementar. Agradecemos pela leitura!
Artigos relacionados
Assine a Helius
Acompanhe as novidades mais recentes do desenvolvimento Solana e receba atualizações quando publicarmos


