Инструкция по настройке узла Zcash Zebra
Все новости про Zcash в социальной сети «X» (бывший Twitter) | Интересные видео про Zcash на YouTube
Статья актуальна на 31 октября 2024
Автор: ruzcash
История узла Zebra
Zebra — это нода (узел) для присоединения к одноранговой сети Zcash, которая полностью написана на языке программирования Rust. Каждый пользователь, установивший и запустивший собственный узел Zcash, помогает повысить устойчивость сети за счёт проверки и широковещательной передачи транзакций, а также более распределенного поддержания состояния блокчейна Zcash. Мировое распределение узлов — это основа любой децентрализованной сети.
Первоначальный узел Zcash назван Zcashd
и разработан компанией Electric Coin Company как форк исходной ноды Bitcoin, которая была написана на языке программирования C++. Zebra стала независимой реализацией узла Zcash, разработанной с нуля с использованием безопасного для оперативной памяти языка программирования Rust. Поскольку Zcashd
и Zebrad
реализуют один и тот же протокол, они непосредственно взаимодействуют друг с другом как единое целое.
14 августа 2023 года было объявлено, что узлы на базe Zebra получат полный приоритет в разработке:
«Рады сообщить, что мы договорились о переносе основной работы по протоколу Zcash с zcashd на Zebra!
Наши команды будут сотрудничать, чтобы определить, какую функциональность необходимо добавить в Zebra для решения задач и поддержки ключевых пользователей, переходящих на Zebra. ECC продолжит модернизацию основных протоколов Zcash, таких как реализация доказательства доли (PoS), используя Zebra, и мы продолжим поддержку zcashd во время перехода, который займет неопределенное количество времени. Мы считаем, что этот шаг ускорит инновации и подтвердит суперспособность Zcash: решение сообщества финансировать разработку Zcash несколькими независимыми командами.»
@ElectricCoinCo
Полный переход на узлы Zebra заявлен на 2025 год после активации NU7.
Основная причина по которой это происходит озвучивалась разработчиками ранее. Язык программирования #Rust, на котором написана Zebra, обладает характеристиками и эффективностью, позволяющими обновляться и работать быстрее чем zcashd, написанный на C++ (zcashd — наследие Bitcoin).
Zebra вносит свой вклад для сети Zcash:
- Улучшенная производительность: поскольку Zebra была реализована с нуля асинхронным и параллельным способом, в настоящее время она работает быстрее, чем Zcashd.
- Охват аудитории: с развертыванием нового узла появится больше разработчиков, которые смогут реализовать различные функции для сети Zcash.
- Безопасность консенсуса: при независимой реализации обнаружение ошибок консенсуса может происходить быстрее, что снижает риск расщепления консенсуса с последующей реструктуризацией сети.
- Безопасность спецификации протокола: с несколькими реализациями узлов гораздо проще заметить ошибки и неоднозначность в спецификации протокола.
- Аппаратная безопасность: поскольку он разработан на безопасном для памяти языке (Rust) и с меньшей вероятностью будет подвержен ошибкам безопасности, связанным с безопасностью памяти, которые могут поставить под угрозу программную среду, в которой он работает.
Zcash Foundation: «Альтернативные варианты ноды помогают разработчикам быстро обнаруживать ошибки, связанные с реализацией, которые могут вызвать проблемы, связанные с поддержанием консенсуса в сети. Наличие нескольких реализаций узлов также привлекает к Zcash более широкую аудиторию разработчиков, которые могут начать вносить свой вклад на языке, с которым они более знакомы. Наша реализация zcashd позволяет разработчикам Rust легко начать разработку Zcash и вносить в нее свой вклад.»
Стоит отметить, что программисты в блокчейн-сообществе убеждены в необходимости создания дублирующих сборок исполняемых файлов протоколов сети. Так, например, сеть Ethereum имеет целых пять вариаций клиентов для сборки узлов на различных языках программирования.
Благодаря сборке Zebra у пользователей и разработчиков появляется новый способ взаимодействия с экосистемой Zcash. По состоянию на 26 октября 2024 доступен релиз Zebra 2.0.1 (полнофункциональный узел, аналогичный Zcashd версии 6.0.0) в соответствующем репозитории.
Ознакомиться с документацией по сборке узла на Zebra можно в Zebra Book.
Как установить ноду Zebra?
Системные требования
Рекомендуемые требования для компиляции и запуска zebrad
:
- 4+ ядерный процессор
- 16+ ГБ оперативной памяти
- Более 300 ГБ свободного места на диске для создания двоичных файлов и хранения окончательного состояния
- Сетевые подключения более 100 Мбит/с с пропускной способностью 300 ГБ в месяц.
Zebrad
может нормально строиться и работать и на менее быстрых системах — точные минимальные пределы пока не определены. Но я запустил узел на Raspberry Pi 5 8 Gb, повесив на него NVMe SSD на 512Gb.
Список поддерживаемых операционных систем:
- Windows Server (2019, 2022)
- Linux (Debian 11)
- Ubuntu (GitHub ubuntu-latest)
- macOS (GitHub macos-latest)
Полная установка Zebra из исходников
Инструкция актуальна по состоянию на 26 октября 2024 года для версии Zebra 2.0.1. Всё очень быстро меняется, и из-за большого количества зависимостей в сборках хорошо работающие ранее инструкции могут не работать в момент, когда вы ими захотите руководствоваться. Смотрите ошибки и официальное руководство (которое тоже бывает не успевает) и ChatGPT в помощь.
Все команды выполняем в терминале (командной строке). Инструкция подойдёт для Linux-подобных систем и MacOS, то есть для всего где есть оболочка Bash (и совместимые). В Windows это тоже можно реализовать, но это тема другой передачи.
1. Установка необходимых зависимостей.
Вам нужно установить несколько пакетов для компиляции Zebra. В терминале выполняем команды:
sudo apt update
sudo apt install build-essential pkg-config libssl-dev cmake
2. Установка Rust.
Zebra написана на языке программирования Rust, поэтому вам нужно установить Rust:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
По ходу инсталяции пакетов отвечаем на запросы «y» (выбрать настройки Default — пункт 1).
Инструкция приведена на официальном сайте Rust. На практике в этом месте происходит небольшой «затык». Если в вашей ОС уже установлен Rust версии ниже 1.81 (минимальная для Zebra 2.0.1), то для того чтобы сборка Zebra прошла успешно, необходимо будет деинсталлировать старые версии Rust. Даже при том, что я зафиксировал необходимую версию по умолчанию, при сборке я продолжал получать ошибку пока не удалил версию из apt
. Например, в текущем пакете apt
используется версия 1.63.0. Для её удаления используйте команду:
sudo apt remove rustc cargo
и rustup uninstall <версия>
(здесь указывайте ту версию, на которую ссылается ошибка при компиляции). Например, для версии 1.63.0:sudo apt remove rustc cargo
и rustup uninstall 1.63.0
Для просмотра просмотра установленных версий (список игнорирует версию в apt
):
rustc --version
и rustup show
.
Чтобы быстро обновить Rust до последней версии, можно использовать встроенную команду rustup update
. Если не получается этой командой (как у меня), то
rustup update --force
или вообще переустановите:
rustup self uninstall
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Удаление ненужных версий осуществляется командой:
rustup toolchain uninstall <версия>
Установка версии по умолчанию в целом и для конкретной папки назначения через команды:
rustup default <версия>
rustup override set <версия>
(нужно находится в папке назначения /zebra).
3. Клонирование репозитория и сборка стандартной Zebra.
Используйте команду mkdir
для создания папки в нужном месте. Если вам нужно создать папку /zebra
в корневом каталоге (/
), вам потребуются права суперпользователя:
sudo mkdir /zebra
Чтобы избежать ошибок далее, определяем права супер-пользователя для папки /zebra
. Например, для пользователя «ruzcash» строчка будет выглядеть так:
sudo chown -R ruzcash:ruzcash /zebra
Клонируйем репозиторий Zebra в созданную папку:
git clone https://github.com/ZcashFoundation/zebra.git zebra
После этого заходим в папку и проверяем свежий релиз (на примере 2.0.1):
cd /zebra
git switch main
или git checkout origin
(главная ветка)
Если все необходимые зависимости были установлены правильно, вы сможете собрать Zebra с помощью cargo
, пакетного менеджера Rust.
Для установки Zebra со стандартным набором функций выполняем команду:cargo build --release --bin zebrad
Если в процессе сборки возникнут ошибки, то необходимо вернуться в пункты 1 и 2, чтобы исправить исправить ошибки связанные с установленными зависимостями. Например, обновить версию Rust.
4. Обновление узла
Новые версии выходят достаточно часто и чтобы иметь на борту свежую Зебру, её нужно обновлять командой:cargo clean
(команда очищает предыдущую сборку)
cargo install --git https://github.com/ZcashFoundation/zebra --tag v2.0.1 zebrad
cargo build --release --bin zebrad
Замените номер версии на актуальный.
5. Добавление бинарного файла в PATH.
После компиляции бинарные файлы будут находиться в каталоге target/release/
. Добавим их в ваш PATH вместе с каталогом /zebra/
, чтобы наши команды для zebrad
были доступны из любого места, а не только из каталогов расположения. Для этого откройте файл конфигурации оболочки в текстовом редакторе. Чаще всего это файл ~/.bashrc
или ~/.profile
. Например, чтобы открыть файл .bashrc
нужно выполнить:
sudo nano ~/.bashrc
Добавьте строчки export
в конец файла:
export PATH=$PATH:/<полный путь до папки zebra>/zebra/target/release/
export PATH=$PATH:/<полный путь до папки zebra>/zebra/
Чтобы посмотреть <полный путь до папки zebra>
выполните команду pwd
Сохраните файл и закройте редактор (Ctrl + O
, затем Enter
, и Ctrl + X
для выхода из nano
).
Примените изменения сразу, выполнив команду:
source ~/.bashrc
6. Проверка установки.
Убедитесь, что zebrad
готов к работе:
zebrad --version
Если выводится версия, это значит, что zebrad
установлен правильно.
7. Запускаем Zebra.
zebrad start
Если всё ОК, пойдёт поток кода синхронизации узла с блокчейном Zcash. Я рекомендую использовать настройки параметров ноды Zebra по умолчанию до полной синхронизации узла с текущим блоков блокчейна Zcash.
Альтернативный метод установки указан здесь.
Ещё есть вариант установки в изолированной среде Docker.
Раздел документации с помощью по запуску Zebra здесь.
Настройка файла zebra.toml
Итак, если узел успешно синхронизирован, то можно приступить к настройке его параметров. Это делать совсем не обязательно, если вас устраивают параметры по умолчанию. Но в моём случае, я выделил под узел отдельный Raspberry Pi 5 8Gb с установленной Raspberry OS 64 Bit и мне захотелось изучить возможности кастомной настройки в целях оптимизации. Также, возможно, что вам понадобится узел для взаимодействия с собственными клиентами.
Примечание: системное использование собственного узла для отправки транзакций без VPN или Tor существенно снижает ваш уровень конфиденциальности. Ознакомиться с другими полезными рекомендациями опытных людей вы можете здесь.
В Zebra для собственных пользовательских настроек существует файл настройки zebra.toml
. Он позволяет использовать желаемые параметры запуска узла. Если сравнивать с узлами Zcashd
, то это аналог zcashd.conf
, но с иной структурой и командами.
1. Генерация конфигурационного файла:
Изначально пользовательского конфигурационного файла не существует и чтобы его сгенерировать выполните команду:
zebrad generate
--output-file zebra.toml
Вы можете указывать собственные названия файла и иметь несколько конфигураций.
Директория по умолчанию для конфигурации zebrad
зависят от платформы, а возможные варианты опубликованы здесь. Свой файл конфигурации я разместил в каталоге /zebra/target/release/
вместе с загрузочным файлом.
2. Конфигурируем настройки в zebra.toml
Файл конфигурации zebra.toml
включает в себя множество параметров, которые позволяют настраивать работу узла Zebra для различных задач, таких как синхронизация, работа с сетью, управление мемпулом, логирование и многое другое. Ниже приведено детальное описание ключевых разделов и параметров.
Открыть файл для редактирования можно командой:
sudo nano zebra.toml
Для начала приведу инструкцию разработчиков из файла zebra.toml
и список всех параметров.
Инструкция: «Этот файл можно использовать как шаблон для пользовательских конфигураций.
Неуказанные параметры используют значения по умолчанию. Необязательные параметры по умолчанию имеют значение < None >
.
Этот файл сгенерирован как пример, используя текущие параметры по умолчанию для Zebra. Вам следует указывать только те параметры, которые вы хотите сохранить, а остальные удалить.»
Пояснение ключевых параметров
Файл конфигурации является программным кодом с чёткой структурой. В нём не может быть синтаксических ошибок. В противном случае узел не запустится до их исправления. Параметры строго прописаны и имеют типы данных. Например, это может быть тип Boolean
, который ждёт от параметра содержания либо < true >
либо < false >
. А тип данных Integer
ожидает числовое значение. Пример структуры файла я укажу ниже.
- [Раздел-1]:
параметр-1 = значение
# пояснениепараметр-2 = значение
# пояснение
- [Раздел-2]
параметр-1 = значение
# пояснениепараметр-2 = значение
# пояснение
Список параметров:
1. [consensus]
checkpoint_sync
: Включает синхронизацию через контрольные точки до активации Sapling, что значительно ускоряет начальную синхронизацию цепи. (Тип: Boolean).debug_skip_parameter_preload
: Пропускает загрузку и проверку параметров Groth16. Этот параметр используется только в целях разработки. (Тип: Boolean).
2. [mempool]
eviction_memory_time
: Устанавливате интервал времени, в течение которого транзакция остаётся в мемпуле, прежде чем быть удалённой. (Тип: Duration, например, ‘1h’).tx_cost_limit
: Определяет общий лимит стоимости всех транзакций, которые могут находиться в мемпуле. (Тип: Integer).
3. [metrics]
enabled
: Включение метрик для мониторинга работы узла. Это полезно для анализа производительности с помощью инструментов, таких как Prometheus или Grafana. (Тип: Boolean).endpoint_addr
: Адрес, на котором доступны метрики. (Тип: String, например, ‘127.0.0.1:9999’).
4. [mining]
- Раздел зарезервирован для параметров, связанных с майнингом, однако в текущей версии Zebra примеры конкретных параметров отсутствуют.
5. [network]
crawl_new_peer_interval
: Интервал между каждой попыткой обнаружить новые пиры. (Тип: Duration, например, ‘1m 1s’).initial_mainnet_peers
: Список начальных пиров для основной сети Zcash. (Тип: Массив строк).initial_testnet_peers
: Список начальных пиров для тестовой сети Zcash. (Тип: Массив строк).listen_addr
: Локальный адрес и порт, на которых узел принимает входящие подключения. (Тип: String, например, ‘0.0.0.0:8233’).network
: Определяет, какую сеть использовать — основную или тестовую («Mainnet» или «Testnet»). (Тип: String).peerset_initial_target_size
: Целевое количество пиров в начальном наборе. (Тип: Integer).max_connections_per_ip
: (Опционально) Ограничивает максимальное количество подключений на один IP-адрес. (Тип: Integer).cache_dir
: (Опционально) Включает или задаёт директорию для кеша. (Тип: Boolean или String).
6. [rpc]
debug_force_finished_sync
: Принудительно завершает синхронизацию. Этот параметр предназначен для использования только в разработке. (Тип: Boolean).parallel_cpu_threads
: Количество потоков CPU, которые будут использоваться для параллельных операций в RPC-интерфейсе. (Тип: Integer).
7. [state]
cache_dir
: Указывает директорию для хранения кеша состояния узла. (Тип: String).delete_old_database
: Определяет, нужно ли удалять старую базу данных состояния при запуске узла. (Тип: Boolean).ephemeral
: Если установлено вtrue
, Zebra не сохраняет состояние цепочки между запусками. (Тип: Boolean).
8. [sync]
checkpoint_verify_concurrency_limit
: Максимальное количество одновременно проверяемых контрольных точек. (Тип: Integer).download_concurrency_limit
: Максимальное количество одновременно загружаемых блоков. (Тип: Integer).full_verify_concurrency_limit
: Максимальное количество одновременно проверяемых блоков после контрольных точек. (Тип: Integer).parallel_cpu_threads
: Количество потоков CPU, которые будут использоваться для параллельной обработки операций в службе синхронизации. (Тип: Integer).
9. [tracing]
progress_bar
: управляет отображением индикатора прогресса при выполнении задач, таких как синхронизация узла. Этот индикатор может быть полезен для визуального отслеживания статуса загрузки блоков, проверки контрольных точек и других операций, связанных с синхронизацией блокчейна. (Тип: String).buffer_limit
: Максимальный размер буфера для трассировки. (Тип: Integer).force_use_color
: Принудительное использование цвета в выводе логов. (Тип: Boolean).use_color
: Включает использование цвета в логах, если терминал поддерживает эту функцию. (Тип: Boolean).use_journald
: Включает логирование в systemd journal. (Тип: Boolean).
10. [mining]
debug_like_zcashd
: Этот параметр используется для отладки. Он предназначен для того, чтобы поведение узла Zebra при отладке напоминало работу узлаzcashd
, который поддерживает майнинг. Значение по умолчанию:false
(Тип: Boolean).
Полный список разделов и параметров можно найти здесь в описании API.
Особое внимание уделите параметру progress_bar
, который позволяет контролировать уровень детализации информации о прогрессе работы узла Zebra, что полезно для мониторинга синхронизации или отладки:
- [tracing]
- progress_bar = «summary» # Показывать краткое резюме синхронизации
Значения:
"disabled"
: Полностью отключает прогресс-бар. В этом случае никакой информации о прогрессе не будет отображаться. Установлен по умолчанию."summary"
: Отображает краткое резюме прогресса синхронизации, включая подключённых пиров, количество блоков и транзакций."detailed"
: Показывает подробную информацию о процессе, включая синхронизацию блоков, вилки цепи и другие детали.
Данные прогресс-бара при значении "summary"
дают основную информацию:
- Количество пиров, к которым подключён узел Zebra.
- Состояние синхронизации цепочки — насколько далеко узел продвинулся в процессе синхронизации блоков.
- Недавние вилки цепи, которые отслеживает Zebra.
- Количество транзакций в мемпуле — сколько транзакций ожидают обработки.
А так выглядит полно-форматная версия прогресс-баров:
Запись в блоге разработчика прогресс-баров здесь.
Эти параметры позволяют вам настроить поведение узла Zebra в зависимости от ваших потребностей. Можно изменить настройки для улучшения производительности, настройки сети, управления памятью, а также для интеграции с системами мониторинга и логирования. Файл конфигурации является гибким инструментом для кастомизации работы узла Zcash.
Мой вариант файла настройки zebra.toml
У меня пока нет полного понимания о том, как влияет на производительность узла каждый из параметров в контексте конкретной системы. Поэтому файл настройки, который я приведу, является скорее вариантом ознакомления, а не рекомендованным к использованию. Я оставил некоторые комментарии, а обсудить параметры вы можете на форуме сообщества Zcash.
[consensus]
# Включение синхронизации через контрольные точки для ускорения
checkpoint_sync = true
[mempool]
# Настройка очистки памяти мемпула
eviction_memory_time = "1h"
tx_cost_limit = 80000000
[metrics]
# Включение метрик для мониторинга
endpoint_addr = "127.0.0.1:9999"
enabled = true
[mining]
# Дебаг для майнинга, аналогично работе zcashd
debug_like_zcashd = true
[network]
# Основные настройки сети
cache_dir = true
crawl_new_peer_interval = "1m 1s"
initial_mainnet_peers = [
"dnsseed.z.cash:8233",
"dnsseed.str4d.xyz:8233",
"mainnet.seeder.zfnd.org:8233",
"mainnet.is.yolo.money:8233",
]
initial_testnet_peers = [
"dnsseed.testnet.z.cash:18233",
"testnet.seeder.zfnd.org:18233",
"testnet.is.yolo.money:18233",
]
listen_addr = "0.0.0.0:8233"
max_connections_per_ip = 1
network = "Mainnet"
peerset_initial_target_size = 25
[rpc]
# Параметры RPC (удалённые вызовы процедур)
debug_force_finished_sync = false
[state]
# Настройки состояния
cache_dir = "/home/ruzcash/.cache/zebra"
delete_old_database = true
ephemeral = false # Использование постоянного хранилища данных
[sync]
# Настройки синхронизации блоков
checkpoint_verify_concurrency_limit = 1000
download_concurrency_limit = 50
full_verify_concurrency_limit = 20
parallel_cpu_threads = 4 # Задействование всех ядер CPU
[tracing]
# Настройки логирования и вывода информации
progress_bar = "summary" # Показывает краткое резюме состояния
buffer_limit = 128000
force_use_color = false
use_color = true
use_journald = false
filter = "WARN" # Уровень логирования понижен
Варианты файла конфигурации обсуждаются на форуме сообщества Zcash.
3. Запускаем Zebra:
zebrad
—config zebra.toml
Параметр —config указывает на то, что мы хотим запустить узел с пользовательскими параметрами.
Настройка автозапуска Zebra
Теперь разберёмся, как сделать автозапуск узла Zebra при каждом перезапуске компьютера. Для этого создадим сервис с помощью systemd
.
1. Откройте текстовый редактор и создайте новый сервис:
sudo nano /etc/systemd/system/zebra.service
2. Вставьте в текстовое поле создаваемого файла следующий текст:
[Unit]
Description=Zebra Node # Названия сервисов отображается в Task Manager
After=network.target # Указали порядок исполнения (после старта сети)
[Service]
User=ruzcash # Замените на ваше имя пользователя
WorkingDirectory=/zebra
ExecStart=/zebra/target/release/zebrad start # Исполняемая программа сервиса
Restart=on-failure # Сервис будет перезапускаться при ошибках программы, но не при ручном завершении. Опционально Restart=always
Nice=-10 # Изменяет приоритет уже запущенного процесса от -20 (высокий приоритет) до 19 (низкий приоритет).
[Install]
WantedBy=multi-user.target
3. Сохраните файл и закройте редактор (Ctrl + O
, затем Enter
, и Ctrl + X
для выхода из nano
).
4. Активируйте сервис и запустите его:
sudo systemctl enable zebra.service
sudo systemctl start zebra.service
Если с первого раза не получится и будут синтаксические ошибки, то исправляем и применяем изменения командой:
sudo systemctl deamon-reload
Теперь узел Zebra будет запускаться автоматически при каждой перезагрузке компьютера.
5. Дополнительные команды управления:
sudo journalctl -u zebra.service -f
: используется для просмотра журналов сервиса Zebra в режиме реального времени. Флаг-u zebra.service
выводит только логи, связанные с сервисомzebra.service
, а флаг-f
позволяет наблюдать за новыми записями в логах по мере их появления.sudo systemctl status zebra.service
: используется для получения текущего статуса работы Zebra — его состояние, последние логи, время работы, а также информацию о процессах и возможных ошибках.sudo systemctl stop zebra.service
: используется для остановки запущенного сервиса Zebra. При выполнении этой команды сервис завершает свою работу, останавливая все связанные процессы.
Все эти команды стандартны для Linux-подобных систем и управляют созданным сервисом, который запускает и исполняет фоновый процесс, а не самим узлом Zebra. Компьютер автоматически стартует узел в фоновом режиме при запуске. Поэтому эти команды позволяют убедиться, что узел функционирует.
Опциональная функция Т0R Arti (данный раздел в процессе тестирования)
Arti — это клиент сети Т0R, написанный на Rust, разработанный The Т0R Project при финансовой поддержке Zcash Foundation. Arti создан для повышения безопасности и производительности, предлагая современную архитектуру с улучшенной защитой от уязвимостей, связанных с управлением памятью. Arti легко интегрируется с приложениями и, возможно, со временем заменит традиционный Т0R-клиент, написанный на языке C, обеспечивая надёжную и удобную поддержку анонимности в интернете.
Существует экспериментальный вариант установки узла Zebra с функционалом Т0R Arti. Я ещё только тестирую эту функциональность и успешного стабильного решения пока не получил (нет даже документации по настройке). Опишу здесь явные шаги, которые мне удалось исследовать. Если у вас получится продвинуться дальше, то обязательно сообщите мне на ruzcash@proton.me
Для того чтобы собрать Zebra со всеми доступными, в том числе экспериментальными, функциями на этапе компиляции (пункт 3 первого раздела) необходимо это указать дополнительно:
cargo
build -p zebrad --all-features
Данная команда устанавливает плюсом около сорока Rust-крейтов.
а) Устанавливаем библиотеку libsqlite3
sudo apt install libsqlite3-dev
а) Устанавливаем Arti:
sudo mkdir /arti
sudo mkdir -p /home/your_username/arti_build
CARGO_TARGET_DIR=$HOME/arti_build cargo install arti
б) Создайте файл конфигурации для Arti:
mkdir -p ~/.config/arti
cp $(arti --config) ~/.config/arti/arti.toml
в) Внесите изменения в конфигурацию Arti для работы с Zebra:
Откройте файл конфигурации:
nano ~/.config/arti/arti.toml
Добавьте прокси-сервер для использования Arti с Zebra. Например:
[socks]
listen = "127.0.0.1:9150"
г) Запустите Arti для установления соединения с сетью Tor:
arti proxy -p 9150
Перенаправьте весь сетевой трафик Zebra через SOCKS-прокси Arti. Например, вы можете установить переменные окружения перед запуском Zebra:
export ALL_PROXY=socks5://127.0.0.1:9150
е) В другом терминале запустите Zebra:
zebrad start
Настройка автозапуска Zebra с Arti
У нас появился новый процесс, а значит необходимо создать ещё один сервис arti.service и внести правки в файл уже созданного сервиса zebra.service
.
1. Текстовым редактором открываем arti.service
:
sudo nano /etc/systemd/system/arti.service
2. Вставьте в текстовое поле создаваемого файла следующий текст:
[Unit]
Description=Arti Proxy
After=network.target
[Service]
Type=simple
User=ruzcash # ваше имя пользователя
WorkingDirectory=/home/ruzcash/arti_build/ # у меня такая
ExecStartPre=/home/ruzcash/.cargo/bin/arti proxy -p 9150 # аналогично
Restart=on-failure
Nice=-10
[Install]
WantedBy=multi-user.target
3. Сохраните файл и закройте редактор (Ctrl + O, затем Enter, и Ctrl + X для выхода из nano).
4. Теперь исправляем уже созданный zebra.service
в текстовом редакторе:
sudo nano /etc/systemd/system/zebra.service
5. Внесите необходимые исправления и дополнения (выделил):
[Unit]
Description=Zebra Node
After=network.target arti.service #определяем очерёдность запуска
[Service]
User=ruzcash
WorkingDirectory=/zebra
Environment="ALL_PROXY=socks5://127.0.0.1:9150" # добавляем Proxy
ExecStart=/zebra/target/release/zebrad start
Restart=on-failure
Nice=-10
[Install]
WantedBy=multi-user.target
6. Сохраните файл и закройте редактор (Ctrl + O, затем Enter, и Ctrl + X для выхода из nano).
7. Применяем все изменения:
sudo systemctl enable arti.service
sudo systemctl deamon-reload
Теперь узел Zebra будет запускаться автоматически при каждой перезагрузке компьютера:
reboot
Источники для исследования: инструкция разработчиков Arti, GitHub Zebra,
Arborist Call Bitcoin Halo NU5 NU7 Orchard PoS PoW z2z zcashd Zcon Zebra ZecWallet ZIP ZKP ZSA Гранты Доказательства с нулевым разглашением Дорожная карта Ключи просмотра Конференции Кошельки Кошельки для Zcash Метрики Нода Релизы аппаратные кошельки биржи и обмены биткоин будущее криптовалют внедрение интеграции интервью конфиденциальность майнинг новости Zcash обновление сети объяснения обёрнутые токены регулирование транзакции унифицированные адреса управление цена ZEC эмиссия
Все новости про Zcash в социальной сети «X» (бывший Twitter) | Интересные видео про Zcash на YouTube
Вы можете поддержать автора проекта pro.zcash:
(для отправки доната на данный адрес требуется
кошелёк с функционалом экранированных транзакций)