Инструкция по настройке узла 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:

  1. Улучшенная производительность: поскольку Zebra была реализована с нуля асинхронным и параллельным способом, в настоящее время она работает быстрее, чем Zcashd.
  2. Охват аудитории: с развертыванием нового узла появится больше разработчиков, которые смогут реализовать различные функции для сети Zcash.
  3. Безопасность консенсуса: при независимой реализации обнаружение ошибок консенсуса может происходить быстрее, что снижает риск расщепления консенсуса с последующей реструктуризацией сети.
  4. Безопасность спецификации протокола: с несколькими реализациями узлов гораздо проще заметить ошибки и неоднозначность в спецификации протокола.
  5. Аппаратная безопасность: поскольку он разработан на безопасном для памяти языке (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.

Список поддерживаемых операционных систем:

Полная установка 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.
  • Количество транзакций в мемпуле — сколько транзакций ожидают обработки.

А так выглядит полно-форматная версия прогресс-баров:

Данные прогресс-бара при значении «detailed«

Запись в блоге разработчика прогресс-баров здесь.

Эти параметры позволяют вам настроить поведение узла 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:
(для отправки доната на данный адрес требуется кошелёк с функционалом экранированных транзакций)

Комментировать статью: