Добро пожаловать в книгу заклинаний. Произнесите волшебное заклинание, чтобы приручить блокчейн.
Книга заклинаний — это уровень интерпретации Dune, созданный сообществом и для него.
Spellbook — это проект dbt. Каждая модель представляет собой простой SQL-запрос с небольшим синтаксическим сахаром (предназначен для фиксации зависимостей и помощи в построении результирующих таблиц) и выполняет небольшую часть задачи по превращению необработанных и декодированных записей в интерпретируемые данные блокчейна.
Книга Spellbook создана сообществом и для него. Вы можете устранить любые обнаруженные пробелы, отправив PR, создав проблемы, предлагая небольшие изменения или отслеживая ошибки, или участвуя в обсуждениях, чтобы помочь определить будущее этого проекта.
Spellbook содержит множество движущихся частей и специфических принципов проектирования, которые способствуют интерпретации данных в Dune. Чтобы подготовить участников к наиболее эффективному участию, каталог документации содержит широкий набор тем, позволяющих ответить на распространенные вопросы и предоставить информацию о том, почему репозиторий настроен именно так. Пожалуйста, прочитайте и обратитесь к этому разделу при разработке в Spellbook, и у вас возникнут вопросы. Команда Dune также будет ссылаться на эти документы, чтобы часто отвечать на вопросы, чтобы помочь повысить осведомленность и поддерживать чистоту общения.
Чтобы масштабировать Spellbook, репозиторий ввел подпроекты, чтобы немного разъединить сложные линии передачи DBT и сохранить чистоту основных областей. Это также поможет последующей оркестровке поддерживать актуальность заклинаний в производстве. Подпроекты DBT в Spellbook — это просто несколько проектов DBT в одном репозитории. Текущая структура проектов:
dbt_subprojects
daily_spellbook
hourly_spellbook
dex
dex
или dex_aggregator
, включая восходящие заклинания, помогающие создавать заключительные заклинания уровня сектора.nft
nft
, включая восходящие заклинания, помогающие построить заключительные заклинания уровня сектора.solana
tokens
Для получения дополнительной информации о подпроектах посетите это обсуждение и задайте там любые вопросы.
Хотите приступить к работе? Чтобы начать, следуйте инструкциям здесь.
Вам не нужна сложная локальная настройка для проверки заклинаний на движке Dune. После того как вы отправите PR, наш конвейер CI запустит и протестирует его, и, если задание завершится успешно, вы сможете запросить данные, созданные вашим PR, непосредственно с сайта dune.com.
Просто напишите запрос, как если бы вы это сделали для любой из наших действующих таблиц, и используйте тестовую схему для получения таблиц, созданных вашим PR.
test_schema.git_dunesql_{{commit_hash}}_{{table_name}}
Вы можете легко найти точные имена, просматривая журналы действия dbt slim ci
в разделе dbt run initial model(s)
.
Обратите внимание: тестовые таблицы, созданные в конвейере CI, будут существовать примерно 24 часа. Если ваша таблица не существует, запустите конвейер еще раз и заново создайте тестовую таблицу.
Мы используем Discord для связи с нашим сообществом. Зайдите на канал книги заклинаний в Dune's Discord, чтобы задать вопросы или попросить помощи с конкретным PR. Мы призываем вас учиться на практике и использовать наше активное сообщество, чтобы помочь вам начать работу.
git config --global core.autocrlf true
. больше информацииВы можете посмотреть видеоверсию этого, если прокрутите немного вниз.
Перейдите к репозиторию книги заклинаний в CLI (интерфейс командной строки).
cd userdirectorygithubspellbook
# Change this to wherever spellbook is stored locally on your machine.
Используя pipfile, расположенный в репозитории книги заклинаний, выполните приведенную ниже команду установки, чтобы создать файл Pipenv.
pipenv install
Если установка не удалась, одной из вероятных причин является то, что наш скрипт ищет статическую версию Python, и вероятность ошибки из-за неправильной версии Python довольно высока. Если возникает эта ошибка, проверьте свою версию Python с помощью:
python --version
Теперь используйте любой текстовый редактор, чтобы изменить версию Python в pip-файле в каталоге книги заклинаний на вашу версию Python. У вас должен быть как минимум Python 3.9. Если вы изменили версию Python в pip-файле, снова запустите pipenv install
.
Теперь вы готовы активировать виртуальную среду этого проекта. Выполните следующую команду, чтобы войти в среду:
pipenv shell
Теперь вы создали виртуальную среду для этого проекта. Подробнее о виртуальных средах можно прочитать здесь.
В репозитории Spellbook есть несколько проектов dbt, расположенных в корневом каталоге. Перейдите к нужному проекту в зависимости от вашего варианта использования.
cd ../spellbook/dbt_subprojects/<subproject_name>/
Каждый подпроект имеет свой собственный файл проекта dbt с различными конфигурациями. Как только ваш CLI перейдет в правильный каталог проекта, выполните следующие шаги:
Чтобы очистить проект dbt
dbt clean
Чтобы получить зависимости проекта dbt, выполните:
dbt deps
Чтобы скомпилировать модели в необработанный SQL, запустить приложение Dune и проверить:
dbt compile
Каждый подпроект Spellbook включает файл profiles.yml
, который сообщает dbt, как выполнять команды. Профиль находится в каждом каталоге подпроекта, например здесь. Никогда не следует изменять это, если только это не сделано намеренно командой Dune.
Поскольку файл profiles.yml
хранится в корневом каталоге каждого подпроекта, пользователи должны находиться в корневом каталоге каждого подпроекта в командной строке, чтобы запустить dbt compile
, как ожидалось.
dbt compile скомпилирует шаблонный SQL JINJA и SQL в простой SQL, который можно будет выполнить в пользовательском интерфейсе Dune. В каталоге вашей книги заклинаний теперь есть папка с именем target
, содержащая простые SQL-версии всех моделей в Dune. Если вы внесли изменения в репозиторий до выполнения всех этих действий, теперь вы можете быть уверены, что, по крайней мере, процесс компиляции работает правильно; если есть большие ошибки, процесс компиляции не завершится. Если вы заранее не внесли изменения в каталог, теперь вы можете начать добавлять, редактировать или удалять файлы в репозитории. После этого просто запустите dbt compile
еще раз, как только вы закончите работу в каталоге, и протестируйте sql-запросы на простом языке на dune.com.
Если вы выполнили эту установку на своем компьютере один раз, чтобы вернуться в dbt, просто перейдите к репозиторию книги заклинаний, запустите pipenv shell
, и вы сможете снова запустить dbt compile
.
Теперь у вас есть возможность скомпилировать операторы модели dbt и тестовые операторы в простой SQL. Это позволит вам протестировать эти запросы в обычной среде dune.com и, следовательно, должно повысить удобство разработки заклинаний. Выполнение запросов немедленно предоставит вам информацию об опечатках, логических ошибках или несоответствиях. Это, в свою очередь, поможет нам быстрее применить эти заклинания и избежать любых потенциальных ошибок.
Есть несколько новых концепций, которые следует учитывать при создании заклинаний в dbt. Чаще всего мастера сталкиваются с ссылками, источниками, свежестью и тестами.
В теле каждого запроса таблицы упоминаются либо как ссылки, например {{ ref('1inch_ethereum') }}
либо как источники, например {{ source('ethereum', 'traces') }}
. Ссылки относятся к другим моделям dbt, и они должны ссылаться на имя файла, например 1inch_ethereum.sql
, даже если сама модель имеет псевдоним. Источники относятся к «необработанным» данным или таблицам/представлениям, не созданным dbt. Использование ссылок и источников позволяет нам автоматически строить деревья зависимостей.
Источники и модели определяются в файлах Schema.yml, где определяются тесты и другие атрибуты.
Лучше всего добавлять тесты unique и non_null к первичному ключу для каждой новой модели. Аналогично, проверка свежести должна быть добавлена к каждому новому источнику (хотя мы постараемся не проверять свежесть повторно, если источник используется где-то еще).
Добавление описаний к таблицам и столбцам поможет людям находить и использовать ваши таблицы.
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
См. ссылки на дополнительную документацию по dbt ниже.
Чтобы создать документацию и просмотреть ее как веб-сайт, выполните следующие команды:
dbt docs generate
dbt docs serve
Вы должны настроить dbt с помощью dbt init
, но для запуска этих команд вам не нужны учетные данные базы данных.Дополнительную информацию о том, как внести свой вклад в документацию, см. в документации dbt docs.
В качестве предварительного просмотра вы можете делать такие вещи, как: