Melhores Práticas de Indexação
Um resumo condensado das 25 práticas de indexação mais importantes extraídas de todas as páginas desta seção.
-
Não use RPC como seu banco de dados: Persista eventos no Postgres/data warehouse (Noções Básicas de Indexação).
-
Chaves primárias idempotentes:
(signature, ix_index)ou(pubkey, write_version)evitam linhas duplicadas em retentativas de webhook. -
Armazene o cursor de ingestão: Último slot processado por fonte para recuperação em caso de falha (Construindo um Indexador).
-
Analise bytes de instrução, não logs: Logs são auxiliares; discriminadores nos dados são canônicos (Analisando Dados de Programa).
-
Percorra instruções internas: Programas com muitas CPIs escondem a lógica em
meta.innerInstructions. -
Versione a IDL por deploy: Fixe o artefato da IDL na tag de release do programa no CI do parser.
-
Bucket de instrução desconhecida: Armazene o payload em hex para upgrades compatíveis com versões futuras.
-
Política de commitment explícita: Index
confirmedpara UX; promova parafinalizedpara finanças, se necessário. -
Alertas de detecção de lacunas: Monitore a monotonicidade do slot em streams Yellowstone/webhook.
-
Reconciliação de backfill RPC: Job noturno compara a ponta do stream com o slot máximo do DB (Yellowstone gRPC).
-
Verifique o HMAC do webhook: Rejeite POSTs sem assinatura (Webhooks).
-
ACK rápido, processe assincronamente: Retorne 200 em <1s; enfileire o processamento pesado.
-
Filtre cedo na origem: Filtros de proprietário Geyser/Yellowstone economizam tráfego de saída (Plugins Geyser).
-
Evite GPA da mainnet em backfill de indexador: Use arquivos
getBlockou exportações de provedor com limites de taxa. -
Migrações de esquema planejadas: Adicione colunas como anuláveis; escrita dupla durante upgrades de programa.
-
Tabelas decimais para tokens: Junte metadados de mint; nunca assuma 9 decimais.
-
Réplica de leitura para BI: Dashboards nunca atingem o escritor primário (Analytics e Dashboards).
-
Documente definições de métricas: Uma única fonte de verdade SQL para DAU/volume/TVL.
-
Oráculos de preço no tempo do bloco: Métricas em USD precisam de preço histórico, não de estimativa instantânea.
-
Política de retenção: Arquive partições frias; dados da chain crescem sem limites.
-
Teste parsers com transações douradas: Fixture da mainnet em base64 no repositório para regressão.
-
Escale consumidores horizontalmente: Kafka/fila entre ingestão e escritores.
-
Tokens gRPC seguros: Rotacione credenciais Yellowstone; audite o acesso.
-
Não exponha tabelas brutas da chain publicamente: Curate a API com autenticação e paginação.
-
Planeje a saída do provedor: Abstraia a interface de ingestão para trocar Yellowstone vs webhook vs auto-hospedagem.
FAQs
Quando o backfill RPC é suficiente?
Nunca para análise de produto em escala - apenas para migrações únicas ou conjuntos de endereços minúsculos.
Webhook vs Yellowstone?
Webhooks para volume moderado de eventos e simplicidade; Yellowstone para programas de firehose.
Como a indexação se relaciona com o DAS?
O DAS serve leituras de ativos; a indexação captura eventos de negócios de programas personalizados que o DAS não modela.
Relacionados
- Noções Básicas de Indexação - entrada da seção
- Construindo um Indexador - guia de implementação
- Melhores Práticas de RPC - limites de RPC
- Melhores Práticas de Otimização - inclusão de tx
Versões do Stack: Esta página foi escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, e LiteSVM 0.6.x.