Análisis y Paneles
Convierte los datos indexados de Solana en información de producto y negocio con vistas materializadas, capas de métricas y herramientas de paneles.
Receta
Tarjeta de receta de referencia rápida, lista para copiar y pegar.
CREATE MATERIALIZED VIEW daily_volume AS
SELECT date_trunc('day', ts) AS day, SUM(amount_usd) AS volume
FROM swaps
GROUP BY 1;
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_volume;Cuándo usar esto:
- Paneles ejecutivos para TVL, volumen y usuarios activos.
- Monitorización de operadores de picos de uso de programas.
- Experimentos de crecimiento que miden la conversión después de acciones en la cadena.
- Paneles de fraude/riesgo sobre patrones de flujo anómalos.
Ejemplo de Trabajo
-- Tablas de métricas principales pobladas por el indexador
SELECT
program_id,
COUNT(DISTINCT user_wallet) AS dau,
SUM(fee_lamports) / 1e9 AS fees_sol
FROM events
WHERE slot >= (SELECT max(slot) - 216000 FROM events) -- Ventana aproximada de ~24h
GROUP BY program_id;Conecta Metabase, Grafana o Hex a una réplica de solo lectura:
# Fuente de datos postgres de Grafana -> paneles en daily_volumeLo que esto demuestra:
- Las agregaciones se ejecutan en el almacén de datos/Postgres, no en aplicaciones móviles a través de RPC.
- Las columnas
slotoblock_timepermiten métricas de ventana de tiempo. - Las vistas materializadas se actualizan según lo programado para cargas rápidas de paneles.
Análisis Profundo
Cómo Funciona
- El indexador normaliza los eventos de la cadena en tablas de hechos (
swaps,mints,votes). - Las tablas de dimensiones contienen decimales de mint, símbolos y metadatos del programa.
- Las herramientas de BI consultan la base de datos réplica con credenciales de solo lectura.
- Las definiciones de métricas se documentan para evitar "dos verdades" entre equipos.
Ejemplos de Métricas
| Métrica | Definición | Trampa |
|---|---|---|
| DAU | Firmantes distintos por día | Incluye bots |
| Volumen | Suma de la notación de operaciones en USD | Necesita oráculo de precios en el momento |
| Retención | Carteras activas semana N | La clave de cohorte es la cartera |
| Ingresos | Tarifas del protocolo en SOL | Conversión de decimales |
Notas de bash
# Trabajo de actualización nocturna (cron)
psql $DATABASE_URL -c "REFRESH MATERIALIZED VIEW CONCURRENTLY daily_volume;"Trampas
- Consultar la cadena a través de RPC para gráficos - lento y con límites de tasa. Solución: indexar primero, panel después.
- Volumen en USD sin precio histórico - gráficos engañosos. Solución: almacenar el precio del oráculo en el momento del bloque.
- El tráfico de bots infla el DAU - métricas vanidosas. Solución: filtros heurísticos o cohortes etiquetadas.
- Expectativas en tiempo real en ETL por lotes - los paneles se retrasan minutos. Solución: SLAs en la monitorización del trabajo de actualización.
- PII en paneles de carteras - políticas de privacidad. Solución: agregar solo claves públicas; gobernanza sobre exportaciones.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Comunidad Dune/Flipside | Estadísticas públicas del protocolo | Programa privado no publicado |
| ClickHouse en tiempo real | Miles de millones de filas | MVP pequeño |
| SQL en Notebook | Investigación ad-hoc | Paneles orientados al cliente |
| Interfaz de análisis del proveedor | Lanzamiento rápido | Definiciones de métricas personalizadas |
Preguntas Frecuentes
¿Postgres vs almacén de datos?
Comienza con Postgres; migra a BigQuery/ClickHouse cuando las consultas superen la escala de minutos en la réplica.
¿Qué tan frescos deben ser los datos?
Depende del producto: 1-5 minutos de retraso son comunes para la actualización por lotes; sub-minuto requiere agregaciones de flujo.
¿Puede @solana/kit potenciar los paneles?
No: los paneles leen la API de tu base de datos, no JSON-RPC directamente.
¿Qué monitorizar operativamente?
Retraso de slots del indexador, duración de la actualización, crecimiento del recuento de filas, latencia p95 de la API.
¿Cómo definir TVL?
Documenta la fuente del precio del token y qué cuentas se consideran bloqueadas; ambiguo entre protocolos.
¿Métricas de NFT comprimidos?
Usa tablas indexadas por DAS o exportaciones del proveedor para recuentos de mint de cNFT.
¿Control de acceso?
Roles de base de datos de solo lectura por panel; sin credenciales de escritura de producción en herramientas de BI.
¿Probar SQL de métricas?
Pruebas de instantáneas en un conjunto de datos fijo con agregaciones esperadas.
¿Picos de estacionalidad?
Pre-agregar antes de los eventos de mint; escalar la frecuencia de actualización temporalmente.
¿Enlace a la compilación del indexador?
Consulta Construcción de un Indexador para el pipeline upstream.
Relacionado
- Construcción de un Indexador - fuente de datos
- Conceptos Básicos de Indexación - por qué no RPC
- Mejores Prácticas de RPC - evitar análisis RPC
- Mejores Prácticas de Indexación - higiene del pipeline
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.