Zebra عقدة كاملة
الخلاصة
- Zebra (
zebrad) هي عقدة Zcash الكاملة المكتوبة بلغة Rust والتي تحتفظ بها Zcash Foundation.
- تتحقق من الكتل والمعاملات، وتحافظ على حالة السلسلة، وتتواصل مع العقد الأخرى عبر شبكة الند للند.
- نفّذ Zebra وzcashd البروتوكول نفسه، وكان بإمكانهما التشغيل البيني. منذ إيقاف zcashd، يتولى Zebra دور الإجماع.
- طريقتان لتشغيلها: صورة Docker الخاصة بـ
zfnd/zebra، أو بناؤها من المصدر.
- العتاد الموصى به هو 4 أنوية CPU، وذاكرة RAM بسعة 16 GB، ومساحة قرص بسعة 300 GB. الحد الأدنى هو نواتان وذاكرة RAM بسعة 4 GB، مع مساحة القرص نفسها البالغة 300 GB.
الشرح الأساسي
Zebra هي أول عقدة Zcash مكتوبة بالكامل بلغة Rust. تعمل ضمن شبكة Zcash الند للند، حيث تتحقق من المعاملات وتبثها وتحافظ على حالة blockchain. إن وجود تطبيق مستقل ثانٍ يجعل البنية التحتية للشبكة أقل اعتمادًا على أي قاعدة شيفرة واحدة.
Zebra وzcashd
طُوّرت عقدة Zcash الأصلية، zcashd، بواسطة Electric Coin Company انطلاقًا من قاعدة شيفرة Bitcoin. كُتب Zebra من الصفر بلغة Rust، وهي لغة آمنة للذاكرة، مع التركيز على الأمان والكفاءة.
يتبع كلا التطبيقين البروتوكول نفسه، لذا كان بإمكانهما التواصل والتشغيل البيني. وصل zcashd إلى توقف نهاية الدعم في 18 يوليو 2026 ولم يعد يبدأ التشغيل، ما يترك Zebra وZakura كتطبيقي العقد المستخدمين. اطلع على العقد الكاملة للصورة الأوسع.
تشغيل Zebra
يمكنك تشغيل Zebra باستخدام صورة Docker، أو بناؤه يدويًا. يرجى الاطلاع على قسم متطلبات النظام.
استخدام Docker
لتشغيل أحدث إصدار ومزامنته مع الطرف الأخير، نفّذ الأمر التالي:
Code-highlight
docker run zfnd/zebra:latest
للحصول على التعليمات الكاملة، راجع وثائق Docker.
بناء Zebra
يتطلب بناء Zebra Rust وlibclang ومترجم C++.
- تأكد من تثبيت أحدث إصدار مستقر من Rust، إذ يُختبر Zebra معه حصريًا.
- تشمل تبعيات البناء الضرورية:
- libclang (المعروف أيضًا باسم libclang-dev أو llvm-dev)
- clang أو مترجم C++ آخر (مثل g++ لجميع المنصات أو Xcode لنظام macOS)
- protoc (مترجم Protocol Buffers) مع الخيار --experimental_allow_proto3_optional، الذي قُدّم في Protocol Buffers v3.12.0 (الصادر في 16 مايو 2020).
التثبيت والبدء
على Linux بمعمارية x86_64 أو aarch64 مع glibc 2.34 أو أحدث (Ubuntu 22.04+، Debian 12+، RHEL 9+، Amazon Linux 2023)، يمكنك تجاوز تبعيات البناء وتثبيت ملف ثنائي موقّع ومبني مسبقًا:
Code-highlight
cargo binstall zebrad
تُرفق الملفات الثنائية نفسها مع كل إصدار من GitHub باسم zebrad-<version>-<target>.tar.gz، ولكل منها مجموع تحقق SHA-256، وإثبات مصدر بناء Sigstore، وتوقيع Cosign. على المنصات الأقدم، استخدم صورة Docker أو ابنِ من المصدر.
للبناء من المصدر، احصل على الشيفرة وابنِ الملف الثنائي للإصدار:
Code-highlight
git clone https://github.com/ZcashFoundation/zebra.git
cd zebra
cargo build --release --bin zebrad
ابدأ العقدة باستخدام:
Code-highlight
target/release/zebrad start
دليل التثبيت: zebra.zfnd.org/user/install.html
الإعدادات والميزات الاختيارية
تهيئة ملف الإعدادات
- أنشئ ملف إعدادات باستخدام الأمر:
Code-highlight
zebrad generate -o ~/.config/zebrad.toml
- سيُوضَع الملف المُنشأ zebrad.toml في دليل التفضيلات الافتراضي لنظام Linux. راجع الوثائق لمعرفة المواقع الافتراضية البديلة لأنظمة التشغيل الأخرى.
إعداد أشرطة التقدم
- اضبط tracing.progress_bar في ملف zebrad.toml لعرض المقاييس الرئيسية في الطرفية باستخدام أشرطة التقدم. ملاحظة: توجد مشكلة معروفة قد تجعل تقديرات شريط التقدم كبيرة للغاية.
إعداد التعدين
- يمكن إعداد Zebra للتعدين عبر تحديد MINER_ADDRESS وتعيين المنفذ في Docker. يمكن العثور على مزيد من التفاصيل في وثائق دعم التعدين.
ميزات البناء المخصصة
-
وسّع وظائف Zebra بميزات Cargo إضافية مثل مقاييس Prometheus، ومراقبة Sentry، ودعم Elasticsearch التجريبي، وغير ذلك.
-
اجمع عدة ميزات بإدراجها كمعلمات للخيار --features أثناء التثبيت.
-
تُعطّل بعض ميزات التنقيح والمراقبة في إصدارات الإنتاج لتحسين الأداء. للاطلاع على القائمة الكاملة للميزات التجريبية وميزات المطورين، راجع وثائق API.
متطلبات النظام وإعداد الشبكة
المتطلبات الموصى بها
- CPU: 4 أنوية CPU
- RAM: 16 GB
- مساحة القرص: 300 GB من مساحة القرص المتاحة لتجميع الملفات الثنائية وتخزين حالة السلسلة المخزنة مؤقتًا
- الشبكة: اتصال شبكة بسرعة 100 Mbps مع حد أدنى قدره 300 GB للرفع والتنزيل شهريًا
الحد الأدنى من المتطلبات
- CPU: نواتان CPU
- RAM: 4 GB
- مساحة القرص: 300 GB من مساحة القرص المتاحة
قد تستغرق مجموعة اختبارات Zebra أكثر من ساعة لإكمالها، بحسب مواصفات جهازك. يمكن للأنظمة الأبطأ تجميع وتشغيل Zebra. ولم تُحدَّد حدود الأداء الدقيقة عبر الاختبار.
متطلبات القرص
- يستخدم Zebra نحو 300 GB لبيانات Mainnet المخزنة مؤقتًا و10 GB لبيانات Testnet المخزنة مؤقتًا. توقّع زيادة استخدام القرص بمرور الوقت.
- تُنظَّف قاعدة البيانات دوريًا، وكذلك عند الإيقاف أو إعادة التشغيل. تُثبَّت التغييرات باستخدام معاملات قاعدة البيانات. تُتراجع التغييرات غير المكتملة الناجمة عن إنهاء قسري أو ذعر في المرة التالية التي يبدأ فيها Zebra.
متطلبات الشبكة والمنافذ
- يستخدم Zebra منافذ TCP التالية للاتصالات الواردة والصادرة:
- 8233 لشبكة Mainnet
- 18233 لشبكة Testnet
- يؤدي إعداد Zebra بعنوان listen_addr محدد إلى الإعلان عن هذا العنوان للاتصالات الواردة. الاتصالات الصادرة مطلوبة للمزامنة؛ أما الاتصالات الواردة فاختيارية.
- يلزم الوصول إلى باذرات DNS الخاصة بـ Zcash عبر محلّل DNS لنظام التشغيل (عادةً المنفذ 53).
- يمكن لـ Zebra إجراء اتصالات صادرة على أي منفذ. يفضّل zcashd الأقران على المنافذ الافتراضية لتجنب استخدامه في هجمات DDoS على شبكات أخرى.
الاستخدام المعتاد لشبكة Mainnet
- المزامنة الأولية: يلزم تنزيل 300 GB للمزامنة الأولية، ومن المتوقع أن يزداد هذا الرقم.
- التحديثات المستمرة: رفع وتنزيل يومي يتراوح بين 10 MB و10 GB، بحسب أحجام معاملات المستخدم وطلبات الأقران.
- يبدأ Zebra مزامنة أولية عند كل تغيير في إصدار قاعدة البيانات الداخلية، ما قد يعني تنزيل السلسلة كاملةً أثناء ترقيات الإصدار.
- يُفضَّل الأقران الذين لا تتجاوز زمن استجابة الذهاب والإياب لديهم ثانيتين. إذا تجاوز زمن الاستجابة هذا الحد، افتح تذكرة في مستودع Zebra.
الأخطاء الشائعة
- تقدير مساحة القرص وفق احتياجات اليوم. حالة Mainnet المخزنة مؤقتًا تقترب بالفعل من 300 GB وتواصل النمو.
- توقع RPCs للمحفظة من
zebrad. توجد المفاتيح والأرصدة في Zallet، وهو برنامج منفصل.
- تشغيل
zebrad وحده وتوقع اتصال المحافظ الخفيفة. يتطلب هذا المسار مفهرسًا، إما lightwalletd أو Zaino.
- اعتبار إعادة المزامنة غير المتوقعة عطلًا. يؤدي تغيير إصدار قاعدة البيانات إلى حدوثها عن قصد.
صفحات ذات صلة
مزيد من التعلّم