Creación de consultas SQL on-chain en Dune

Introducción a la creación de consultas SQL On-Chain en Dune

En el ecosistema cripto, disponer de información transparente y en tiempo real es crucial. Dune se ha convertido en una de las plataformas preferidas para analizar datos on-chain usando SQL. Este artículo explica con detalle cómo diseñar y optimizar tus queries en Dune, desde conceptos básicos hasta técnicas avanzadas de data analytics.

1. ¿Qué es Dune

Dune (dune.com/docs) es un entorno colaborativo donde puedes:

  • Explorar datos públicos de cadenas como Ethereum, Arbitrum o Optimism.
  • Escribir y compartir consultas SQL que extraen información de eventos, transacciones y contratos.
  • Crear dashboards interactivos y visualizaciones dinámicas.

2. Primeros pasos: entorno y esquemas

2.1. Acceso al workspace

Para comenzar, crea una cuenta gratuita en Dune. Una vez dentro, abre un query editor donde encontrarás disponibles múltiples esquemas (schemas) que reflejan distintas cadenas y protocolos.

2.2. Estructura de la base de datos

Cada schema contiene tablas con nombres descriptivos:

Tabla Descripción
ethereum.transactions Registro de todas las transacciones de Ethereum.
ethereum.logs Eventos emitidos por contratos inteligentes.
uniswap.v2.swaps Detalle de intercambios en Uniswap V2 (uniswap.org).

3. Fundamentos de las consultas SQL

3.1. SELECT, FROM y WHERE

La estructura mínima de una consulta es:


SELECT column1, column2
FROM schema.table
WHERE condición

Por ejemplo, para obtener las transacciones más altas en Ethereum:


SELECT from_address, to_address, value
FROM ethereum.transactions
WHERE value gt 100  POW(10, 18)
ORDER BY value DESC
LIMIT 10

3.2. Agregaciones y GROUP BY

Para resumir datos:


SELECT DATE_TRUNC(day, block_time) AS fecha,
       COUNT() AS total_txs,
       SUM(value) / POW(10,18) AS volumen_eth
FROM ethereum.transactions
GROUP BY fecha
ORDER BY fecha

Esto permite visualizar la evolución diaria del volumen.

4. Joins y subconsultas

4.1. INNER JOIN

Ejemplo: combinar swaps de Uniswap con detalles de transacción:


SELECT us.swap_id,
       t.from_address,
       us.amount0_in, us.amount1_out
FROM uniswap.v2.swaps us
INNER JOIN ethereum.transactions t
  ON us.tx_hash = t.hash
WHERE us.amount0_in gt 1000

4.2. Subconsultas

Para aislar un conjunto de datos previo:


WITH grandes_swaps AS (
  SELECT tx_hash, amount0_in
  FROM uniswap.v2.swaps
  WHERE amount0_in gt 5000
)
SELECT g.tx_hash, t.to_address
FROM grandes_swaps g
JOIN ethereum.transactions t
  ON g.tx_hash = t.hash

5. Funciones avanzadas y Window Functions

Las Window Functions habilitan análisis más complejos.

Función Descripción
ROW_NUMBER() Numera filas según partición y orden.
RANK() / DENSE_RANK() Clasificación con o sin huecos.
SUM() OVER Suma acumulada en ventana.

Ejemplo de ROW_NUMBER() para identificar el mayor swap por día:


SELECT fecha, swap_id, amount0_in
FROM (
  SELECT DATE_TRUNC(day, block_time) AS fecha,
         swap_id,
         amount0_in,
         ROW_NUMBER() OVER (
           PARTITION BY DATE_TRUNC(day, block_time)
           ORDER BY amount0_in DESC
         ) AS rn
  FROM uniswap.v2.swaps
) t
WHERE rn = 1

6. Optimización y rendimiento

  • Filtra temprano: limita el conjunto de datos en la cláusula WHERE.
  • Usa índices lógicos: agrupa por columnas de cardinalidad moderada.
  • Evita SELECT : especifica solo las columnas necesarias.
  • Cache de Dune: Dune guarda resultados de queries frecuentes, acelera recargas.

Además, revisa la documentación oficial de consultas para conocer límites y mejores prácticas.

7. Casos de uso prácticos

7.1. Análisis de liquidez en AMM

Monitoriza el par ETH/USDC en Uniswap V3, calculando variación de ticks y volumen.

7.2. Seguimiento de wallets whales

  1. Identificar direcciones con >1,000 ETH.
  2. Rastrear transacciones entrantes/salientes.
  3. Correlacionar con movimientos de mercado.

8. Buenas prácticas y consejos

  • Documenta tu query: utiliza comentarios SQL para explicar lógicas complejas.
  • Versiona y comparte: mantén tu código en repositorios (e.g. GitHub) y enlázalo en Dune.
  • Revisa esquemas periódicamente: las plataformas on-chain evolucionan y se añaden nuevas tablas.
  • Configura alertas: integra con herramientas de notificaciones (Slack, Discord) vía API de Dune.

Conclusión

La capacidad de consultar datos on-chain con SQL en Dune facilita descubrir insights únicos en el espacio cripto. Desde consultas simples de transacciones hasta pipelines avanzados con Window Functions, dominar estas técnicas proporciona una ventaja competitiva en análisis blockchain. Comienza explorando los dashboards comunitarios, clona queries, y adapta tus propios reportes con confianza y escalabilidad.


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *