Bienvenidos al Libro de Hechizos. Lanza un encantamiento mágico para domar la cadena de bloques.
Spellbook es la capa de interpretación de Dune, creada para y por la comunidad.
Spellbook es un proyecto dbt. Cada modelo es una consulta SQL simple con azúcar sintáctico menor (destinada a capturar dependencias y ayudar a construir las tablas resultantes) y realiza una pequeña parte de la tarea de convertir registros sin procesar y decodificados en datos de blockchain interpretables.
Spellbook está creado para y por la comunidad; puede cerrar cualquier brecha que encuentre enviando un PR, creando problemas para proponer pequeños cambios o rastrear errores, o participar en discusiones para ayudar a dirigir el futuro de este proyecto.
Spellbook tiene muchas partes móviles y principios de diseño específicos para contribuir a la capa de interpretación de datos de Dune. Para preparar a los contribuyentes para que participen de manera más eficiente, el directorio de documentos contiene un amplio conjunto de temas para responder preguntas comunes y brindar información sobre por qué el repositorio está configurado tal como está. Lea y consulte esta sección cuando desarrolle en Spellbook y surjan preguntas. El equipo de Dune también se vinculará a estos documentos para responder preguntas con frecuencia, ayudar a aumentar la conciencia y mantener limpias las comunicaciones.
Para escalar Spellbook, el repositorio ha introducido subproyectos para romper un poco los linajes complejos de DBT y mantener limpias las áreas de enfoque. Esto también ayudará a la orquestación posterior a mantener frescos los hechizos en producción. Los subproyectos DBT en Spellbook son simplemente múltiples proyectos DBT dentro de un repositorio. La estructura actual de los proyectos:
dbt_subprojects
daily_spellbook
hourly_spellbook
dex
dex
o dex_aggregator
, incluidos los hechizos ascendentes para ayudar a construir los hechizos finales a nivel de sectornft
nft
, incluidos los hechizos ascendentes para ayudar a construir los hechizos finales a nivel de sectorsolana
tokens
Para obtener más información sobre subproyectos, visite esta discusión y haga cualquier pregunta allí.
¿Quieres ponerte manos a la obra? Siga la guía aquí para comenzar.
No necesitas una configuración local compleja para probar hechizos contra el motor de Dune. Una vez que envíe un PR, nuestra canalización de CI se ejecutará y probará y, si el trabajo finaliza exitosamente, podrá consultar los datos que su PR creó directamente desde dune.com.
Simplemente escriba una consulta como lo haría para cualquiera de nuestras tablas en vivo y use el esquema de prueba para recuperar las tablas que creó su PR.
test_schema.git_dunesql_{{commit_hash}}_{{table_name}}
Puede encontrar los nombres exactos fácilmente consultando los registros de la acción dbt slim ci
, en dbt run initial model(s)
.
Tenga en cuenta: las tablas de prueba creadas en la canalización de CI existirán durante aproximadamente 24 horas. Si su tabla no existe, active la canalización para que se ejecute nuevamente y vuelva a crear la tabla de prueba.
Usamos Discord para conectarnos con nuestra comunidad. Dirígete al canal del libro de hechizos en Dune's Discord si tienes preguntas o pides ayuda con un PR en particular. Lo alentamos a aprender haciendo y aprovechar nuestra vibrante comunidad para ayudarlo a comenzar.
git config --global core.autocrlf true
. más informaciónPuedes ver la versión en video de esto si te desplazas un poco hacia abajo.
Navegue hasta el repositorio del libro de hechizos dentro de su CLI (interfaz de línea de comando).
cd userdirectorygithubspellbook
# Change this to wherever spellbook is stored locally on your machine.
Usando el archivo pip ubicado en el repositorio del libro de hechizos, ejecute el siguiente comando de instalación para crear un pipenv.
pipenv install
Si la instalación falla, una razón probable es que nuestro script busca una versión estática de Python y la probabilidad de que se produzca un error por una versión incorrecta de Python es bastante alta. Si ocurre ese error, verifique su versión de Python con:
python --version
Ahora use cualquier programa de edición de texto para cambiar la versión de Python en el archivo pip dentro del directorio del libro de hechizos a su versión de Python. Necesitas tener al menos Python 3.9. Si ha cambiado la versión de Python en el archivo pip, ejecute pipenv install
nuevamente.
Ahora está listo para activar el entorno virtual de este proyecto. Ejecute el siguiente comando para ingresar al entorno:
pipenv shell
Ahora ha creado un entorno virtual para este proyecto. Puedes leer más sobre entornos virtuales aquí.
Dentro del repositorio de Spellbook, hay varios proyectos dbt, ubicados en el directorio raíz. Navegue hasta el proyecto correcto, según su caso de uso.
cd ../spellbook/dbt_subprojects/<subproject_name>/
Cada subproyecto tiene su propio archivo de proyecto dbt con diferentes configuraciones. Una vez que su CLI haya navegado al directorio del proyecto correcto, siga los pasos a continuación:
Para limpiar el proyecto dbt
dbt clean
Para extraer las dependencias del proyecto dbt, ejecute:
dbt deps
Para compilar modelos en SQL sin formato, ejecutar en la aplicación dune y validar:
dbt compile
Cada subproyecto de Spellbook incluye un archivo profiles.yml
, que ayuda a indicarle a dbt cómo ejecutar comandos. El perfil se encuentra en cada directorio de subproyecto, como aquí. Esto nunca debería necesitar modificaciones, a menos que lo haga intencionalmente el equipo de Dune.
Debido a que el archivo profiles.yml
se almacena en el directorio raíz de cada subproyecto, los usuarios deben estar en el directorio raíz de cada subproyecto en la línea de comando para ejecutar dbt compile
como se esperaba.
dbt compile compilará el SQL con plantilla de JINJA y SQL en SQL simple que se puede ejecutar en la interfaz de usuario de Dune. El directorio de su libro de hechizos ahora tiene una carpeta llamada target
que contiene versiones SQL simples de todos los modelos en Dune. Si ha realizado cambios en el repositorio antes de completar todas estas acciones, ahora puede estar seguro de que al menos el proceso de compilación funciona correctamente; si hay errores grandes, el proceso de compilación no se completará. Si no ha realizado cambios en el directorio de antemano, ahora puede comenzar a agregar, editar o eliminar archivos dentro del repositorio. Luego, simplemente ejecute dbt compile
nuevamente una vez que haya terminado con su trabajo en el directorio y pruebe las consultas SQL en lenguaje sencillo en dune.com.
Si ha realizado esta instalación en su máquina una vez, para volver a dbt, simplemente navegue hasta el repositorio del libro de hechizos, ejecute pipenv shell
y podrá ejecutar dbt compile
nuevamente.
Ahora tiene la capacidad de compilar las declaraciones del modelo dbt y las declaraciones de prueba en SQL simple. Esto le permite probar esas consultas en el entorno habitual de dune.com y, por lo tanto, debería conducir a una mejor experiencia al desarrollar hechizos. Al ejecutar las consultas, obtendrá inmediatamente comentarios sobre errores tipográficos, lógicos o discrepancias. Esto, a su vez, nos ayudará a desplegar estos hechizos más rápido y evitar posibles errores.
Hay un par de conceptos nuevos a considerar al realizar hechizos en dbt. Los más comunes que encontrarán los asistentes son referencias, fuentes, actualización y pruebas.
En el cuerpo de cada consulta, las tablas se denominan referencias, ex {{ ref('1inch_ethereum') }}
o fuentes, ex {{ source('ethereum', 'traces') }}
. Las referencias se refieren a otros modelos dbt y deben hacer referencia al nombre del archivo como 1inch_ethereum.sql
, incluso si el modelo en sí tiene un alias. Las fuentes se refieren a datos o tablas/vistas "sin procesar" no generadas por dbt. El uso de referencias y fuentes nos permite construir automáticamente árboles de dependencia.
Las fuentes y los modelos se definen en archivos esquema.yml donde se definen las pruebas y otros atributos.
La mejor práctica es agregar pruebas únicas y no nulas a la clave principal para cada modelo nuevo. De manera similar, se debe agregar una verificación de actualización a cada fuente nueva (aunque intentaremos no volver a probar la actualización si la fuente se usa en otro lugar).
Agregar descripciones a tablas y columnas ayudará a las personas a encontrar y utilizar sus tablas.
models :
- name : 1inch_ethereum
description : " Trades on 1inch, a DEX aggregator "
columns :
- name : tx_hash
description : " Table primary key: a transaction hash (tx_hash) is a unique identifier for a transaction. "
data_tests :
- unique
- not_null
sources :
- name : ethereum
freshness :
warn_after : { count: 12, period: hour }
error_after : { count: 24, period: hour }
tables :
- name : traces
Vea los enlaces a más documentos sobre dbt a continuación.
Para generar documentación y verla como un sitio web, ejecute los siguientes comandos:
dbt docs generate
dbt docs serve
Debe haber configurado dbt con dbt init
pero no necesita credenciales de base de datos para ejecutar estos comandos.Consulte la documentación de dbt docs para obtener más información sobre cómo contribuir a la documentación.
Como vista previa, puedes hacer cosas como: