ZYCORD docs
Русский
ZycordДокументацияУстановка

Установка

Как получить файлы на машину и понять, что именно вы получили. Настоящая эксплуатация узла — это Запуск узла; эта страница про установку.

Zycord — это две консольные программы и одно настольное приложение:

ИмяЧто это
zcdКонсольная утилита: ключи, кошельки, генезис-блок, эталонные векторы и zcd ui.
zycorddУзел: проверяет, майнит, обслуживает пиров, отвечает на RPC только для чтения.
Zycord WalletНастольное окно вокруг того же интерфейса кошелька, который отдаёт zcd ui.
Где проект находится сегодня

Mainnet работает с 2026-10-07, и релизы опубликованы: на странице загрузок есть архив для каждой платформы, для которой существует сборка, а на странице релизов — все версии. Сборка из исходного кода — более надёжный путь, и он описан в разделе ниже. Манифесты для менеджеров пакетов, приведённые далее, лежат в репозитории и доступны для изучения, но ни один tap или bucket их пока не раздаёт.

Сборка из исходного кода#

Версия Go — go1.26.2, и она часть исходного кода. Два выпуска Go компилируют один и тот же пакет в разный машинный код, поэтому бинарник — это в той же мере результат работы компилятора, что и репозитория — пересборка другим Go даёт другой файл из идентичного дерева. Поэтому make build закрепляет её (GOTOOLCHAIN=go1.26.2 в Makefile) и отказывается собирать под любой другой, вместо того чтобы выдать вам бинарник, чей хеш не совпадёт, и не объяснить почему.

git clone https://gitlab.com/zycord-group/zycord-node.git
cd zycord-node
make build

Если у вас нет go1.26.2, искать его не придётся: закрепление заставляет команду go при первом использовании скачать именно этот набор инструментов и сверить его с собственной базой контрольных сумм Go. Это единственное в этой сборке, что обращается к сети.

Какой бинарник может подключиться к сети#

Это важнейший абзац на странице. RandomX компилируется за тегом сборки, поэтому сборок две, и лишь одна из них может говорить с сетью на RandomX — а это и mainnet, и публичный testnet.

# Default: no cgo, no C toolchain, development engine only.
# Byte-for-byte reproducible. Runs a local devnet and nothing else.
make build           #  -> bin/zcd, bin/zycordd

# The network binary. cgo, so not reproducible.
make build-randomx   #  -> bin/zcd-randomx, bin/zycordd-randomx

Две сборки намеренно пишут разные файлы. Раньше они писали одни и те же два пути, так что запущенная второй заменяла первую, и имя ничего не говорило о том, какой движок внутри. Запускайте zcd-randomx там, где сеть на RandomX, и zcd там, где нет; после сборки обоих присутствуют оба.

Бинарник, собранный без тега, отказывается запускаться в сети, чей pow_engine он не умеет вычислять. В этом отказе весь смысл: не имея запасного движка, кроме отладочного, такой узел принимал бы один проход BLAKE3 как доказательство работы для любого встреченного заголовка — каждая подделка действительна, каждая развилка невесома, и ничего в журнале. Обратное несимметрично: бинарник с тегом несёт оба движка и корректно работает в devnet.

Спросите у бинарника, какой из них у вас в руках:

zcd version
Для этого проекта нет go install

И это не упущение. go install разрешает путь модуля через прокси модулей, а корневой модуль назван zycord — без хоста, без точки в первом элементе пути, что набор инструментов отвергает сразу. Имя выбрано намеренно: go.mod не заявляет никакого хоста, потому что хост — это поверхность идентичности. Клонирование выше — это путь через набор инструментов Go, и оно в любом случае надёжнее — вы собираете тег, который сами выгрузили, а не то, что отдал прокси.

Два уровня гарантий, названные, а не подразумеваемые#

Бинарники бывают двух уровней, и это непересекающиеся наборы. Вот таблица, которую стоит прочесть, прежде чем решать, какой брать.

АртефактВоспроизводим?Подключается к mainnet?Почему
zcd, zycordd — собраны из исходного кода через make buildДа, побайтово одинаковоНетЧистый Go, CGO_ENABLED=0, -trimpath, без идентификатора сборки — и потому без движка RandomX. Больше не поставляется как загрузка; SHA256SUMS.binaries публикуется, чтобы вы могли собрать и сравнить.
zcd, zycordd — архив -randomxНетДаcgo: RandomX написан на C++, поэтому системный набор инструментов C попадает в результат
Zycord Wallet, Linux и macOSНетнеприменимоcgo: системный набор инструментов C и платформенный SDK попадают в результат
Zycord Wallet, WindowsДа, побайтово одинаковонеприменимоБез cgo: Wails обращается к WebView2 через чистый Go

