Zebra Повний вузол
Коротко
- Zebra (
zebrad) — це повний вузол Zcash, написаний мовою Rust і підтримуваний Zcash Foundation.
- Він перевіряє блоки й транзакції, зберігає стан ланцюга та взаємодіє з іншими вузлами через однорангову мережу.
- Zebra і zcashd реалізовували той самий протокол і могли взаємодіяти. Після припинення підтримки zcashd, Zebra виконує роль у досягненні консенсусу.
- Є два способи його запустити: Docker-образ
zfnd/zebra або зібрати з вихідного коду.
- Рекомендоване обладнання: 4 ядра CPU, 16 ГБ RAM і 300 ГБ дискового простору. Мінімум — 2 ядра та 4 ГБ RAM із тими самими 300 ГБ дискового простору.
Основне пояснення
Zebra — це перший вузол Zcash, повністю написаний мовою Rust. Він працює в одноранговій мережі Zcash, де перевіряє та поширює транзакції й зберігає стан блокчейну. Наявність другої незалежної реалізації робить мережеву інфраструктуру менш залежною від однієї кодової бази.
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 за допомогою додаткових функцій Cargo, таких як метрики Prometheus, моніторинг Sentry, експериментальна підтримка Elasticsearch тощо.
-
Поєднуйте кілька функцій, перелічуючи їх як параметри прапорця --features під час встановлення.
-
Деякі функції налагодження та моніторингу вимкнені в релізних збірках для оптимізації продуктивності. Повний список експериментальних функцій і функцій для розробників дивіться в документації API.
Системні вимоги та конфігурація мережі
Рекомендовані вимоги
- CPU: 4 ядра CPU
- RAM: 16 ГБ
- Дисковий простір: 300 ГБ доступного дискового простору для компіляції двійкових файлів і зберігання кешованого стану ланцюга
- Мережа: мережеве з’єднання 100 Мбіт/с із мінімум 300 ГБ вивантажень і завантажень на місяць
Мінімальні вимоги
- CPU: 2 ядра CPU
- RAM: 4 ГБ
- Дисковий простір: 300 ГБ доступного дискового простору
Набір тестів Zebra може виконуватися понад годину залежно від характеристик вашої машини. Повільніші системи можуть зібрати та запустити Zebra. Точні межі продуктивності не були встановлені шляхом тестування.
Вимоги до диска
- Zebra використовує приблизно 300 ГБ для кешованих даних Mainnet і 10 ГБ для кешованих даних Testnet. Очікуйте, що використання диска зростатиме з часом.
- База даних очищується періодично, а також під час вимкнення чи перезапуску. Зміни фіксуються за допомогою транзакцій бази даних. Незавершені зміни, спричинені примусовим завершенням роботи або панікою, буде скасовано під час наступного запуску Zebra.
Вимоги до мережі та порти
- Zebra використовує такі TCP-порти для вхідних і вихідних з’єднань:
- 8233 для Mainnet
- 18233 для Testnet
- Налаштування Zebra із певним listen_addr рекламує цю адресу для вхідних з’єднань. Вихідні з’єднання потрібні для синхронізації; вхідні з’єднання необов’язкові.
- Потрібен доступ до DNS-сідерів Zcash через DNS-резолвер ОС (зазвичай порт 53).
- Zebra може встановлювати вихідні з’єднання через будь-який порт. zcashd надає перевагу одноранговим вузлам на типових портах, щоб уникнути використання для DDoS-атак на інші мережі.
Типове використання мережі Mainnet
- Початкова синхронізація: для початкової синхронізації потрібно завантажити 300 ГБ, і очікується, що цей обсяг зростатиме.
- Поточні оновлення: щоденні вивантаження та завантаження від 10 МБ до 10 ГБ залежно від розмірів транзакцій користувачів і запитів однорангових вузлів.
- Zebra починає початкову синхронізацію за кожної зміни версії внутрішньої бази даних, що може означати повне завантаження ланцюга під час оновлення версії.
- Перевага надається одноранговим вузлам із затримкою в обидва боки 2 секунди або менше. Якщо затримка перевищує цей поріг, відкрийте заявку в репозиторії Zebra.
Поширені помилки
- Розрахунок дискового простору лише на сьогоднішні потреби. Кешований стан Mainnet уже займає близько 300 ГБ і продовжує зростати.
- Очікування RPC гаманця від
zebrad. Ключі та баланси знаходяться в Zallet, окремій програмі.
- Запуск лише
zebrad з очікуванням, що легкі гаманці підключатимуться. Для цього потрібен індексатор: lightwalletd або Zaino.
- Сприйняття неочікуваної повторної синхронізації як помилки. Зміна версії бази даних навмисно запускає її.
Пов’язані сторінки
Подальше навчання