فولنود Zebra
خلاصه
- Zebra (
zebrad) فولنود Zcash است که به زبان Rust نوشته شده و توسط Zcash Foundation نگهداری میشود.
- این نود بلوکها و تراکنشها را اعتبارسنجی میکند، وضعیت زنجیره را نگه میدارد و از طریق شبکهٔ همتابههمتا با نودهای دیگر ارتباط برقرار میکند.
- Zebra و zcashd پروتکل یکسانی را پیادهسازی میکردند و میتوانستند با یکدیگر تعامل داشته باشند. از زمان بازنشستگی zcashd، نقش اجماع بر عهدهٔ Zebra است.
- دو راه برای اجرای آن وجود دارد: ایمیج Docker مربوط به
zfnd/zebra، یا ساخت از روی کد منبع.
- سختافزار پیشنهادی 4 هستهٔ CPU، 16 GB رم و 300 GB فضای دیسک است. حداقل نیاز 2 هسته و 4 GB رم با همان 300 GB فضای دیسک است.
توضیح اصلی
Zebra نخستین نود Zcash است که بهطور کامل به زبان Rust نوشته شده است. این نود در شبکهٔ همتابههمتای Zcash قرار دارد و در آنجا تراکنشها را اعتبارسنجی و منتشر میکند و وضعیت بلاکچین را نگه میدارد. وجود یک پیادهسازی مستقل دوم باعث میشود زیرساخت شبکه کمتر به یک کدبیس واحد وابسته باشد.
Zebra و zcashd
نود اصلی Zcash، یعنی zcashd، توسط Electric Coin Company بر پایهٔ کدبیس بیتکوین توسعه داده شد. 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
- رم: 16 GB
- فضای دیسک: 300 GB فضای خالی دیسک برای کامپایل باینریها و ذخیرهٔ وضعیت کششدهٔ زنجیره
- شبکه: اتصال شبکهٔ 100 Mbps با حداقل 300 GB آپلود و دانلود در ماه
حداقل نیازمندیها
- CPU: 2 هستهٔ CPU
- رم: 4 GB
- فضای دیسک: 300 GB فضای خالی دیسک
اجرای مجموعهٔ آزمونهای Zebra ممکن است بسته به مشخصات دستگاه شما بیش از یک ساعت طول بکشد. سیستمهای کندتر نیز میتوانند Zebra را کامپایل و اجرا کنند. مرزهای دقیق عملکرد از طریق آزمایش تعیین نشدهاند.
نیازمندیهای دیسک
- Zebra حدود 300 GB برای دادههای کششدهٔ Mainnet و 10 GB برای دادههای کششدهٔ Testnet استفاده میکند. انتظار داشته باشید که میزان استفاده از دیسک با گذشت زمان افزایش یابد.
- پایگاه داده بهصورت دورهای و همچنین هنگام خاموش شدن یا راهاندازی مجدد پاکسازی میشود. تغییرات با استفاده از تراکنشهای پایگاه داده ثبت میشوند. تغییرات ناقصی که در اثر توقف اجباری یا panic ایجاد شدهاند، دفعهٔ بعد که Zebra راهاندازی شود بازگردانده میشوند.
نیازمندیهای شبکه و پورتها
- Zebra از پورتهای TCP زیر برای اتصالهای ورودی و خروجی استفاده میکند:
- 8233 برای Mainnet
- 18233 برای Testnet
- پیکربندی Zebra با یک listen_addr مشخص، این آدرس را برای اتصالهای ورودی اعلام میکند. اتصالهای خروجی برای همگامسازی لازم هستند؛ اتصالهای ورودی اختیاریاند.
- دسترسی به DNS seederهای Zcash از طریق DNS resolver سیستمعامل (معمولاً پورت 53) ضروری است.
- Zebra میتواند روی هر پورتی اتصال خروجی برقرار کند. zcashd همتایان روی پورتهای پیشفرض را ترجیح میدهد تا از سوءاستفاده از آن برای حملات DDoS به شبکههای دیگر جلوگیری شود.
میزان معمول استفاده از شبکه در Mainnet
- همگامسازی اولیه: برای همگامسازی اولیه 300 GB دانلود لازم است و انتظار میرود این رقم افزایش یابد.
- بهروزرسانیهای مداوم: آپلود و دانلود روزانه از 10 MB تا 10 GB، بسته به اندازهٔ تراکنشهای کاربران و درخواستهای همتایان.
- Zebra با هر تغییر نسخهٔ داخلی پایگاه داده یک همگامسازی اولیه را آغاز میکند که ممکن است به معنای دانلود کامل زنجیره در هنگام ارتقای نسخه باشد.
- همتایانی با تأخیر رفتوبرگشت 2 ثانیه یا کمتر ترجیح داده میشوند. اگر تأخیر از این آستانه بیشتر شد، یک تیکت در مخزن Zebra باز کنید.
اشتباهات رایج
- تعیین اندازهٔ دیسک بر اساس نیاز امروز. وضعیت کششدهٔ Mainnet هماکنون نزدیک به 300 GB است و همچنان رشد میکند.
- انتظار RPCهای کیفپول از
zebrad. کلیدها و موجودیها در Zallet قرار دارند که برنامهای جداگانه است.
- اجرای
zebrad بهتنهایی و انتظار اتصال کیفپولهای سبک. این مسیر به یک ایندکسر نیاز دارد، یا lightwalletd یا Zaino.
- خطا تلقی کردن یک همگامسازی مجدد غیرمنتظره. تغییر نسخهٔ پایگاه داده طبق طراحی باعث آن میشود.
صفحات مرتبط
- فولنودها - کاری که یک فولنود انجام میدهد و پیادهسازیهای موجود
- نود Zakura - نودی منشعب از Zebra با همگامسازی سریعتر و هرس دادهها
- Zaino - ایندکسر Rust که به کیفپولهای سبک سرویس میدهد
- نودهای Lightwallet - سرورهایی که کیفپولهای سبک از آنها پرسوجو میکنند
- راهنمای استخراج Zcash - استخراج با استفاده از نود خودتان
یادگیری بیشتر