مرحبا بكم في Spellbook. قم بإلقاء تعويذة سحرية لترويض blockchain.
Spellbook هي طبقة الترجمة الفورية لـ Dune، والتي تم تصميمها من أجل المجتمع وبواسطته.
Spellbook هو مشروع dbt. كل نموذج عبارة عن استعلام SQL بسيط مع سكر نحوي بسيط (يهدف إلى التقاط التبعيات والمساعدة في بناء الجداول الناتجة)، ويقوم بجزء صغير من مهمة تحويل السجلات الأولية والمفككة إلى بيانات blockchain قابلة للتفسير.
تم تصميم Spellbook من أجل المجتمع ومن خلاله، فنحن نرحب بك لسد أي ثغرات تجدها عن طريق إرسال العلاقات العامة، أو إنشاء مشكلات لاقتراح تغييرات صغيرة أو تتبع الأخطاء، أو المشاركة في المناقشات للمساعدة في توجيه مستقبل هذا المشروع.
يحتوي 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.
ما عليك سوى كتابة استعلام كما تفعل لأي من جداولنا المباشرة، واستخدام مخطط الاختبار لجلب الجداول التي أنشأها مسؤول العلاقات العامة.
test_schema.git_dunesql_{{commit_hash}}_{{table_name}}
يمكنك العثور على الأسماء الدقيقة بسهولة من خلال النظر في السجلات من إجراء dbt slim ci
، ضمن dbt run initial model(s)
.
يرجى ملاحظة: أن جداول الاختبار المضمنة في مسار CI ستكون موجودة لمدة 24 ساعة تقريبًا. إذا لم يكن الجدول موجودًا، فقم بتشغيل المسار مرة أخرى وأعد إنشاء جدول الاختبار.
نحن نستخدم Discord للتواصل مع مجتمعنا. توجه إلى قناة كتاب الإملاء على Dune's Discord لطرح الأسئلة أو لطلب المساعدة بشأن علاقات عامة معينة. نحن نشجعك على التعلم من خلال الممارسة، والاستفادة من مجتمعنا النابض بالحياة لمساعدتك على المضي قدماً.
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 --version
استخدم الآن أي برنامج محرر نصوص لتغيير إصدار python في ملف pipfile داخل دليل كتاب الإملاء إلى إصدار python الخاص بك. يجب أن يكون لديك على الأقل بيثون 3.9. إذا قمت بتغيير إصدار python في ملف pipfile، فقم بتشغيل pipenv install
مرة أخرى.
أنت الآن جاهز لتنشيط البيئة الافتراضية لهذا المشروع. قم بتشغيل الأمر التالي للدخول إلى البيئة:
pipenv shell
لقد قمت الآن بإنشاء بيئة افتراضية لهذا المشروع. يمكنك قراءة المزيد عن البيئات الافتراضية هنا.
يوجد ضمن Spellbook repo العديد من مشاريع 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 بتجميع SQL القالب JINJA و SQL إلى SQL عادي والذي يمكن تنفيذه في Dune UI. يحتوي دليل كتاب الإملاء الآن على مجلد باسم 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 حيث يتم تعريف الاختبارات والسمات الأخرى.
أفضل الممارسات هي إضافة اختبارات فريدة واختبارات غير فارغة إلى المفتاح الأساسي لكل نموذج جديد. وبالمثل، يجب إضافة فحص الحداثة إلى كل مصدر جديد (على الرغم من أننا سنحاول عدم إعادة اختبار الحداثة إذا تم استخدام المصدر في مكان آخر).
ستساعد إضافة أوصاف إلى الجداول والأعمدة الأشخاص في العثور على جداولك واستخدامها.
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 لمزيد من المعلومات حول كيفية المساهمة في التوثيق.
كمعاينة، يمكنك القيام بأشياء مثل: