Mejores prácticas de indexación
Un resumen condensado de las 25 prácticas de indexación más importantes extraídas de cada página de esta sección.
Busca en todas las páginas de la documentación
Un resumen condensado de las 25 prácticas de indexación más importantes extraídas de cada página de esta sección.
No uses RPC como tu base de datos: Persiste eventos en Postgres/almacén de datos (Conceptos básicos de indexación).
Claves primarias idempotentes: (signature, ix_index) o (pubkey, write_version) evitan filas duplicadas en reintentos de webhook.
Almacena el cursor de ingesta: Última ranura procesada por fuente para recuperación ante fallos (Creación de un indexador).
Analiza bytes de instrucciones, no logs: Los logs son auxiliares; los discriminadores en los datos son canónicos (Análisis de datos de programas).
Recorre instrucciones internas: Los programas con muchas CPI ocultan la lógica en meta.innerInstructions.
Versiona el IDL por despliegue: Fija el artefacto IDL a la etiqueta de la versión del programa en la CI del analizador.
Bucket de instrucciones desconocidas: Almacena la carga útil hexadecimal para actualizaciones compatibles con versiones futuras.
Política de confirmación explícita: Indexa confirmed para la experiencia de usuario; promueve a finalized para finanzas si es necesario.
Alertas de detección de huecos: Monitoriza la monotonicidad de las ranuras en los flujos de Yellowstone/webhook.
Reconciliación de backfill de RPC: Trabajo nocturno que compara la punta del flujo con la ranura máxima de la base de datos (gRPC de Yellowstone).
Verifica el HMAC del webhook: Rechaza POSTs sin firmar (Webhooks).
Confirma rápido, procesa asíncronamente: Devuelve 200 en <1s; pon en cola el procesamiento pesado.
Filtra temprano en el origen: Los filtros de propietario de Geyser/Yellowstone ahorran egresos (Plugins de Geyser).
Evita GPA de mainnet en el backfill del indexador: Usa archivos getBlock o exportaciones del proveedor con límites de tasa.
Migraciones de esquema planificadas: Añade columnas como nulas; escritura dual durante las actualizaciones del programa.
Tablas decimales para tokens: Une metadatos de acuñación; nunca asumas 9 decimales.
Réplica de lectura para BI: Los paneles nunca golpean al escritor principal (Análisis y paneles).
Define métricas documentadas: Una única fuente de verdad SQL para DAU/volumen/TVL.
Oráculos de precios a la hora del bloque: Las métricas en USD necesitan precios históricos, no una suposición puntual.
Política de retención: Archiva particiones frías; los datos de la cadena crecen sin límite.
Prueba los analizadores con transacciones doradas: Fixture de mainnet en base64 en el repositorio para regresión.
Escala consumidores horizontalmente: Kafka/cola entre ingesta y escritores.
Tokens gRPC seguros: Rota las credenciales de Yellowstone; audita el acceso.
No expongas tablas de cadena crudas públicamente: Cura la API con autenticación y paginación.
Planifica la salida del proveedor: Abstrae la interfaz de ingesta para cambiar entre Yellowstone, webhook o autoalojado.
Nunca para análisis de productos a escala; solo para migraciones únicas o conjuntos de direcciones diminutos.
Webhooks para volumen de eventos moderado y simplicidad; Yellowstone para programas de "firehose".
DAS sirve lecturas de activos; la indexación captura eventos de negocio de programas personalizados que DAS no modela.
Versiones de la pila: Esta página fue 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 y LiteSVM 0.6.x.
Revisado por Chris St. John·Última actualización: 16 jul 2026