Релизы поставляют только архивы -randomx — релиз, выдающий архив, который не может подключиться к сети, — это релиз, выдающий заряженный пистолет. Их контрольные суммы лежат в SHA256SUMS.randomx, и они намеренно не входят в SHA256SUMS.binaries, потому что сборку с cgo никто не может повторить байт в байт. SHA256SUMS.binaries перечисляет, какие хеши должна дать сборка, сделанная вами самими. Смысл того, что это сказано вслух, в том, что это ваше решение, а не предположение, сделанное за вас.

Почему ваша операционная система предупредит вас и почему сертификата нет#

Неподписанный исполняемый файл блокируется SmartScreen в Windows и Gatekeeper в macOS. Обычное решение — сертификат подписи кода. Здесь это решение недоступно по устройству, а не из-за бюджета, и причину стоит понять, прежде чем что-либо устанавливать — пользователя, знающего, почему появляется предупреждение, гораздо труднее обмануть поддельным установщиком.

Сертификат Authenticode — это удостоверяющий центр, подтверждающий проверенную юридическую личность. В этом вся его функция; не существует его версии без юридического имени внутри. Apple Developer ID — та же проблема с другим поставщиком. Zycord публикуется под псевдонимом, и покупка сертификата разрушила бы это немедленно.

Поэтому псевдоним сохраняется. Это не дыра в истории доверия; это выбор другой истории, и для этого проекта — более сильной:

Сертификат утверждает: «это пришло от лица X».
Воспроизводимая сборка утверждает: «это получено из этого исходного кода, и проверить может любой».

Для анонимной сети весомее второе, и это не лозунг: CI пересобирает zcd дважды при каждой отправке в main и на каждом теге и падает, если два бинарника различаются хоть байтом. Вам не нужно доверять тому, кто собрал скачанный вами бинарник. Вы можете собрать его сами и сравнить хеши — и если они совпадут, вопрос о том, кто его собрал, перестаёт иметь значение. Эта процедура описана в разделе Проверка загруженного файла.

Менеджеры пакетов#

Вместо того чтобы воевать со SmartScreen и Gatekeeper, проект проходит в дверь, которую они оставляют открытой. Менеджер пакетов устанавливает по URL и хешу, не требует подписи и не вызывает ни одного предупреждения. Манифесты лежат в репозитории (packaging/) и доступны для изучения уже сейчас, но ни один tap или bucket их пока не раздаёт; пока этого не произошло, пути ниже описывают, что они будут устанавливать.

Windows — Scoop#

Scoop не снимает метку веб-происхождения; метка попросту никогда не ставится. Метку веб-происхождения ставят браузеры и оболочечный API Windows для запуска вложений, а не сырые HTTP-клиенты, а Scoop скачивает через [Net.HttpWebRequest] или aria2. Проверка репутации приложения в SmartScreen срабатывает на помеченных файлах, запущенных из Проводника; файл, который никогда не помечался и запущен через прослойку из терминала, до этого пути вовсе не доходит. Манифест закрепляет URL релиза и SHA-256, поэтому Scoop проверяет загрузку до того, как её установит.

То, что устанавливает Scoop, работает с --devnet и отвергает mainnet и публичный testnet — см. таблицу двух уровней выше. Чтобы подключиться к сети в Windows, возьмите zip -randomx для x86-64 на странице загрузок; для Windows на ARM такой сборки нет, и она доступна только в devnet. zcd version печатает, какой движок несёт бинарник.

Windows без Scoop

Переносимый zip выбран намеренно: нет ни установщика .exe, ни MSI, потому что именно неподписанный установщик запускает худший путь SmartScreen — полноэкранную блокировку «Windows защитила ваш компьютер». Распакованные файлы запускаются из терминала без этого. Настольному кошельку нужна среда выполнения WebView2, предустановленная в Windows 11 и современных Windows 10; если её нет, окно не откроется, и обходной путь — zcd ui в браузере.

macOS — Homebrew#

Оба пакета — это формулы, а не каски, и в этом весь фокус: формула собирает из исходного кода на вашей машине, поэтому бинарник не является скачанным файлом и не имеет атрибута карантина. Gatekeeper его вовсе не видит. Это также означает, что вы вообще не доверяете сборке проекта — Homebrew забирает архив с исходным кодом, проверяет его SHA-256 и компилирует его вашим собственным набором инструментов.

