Bloque #6: Tirando magia con Dune Analytics

Hola a todos! Bienvenidos a un nuevo Bloque X. Espero que se hayan divertido con las dos entregas anteriores. Sinceramente fue algo que fui pensando sobre la marcha, pero me pareció que dar un ejemplo práctico y real con info de una herramienta iba a ser super útil e iba a hacer que la presentación no fuera toda teórica y en el aire. 


Después de tanto manoseo de Python, llegó la hora de cambiar un poco el foco y vamos hoy a ver una nueva forma de obtener data de una Blockchain. Imagínense ahora a una Blockchain la cual puede ser accesible directamente como una consulta de SQL…

Dune Analytics

Dune es una plataforma web que permite acceder a la información de blockchains públicas a través de queries de SQL y agruparla y juntarla en hermosos dashboards. 

Como ya vimos, las blockchains son abiertas y transparentes, pero cada una tiene sus particularidades lo cual las hace difícil de entender, digerir y procesar su data. Dune provee las herramientas necesarias para analizar data entre diferentes blockchains para diferentes tokens, wallets y protocolos.  

Hablando en castellano simple, Dune nos da una capa de abstracción adicional a la información de diferentes blockchains y nos presenta esa información en tablas pulidas y ordenadas las cuales podemos acceder con simples comandas de SQL. Olvídense de tener que buscar un Node as a Service para poder consultar una blockchain y de tener que parsear respuestas con comandos complejos. Dune nos soluciona la vida con un simple SELECT * FROM

Sus tablas tienen diferentes grados de detalle: hay tablas donde podemos acceder a la información cruda como bloques, transacciones o logs y hay tablas más complejas las cuales, por ejemplo, nos presenta un listado de tokens ERC-20 a través de diferentes blockchains con sus respectivos contratos, symbols y decimales. Es decir, Dune no solo nos soluciona la vida dándonos la información en simples tablas, sino que también ofrece un nivel de abstracción adicional donde ya procesa complejos Logs y Transacciones y, por ejemplo, podemos obtener el listado de todas las operaciones de un Dex accediendo simplemente a una sola tabla. Inclusive podemos obtener esa misma información para diferentes blockchains, lo cual lo hace una herramienta super útil cuando queremos ver una imagen más amplia. 

Magia

Una nota de color, Dune introduce los conceptos de wizards y spells que le da una mística adicional a esta herramienta. Wizards seriamos cada uno de nosotros, Data Analytics creando queries para acceder a información onchain. Spells serían nuestras hermosas queries, que de forma mágica agrupan y procesan la información para darnos como resultado un hermoso gráfico legible por simples humanos. 


Query engine

Originalmente, Dune utilizaba PostgreSQL como su database y su lenguaje de consulta. Pero, según comentan ellos en su documentación, PostgreSQL no escala en la forma que ellos necesitaban y por eso lo han discontinuado durante 2023. Hay que tener presente que su base de datos v2 es completamente diferente a su v1, no solo en su performance sino también en la información que contiene. Esto quiere decir que una query de PostgreSQL, que usa la bd v1, puede obtener resultados diferentes que una query que utiliza la bd v2. 


Actualmente, montaron una v2 de su base de datos y crearon un engine llamado DuneSQL. Aunque hay pequeñas diferencias entre PostgreSQL y DuneSQL, si ustedes ya tenían alguna query van a tener que realizar la migración a mano (teniendo en cuenta las diferencias que pueden consultarse aquí) o utilizando su tool de migración que es limitado pero ayuda. 

También mencionan en su documentación que utilizaban SparkSQL, un query engine de Apache Spark, en su database v2. SparkSQL fue discontinuado también durante 2023 ya que, según la gente de Dune, no era un buen fit para sus casos de uso. Nuevamente, si tenían alguna query con SparkSQL van a tener que migrar a DuneSQL siguiendo estas especificaciones.

Tablas de consulta

Hay 4 tipos de tablas que pueden ser utilizadas en una query de Dune Analytics:

  • Raw data: Información cruda y sin editar de una blockchain. Incluye bloques, transacciones, logs, entre otros.
  • Decoded data: Dune hace la decodificación de todas las transacciones (todas las funciones y logs) y las guarda en tablas ordenadas. Podremos obtener, por ejemplo, todas las funciones que fueron llamadas en una misma transacciones sin tener que andar decodificando Logs. Lo mismo con el listado de todos los Logs de una Transacción. 
  • Spellbook: Tablas con un nivel de abstracción superior a las anteriores que son mantenidas por la comunidad y el equipo de Dune. Podremos obtener, por ejemplo, todas las operaciones de NFTs de una blockchain o todas los trades operados de un Dex de manera sencilla, sin tener que decodificar ningún tipo de información de bajo nivel. 
  • Community: Tablas que contienen información onchain y offchain. Algunos casos de uso son tablas sobre el proyecto Flashbots, utilizado para eliminar los riesgos de operar en blockchain y ser víctima de miner-extractable value (MEV), o Neynar, plataforma de desarrollo para protocolos web3 sociales como Farcaster. 

Como normal general, siempre es bueno ir directamente a las tablas de Spellbook a menos que el protocolo que estemos buscando sea demasiado nuevo y no tenga tablas específicas para eso o queramos hacer un análisis de información de primitivas de bajo nivel como bloques o transacciones. 

Primitivas de Dune

He decidido apodar como “primitivas de Dune” a los objetos con los cuales un wizard puede interactuar. Básicamente son dos: queries y dashboards

Sobre las queries no hay mucho más para agregar. Son consultas de SQL utilizando alguna de las tablas que se encuentran en alguno de los conjuntos arriba mencionados. Lo que sí es interesante sobre Dune, es que dentro del mismo editor de queries, uno puede ya generar diferentes gráficos asociados al resultado de tu query. Es decir, la query que uno genera no solo va a poder ser una tabla con información sino que puede transformarse en diferentes gráficos. Uno puede generar: gráfico de barras, gráfico de dispersión, gráfico de área, gráfico de líneas, gráfico de torta, un contador (que es simplemente un widget con un número) o una tabla (que es la tabla tal cual es generada por la query). 

Ejemplo del editor de queries de Dune Analytics

Ahora, supongamos que tenemos varias queries con varios gráficos. Muy lindo todo, pero necesitamos poder ver todo junto y es ahí donde entran los dashboards. Estos no son más que espacios donde poder agrupar diferentes gráficos de la forma que uno quiera. También es posible agregar algún widget de tipo texto, para agregar información útil o alguna imagen para dejarlo lindo. Los dashboards pueden ser programados para que se actualicen de forma periódica, lo cual implica actualizar las queries y los gráficos dentro de este. 

Ejemplo del editor de dashboard de Dune Analytics

Redes soportadas

Al momento de escribir estas líneas, las siguientes blockchains eran soportadas por Dune:

  • Arbitrum
  • Avalanche C-Chain
  • BNB Chain
  • Base
  • Beacon (Ethereum)
  • Bitcoin
  • Celo
  • Fantom
  • Gnosis Chain
  • Goerli (Ethereum)
  • Optimism
  • Optimism (legacy)
  • Polygon
  • Scroll
  • Solana
  • Zonar
  • zkSync

Aspecto social

Algo muy interesante que vale la pena destacar, es el aspecto social de Dune Analytics. Uno puede trabajar de forma local y privada sin ningún tipo de problema, pero Dune nos presenta una plataforma donde poder compartir nuestras queries y dashboards. Existe un apartado donde podemos ver cuales son las primitivas “más calientes” o más consultadas del momento. Podemos likear (o marcarlo como Favorite, así se llama en Dune) las queries/dashboards, guardar los que más nos interesan y buscar por diferentes tags o time range. 

Es super interesante este concepto ya que empuja a la colaboración. Uno podría tomar una query o un dashboard y hacer un fork del mismo. Eso generaría una copia de esa primitiva en mi usuario para que luego haga las modificaciones que me parezcan útiles y pueda publicarlo nuevamente para que otros lo utilicen como información o como punto de partida para sus propios análisis. 

Home de Dune donde se pueden ver los dashboards más consultados

Existe un leaderboard de wizards, donde podemos ver cada uno de los wizards con mayor cantidad de Favorites e inclusive uno puede ver diferentes equipos como si fuesen clanes de un juego. Definitivamente este toque social que ha generado Dune le da un empuje adicional a la herramienta. 

Desventajas

Todo muy lindo, todo muy bonito Fer, pero para que dedicamos varios Bloques pasados en hacer scripts complejos si la información estaba tan al alcance y de forma sencilla. Esto tiene dos respuestas: una económica y la otra más filosófica. 

Originalmente Dune no cobraba ningún tipo de Fee. Uno podía generar cuantas consultas quisiera y como mucho había un timeout para que la query no fuese eterna. Tampoco permitía la descargar de la información generada, pero como la API estaba al descubierto un loquito creó una librería no oficial de Python llamada Dune Analytics que permitía la descarga a csv del resultado de la query. Obviamente los muchachos de Dune tienen que comer, y crearon el concepto de tokens dentro de la plataforma. Ejecutar cada query consume una cantidad de tokens x dependiendo de la complejidad de la misma. Actualizar un dashboard es, básicamente, actualizar el conjunto de queries que generan los gráficos en ese dashboard. Por lo que la sumatoria del costo de esas actualizaciones es el costo de la actualización del dashboard. Al momento de escribir estas líneas, las tiers eran estas:

Pricing de Dune Analytics

La free tier no está mal, si uno no está buscando un extenso análisis y quiere mantenerse dentro de Dune ya que no permite el uso de la API ni la descargar de la información de la query. 

Ahora, también hay una respuesta filosófica a por qué uno debe ir con cuidado a estas plataformas y es simplemente uno de los ethos de Cripto: Don’t trust, verify (No confíes, verifica). Estos niveles de abstracción que nos da Dune son super útiles, pero quién nos asegura que la información no está siendo manipulada. O sin pensar mal en ellos, quién nos asegura que no hay un error humano en la generación de métricas? Lógicamente, el concepto de comunidad abierta ayuda a minimizar esos riesgos, pero depende de uno siempre hacer ese trade off entre comodidad y seguridad. Particularmente en Dune, los spellbooks son un proyecto en dbt y son mantenidos por la comunidad. Si uno quisiera contribuir debería generar un PR en su Github intentando solucionar un error o agregando una nueva métrica o proyecto.

Conclusion

Dune Analytics es una excelente herramienta para poder acceder a información de diferentes proyectos onchain de forma rápida y fácil a través de una simple consulta de SQL. Lamentablemente, su free tier es acotada si uno quisiera llevarse esos datos para analizar por fuera o si quisiera evaluar algún proyecto muy nuevo el cual Dune aún no tiene soporte. Pero si uno quisiera generar un bonito dashboard sin volverse loco, esta es tu herramienta. 

Deja un comentario