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.
Busque em todas as páginas da documentaçã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 confirmed para UX; promova para finalized para 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 getBlock ou 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.
Nunca para análise de produto em escala - apenas para migrações únicas ou conjuntos de endereços minúsculos.
Webhooks para volume moderado de eventos e simplicidade; Yellowstone para programas de firehose.
O DAS serve leituras de ativos; a indexação captura eventos de negócios de programas personalizados que o DAS não modela.
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.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026