Формула собирает бинарники на чистом Go, поэтому то, что она устанавливает, работает с --devnet и отвергает mainnet и публичный testnet. Чтобы подключиться к сети на macOS, возьмите архив -randomx для своей архитектуры или соберите его сами через make build-randomx.

Каск — это противоположность, и такого этот проект не поставляет: скачанное, помещённое в карантин .app без подписи, которое работает, только если попросить людей отключить функцию безопасности. Homebrew намеренно закрывает этот путь — --no-quarantine объявлен устаревшим в Homebrew 5.x.

macOS без Homebrew

Готового кошелька для macOS нет: он подключает системный webview через cgo и требует SDK от Apple, а загруженный .app попал бы в карантин без подписи, которая могла бы его снять. Вместо этого install-macos.sh собирает его на вашем Mac, предварительно сверив исходный код с подписанной контрольной суммой, а у локально собранного приложения нет атрибута карантина — см. На Mac.

У консольного архива такой проблемы нет: zcd и zycordd запускаются из терминала, где xattr -d com.apple.quarantine снимает проверку первого запуска одной командой.

Linux#

Никаких привратников. Сначала проверьте контрольную сумму и подпись — см. Проверка загруженного файла — затем:

tar xzf zycord-<version>-linux-amd64-randomx.tar.gz
sudo install -m755 zycord-<version>-linux-amd64-randomx/zcd      /usr/local/bin/
sudo install -m755 zycord-<version>-linux-amd64-randomx/zycordd  /usr/local/bin/
zcd version    # must name randomx-v2

Это единственный архив узла, который поставляет релиз; обычного, который можно было бы взять по ошибке, больше нет. В Debian и Ubuntu .deb делает больше, чем просто раскладывает файлы — он приносит unit systemd и непривилегированную учётную запись — и оба пути вместе со скриптом установки разобраны на странице загрузок. Настольный кошелёк в Linux поставляется как AppImage, потому что у libwebkit2gtk в каждом дистрибутиве своё имя пакета.

На сервере#

Никогда не делайте curl | sh

Направлять непроверенный скрипт в оболочку — неверная позиция для программ, которые держат деньги, и она неверна даже тогда, когда скрипт принадлежит этому проекту — вся аргументация этой страницы в том, что вам не должно быть нужно доверять издателю. packaging/install.sh скачивает, проверяет контрольную сумму и подпись и только затем устанавливает. Получите его, прочитайте, затем запустите.

install.sh устанавливает архив -randomx — тот уровень, который подключается к сети. Он сверяет архив с SHA256SUMS.randomx и с подписанным манифестом обновления, для проверки которого нужен zcd, которому вы уже доверяете; если на машине его нет, скрипт останавливается и сообщает об этом, а --unverified — это способ решить продолжить без этой проверки. Хоста релизов по умолчанию у него нет: укажите его через --repo или направьте --dir на уже имеющиеся у вас файлы.

Чтобы пользоваться интерфейсом кошелька на сервере, не открывайте порт наружу. zcd ui привязывается к петлевому интерфейсу и отвергает любой другой; пробросьте его через ssh. Процедура описана в разделе Запуск узла.

От чего всё это вас не защищает#

Сказано прямо, потому что страница о безопасности, перечисляющая только свои сильные стороны, — это реклама.

  • Вредоносный репозиторий. Воспроизводимые сборки доказывают, что бинарник соответствует своему исходному коду. Они ничего не говорят о том, честен ли исходный код. Прочитайте его — и прогоните эталонные векторы на том бинарнике, которому собираетесь довериться.
  • Поддельная страница релизов. Если кто-то поднимет убедительный клон, а вы никогда не проверяете подпись, совпадение хешей с файлом контрольных сумм с той же страницы не доказывает ничего. Якорь — отпечаток ключа проекта E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29.
  • Скомпрометированная машина. Кошелёк не может защитить хост, который уже потерян.
  • Лгущий узел. zcd и кошелёк не являются полными узлами; они верят тому, что говорит им узел. Именно поэтому кошелёк отвергает узел, чей идентификатор цепочки расходится с заявленной вами сетью, и поэтому существует --confirm-rpc — см. Кошелёк.
  • Любой, кто продаёт вам ZCD от имени проекта. Проект ничего не продаёт; каждая монета в mainnet была добыта майнингом.