Willkommen bei Spellbook. Wirke einen magischen Zauberspruch, um die Blockchain zu zähmen.
Spellbook ist Dunes Interpretationsebene, die für und von der Community entwickelt wurde.
Spellbook ist ein DBT-Projekt. Bei jedem Modell handelt es sich um eine einfache SQL-Abfrage mit geringfügigem syntaktischem Zucker (zur Erfassung von Abhängigkeiten und zur Erstellung der resultierenden Tabellen) und übernimmt einen kleinen Teil der Aufgabe, rohe und dekodierte Datensätze in interpretierbare Blockchain-Daten umzuwandeln.
Spellbook wurde für und von der Community erstellt. Sie können gerne alle Lücken schließen, die Sie finden, indem Sie eine PR senden, Probleme erstellen, um kleine Änderungen vorzuschlagen oder Fehler zu verfolgen, oder an Diskussionen teilnehmen, um die Zukunft dieses Projekts zu steuern.
Spellbook verfügt über viele bewegliche Teile und spezifische Designprinzipien, die zur Interpretationsebene der Daten von Dune beitragen. Um die Mitwirkenden möglichst effizient auf die Teilnahme vorzubereiten, enthält das Dokumentenverzeichnis eine breite Palette von Themen zur Beantwortung häufiger Fragen und zur Bereitstellung von Informationen darüber, warum das Repo so eingerichtet ist, wie es ist. Bitte lesen und beziehen Sie sich auf diesen Abschnitt, wenn Sie in Spellbook entwickeln und Fragen auftauchen. Das Dune-Team wird auch auf diese Dokumente verlinken, um häufig Fragen zu beantworten, das Bewusstsein zu stärken und die Kommunikation sauber zu halten.
Um Spellbook zu skalieren, hat das Repo Unterprojekte eingeführt, um komplexe DBT-Abstammungslinien ein wenig aufzuschlüsseln und Fokusbereiche sauber zu halten. Dies wird auch die nachgelagerte Orchestrierung unterstützen, um die Zaubersprüche in der Produktion aktuell zu halten. DBT-Unterprojekte in Spellbook sind einfach mehrere DBT-Projekte innerhalb eines Repos. Die aktuelle Struktur für Projekte:
dbt_subprojects
daily_spellbook
hourly_spellbook
dex
dex
oder dex_aggregator
leben, einschließlich vorgelagerter Zaubersprüche, die beim Aufbau der endgültigen Zaubersprüche auf Sektorebene helfennft
nft
-Schema leben, einschließlich vorgelagerter Zaubersprüche, die beim Aufbau der endgültigen Zaubersprüche auf Sektorebene helfensolana
tokens
Für weitere Informationen zu Teilprojekten besuchen Sie bitte diese Diskussion und stellen Sie dort Ihre Fragen.
Möchten Sie gleich mit der Arbeit beginnen? Folgen Sie der Anleitung hier, um loszulegen.
Sie benötigen kein komplexes lokales Setup, um Zauber gegen Dunes Engine zu testen. Sobald Sie eine PR senden, wird sie von unserer CI-Pipeline ausgeführt und getestet. Wenn der Auftrag erfolgreich abgeschlossen wird, können Sie die von Ihrer PR erstellten Daten direkt von dune.com abfragen.
Schreiben Sie einfach eine Abfrage, wie Sie es für jede unserer Live-Tabellen tun würden, und verwenden Sie das Testschema, um die von Ihrem PR erstellten Tabellen abzurufen.
test_schema.git_dunesql_{{commit_hash}}_{{table_name}}
Sie können die genauen Namen leicht finden, indem Sie sich die Protokolle der dbt slim ci
-Aktion unter dbt run initial model(s)
ansehen.
Bitte beachten Sie: Die in der CI-Pipeline erstellten Testtabellen sind ca. 24 Stunden lang vorhanden. Wenn Ihre Tabelle nicht vorhanden ist, lösen Sie eine erneute Ausführung der Pipeline aus und erstellen Sie die Testtabelle neu.
Wir nutzen Discord, um mit unserer Community in Kontakt zu treten. Besuchen Sie den Zauberbuchkanal auf Dune's Discord, wenn Sie Fragen haben oder um Hilfe bei einer bestimmten PR bitten möchten. Wir ermutigen Sie, durch praktisches Lernen zu lernen und unsere lebendige Community zu nutzen, um Ihnen den Einstieg zu erleichtern.
git config --global core.autocrlf true
. Weitere InformationenSie können die Videoversion davon ansehen, wenn Sie etwas nach unten scrollen.
Navigieren Sie in Ihrer CLI (Befehlszeilenschnittstelle) zum Zauberbuch-Repository.
cd userdirectorygithubspellbook
# Change this to wherever spellbook is stored locally on your machine.
Führen Sie mithilfe der Pip-Datei im Spellbook-Repository den folgenden Installationsbefehl aus, um eine Pipenv zu erstellen.
pipenv install
Wenn die Installation fehlschlägt, liegt ein wahrscheinlicher Grund darin, dass unser Skript nach einer statischen Python-Version sucht und die Wahrscheinlichkeit eines Fehlers für eine falsche Python-Version ziemlich hoch ist. Wenn dieser Fehler auftritt, überprüfen Sie Ihre Python-Version mit:
python --version
Verwenden Sie nun ein beliebiges Texteditorprogramm, um die Python-Version in der Pip-Datei im Spellbook-Verzeichnis in Ihre Python-Version zu ändern. Sie benötigen mindestens Python 3.9. Wenn Sie die Python-Version in der Pip-Datei geändert haben, führen Sie pipenv install
erneut aus.
Sie können nun die virtuelle Umgebung dieses Projekts aktivieren. Führen Sie den folgenden Befehl aus, um die Umgebung aufzurufen:
pipenv shell
Sie haben nun eine virtuelle Umgebung für dieses Projekt erstellt. Mehr über virtuelle Umgebungen können Sie hier lesen.
Im Spellbook-Repository gibt es mehrere DBT-Projekte, die sich im Stammverzeichnis befinden. Navigieren Sie je nach Anwendungsfall zum richtigen Projekt.
cd ../spellbook/dbt_subprojects/<subproject_name>/
Jedes Teilprojekt verfügt über eine eigene DBT-Projektdatei mit unterschiedlichen Konfigurationen. Sobald Ihre CLI zum richtigen Projektverzeichnis navigiert ist, führen Sie die folgenden Schritte aus:
Um das dbt-Projekt zu bereinigen
dbt clean
Um die DBT-Projektabhängigkeiten abzurufen, führen Sie Folgendes aus:
dbt deps
So kompilieren Sie Modelle in Roh-SQL, um sie in der Dune-App auszuführen und zu validieren:
dbt compile
Jedes Spellbook-Unterprojekt enthält eine Datei profiles.yml
, die dbt mitteilt, wie Befehle ausgeführt werden sollen. Das Profil befindet sich in jedem Unterprojektverzeichnis, wie hier. Dies sollte niemals geändert werden müssen, es sei denn, das Dune-Team hat dies absichtlich vorgenommen.
Da die Datei profiles.yml
im Stammverzeichnis jedes Unterprojekts gespeichert ist, müssen sich Benutzer in der Befehlszeile im Stammverzeichnis jedes Unterprojekts befinden, um dbt compile
wie erwartet auszuführen.
Die dbt-Kompilierung kompiliert die JINJA- und SQL-Vorlagen-SQL in einfaches SQL, das in der Dune-Benutzeroberfläche ausgeführt werden kann. Ihr Zauberbuchverzeichnis verfügt jetzt über einen Ordner namens target
der einfache SQL-Versionen aller Modelle in Dune enthält. Wenn Sie Änderungen am Repo vorgenommen haben, bevor Sie alle diese Aktionen abgeschlossen haben, können Sie jetzt sicher sein, dass zumindest der Kompilierungsprozess ordnungsgemäß funktioniert. Bei großen Fehlern wird der Kompilierungsprozess nicht abgeschlossen. Wenn Sie zuvor keine Änderungen am Verzeichnis vorgenommen haben, können Sie jetzt damit beginnen, Dateien im Repository hinzuzufügen, zu bearbeiten oder zu löschen. Führen Sie anschließend einfach dbt compile
erneut aus, sobald Sie mit Ihrer Arbeit im Verzeichnis fertig sind, und testen Sie die Klartext-SQL-Abfragen auf dune.com.
Wenn Sie diese Installation einmal auf Ihrem Computer durchgeführt haben, navigieren Sie zum Zurückkehren zu dbt einfach zum Spellbook-Repo, führen Sie pipenv shell
aus und Sie können dbt compile
erneut ausführen.
Sie haben jetzt die Möglichkeit, Ihre DBT-Modellanweisungen und Testanweisungen in einfaches SQL zu kompilieren. Dadurch können Sie diese Abfragen in der üblichen dune.com-Umgebung testen und sollten daher zu einem besseren Erlebnis bei der Entwicklung von Zaubersprüchen führen. Wenn Sie die Abfragen ausführen, erhalten Sie sofort Feedback zu Tippfehlern, logischen Fehlern oder Nichtübereinstimmungen. Dies wiederum wird uns helfen, diese Zauber schneller einzusetzen und mögliche Fehler zu vermeiden.
Bei der Erstellung von Zaubersprüchen in DBT sind einige neue Konzepte zu berücksichtigen. Die häufigsten Elemente, auf die Assistenten stoßen, sind Referenzen, Quellen, Aktualität und Tests.
Im Hauptteil jeder Abfrage werden Tabellen entweder als Referenzen, z. B. {{ ref('1inch_ethereum') }}
oder als Quellen, z. B. {{ source('ethereum', 'traces') }}
bezeichnet. Refs beziehen sich auf andere DBT-Modelle und sollten sich auf den Dateinamen wie 1inch_ethereum.sql
beziehen, auch wenn das Modell selbst einen Alias hat. Quellen beziehen sich auf „Rohdaten“ oder Tabellen/Ansichten, die nicht von dbt generiert wurden. Durch die Verwendung von Referenzen und Quellen können wir automatisch Abhängigkeitsbäume erstellen.
Quellen und Modelle werden in schema.yml-Dateien definiert, in denen Tests und andere Attribute definiert werden.
Die beste Vorgehensweise besteht darin, eindeutige Tests und Tests ungleich Null zum Primärschlüssel für jedes neue Modell hinzuzufügen. Ebenso sollte jeder neuen Quelle eine Frischeprüfung hinzugefügt werden (obwohl wir versuchen werden, die Frische nicht erneut zu testen, wenn die Quelle anderswo verwendet wird).
Durch das Hinzufügen von Beschreibungen zu Tabellen und Spalten können Benutzer Ihre Tabellen leichter finden und verwenden.
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
Unten finden Sie Links zu weiteren Dokumenten zu dbt.
Führen Sie die folgenden Befehle aus, um eine Dokumentation zu generieren und als Website anzuzeigen:
dbt docs generate
dbt docs serve
Sie müssen dbt mit dbt init
eingerichtet haben, benötigen aber keine Datenbankanmeldeinformationen, um diese Befehle auszuführen.Weitere Informationen dazu, wie Sie zur Dokumentation beitragen können, finden Sie in der Dokumentation zu dbt docs.
Als Vorschau können Sie beispielsweise Folgendes tun: