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.
-
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
confirmedpara la experiencia de usuario; promueve afinalizedpara 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
getBlocko 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.
Preguntas frecuentes
¿Cuándo es suficiente el backfill de RPC?
Nunca para análisis de productos a escala; solo para migraciones únicas o conjuntos de direcciones diminutos.
¿Webhook vs Yellowstone?
Webhooks para volumen de eventos moderado y simplicidad; Yellowstone para programas de "firehose".
¿Cómo se relaciona la indexación con DAS?
DAS sirve lecturas de activos; la indexación captura eventos de negocio de programas personalizados que DAS no modela.
Relacionado
- Conceptos básicos de indexación - entrada de sección
- Creación de un indexador - guía de implementación
- Mejores prácticas de RPC - límites de RPC
- Mejores prácticas de optimización - aterrizaje de transacciones
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.