ZYCORD docs
Русский
Zycord Исходный код

Исходный код

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

Ничто на этом сайте не стоит больше того, что вы можете проверить, никого не спрашивая, и проверка начинается здесь. Анонимный автор не может предложить вам репутацию; взамен предлагается дерево исходников, которое можно прочитать, собрать и сравнить с бинарниками, которые вам вручили.

Склонируйте его#

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

Или сначала почитайте его в браузере: gitlab.com/zycord-group/zycord-node.

Это единственный репозиторий

Канонические расположения этого проекта — включая это самое — закреплены в подписанном заверении в ветке анонса под ключом проекта E724 39CE DD85 11F9 D607 550B 87FD 60D5 EB4A 0B29. Дерево, размещённое где-либо ещё, — это копия: она может быть честной, может быть устаревшей, может быть враждебной, и эта страница не скажет вам, какая именно. Сверьтесь с подписанным списком, прежде чем доверять зеркалу, и собирайте с тега, хеш которого проверили сами.

Что в нём лежит#

КаталогЧто содержит
spec/Протокол. Наборы параметров, эталонные векторы и предварительно развёрнутые образы библиотеки. Реализация, проходящая векторы, — равный участник, а не форк.
core/Код, критичный для консенсуса, только стандартная библиотека: модель ячеек, бесстостояние действительности, свёртка (fold), адаптированная под сертификаты EVM и RandomX за флагом сборки.
node/Узел вокруг этого ядра — хранилище, мемпул, майнер, пиринговый слой, синхронизация, RPC только на чтение, Stratum.
wallet/Управление ключами и сборщики сертификатов. Это образец, а не консенсус.
cmd/zycordd — узел; zcd — командная строка и кошелёк.
sim/Симулятор и фаззинг-обвязки, вторая, нарочно наивная свёртка (fold), которую фаззят против настоящей, и хаос-прогон, гоняющий настоящие узлы через настоящие сокеты.
contracts/Эталонные контракты на Solidity.
packaging/Установочный скрипт и пакеты под платформы — их можно прочитать до того, как запускать.
docs/Архитектура, справочник по протоколу, руководство по эксплуатации и техническое описание.

Протокол — это векторы#

Код на Go в этом дереве — это одна из реализаций, и намеренно не то самое определение. Сеть определяют наборы параметров и эталонные векторы: каждое правило свёртки (fold), блока и действительности как случай (состояние до, блок) → (состояние после, комиссии), положительный и отрицательный. Пишите свой узел на любом языке — если он проходит корпус, он равный участник, и эта реализация не имеет над ним старшинства.

Высоты активации лежат там же. h1_bond и h1_vm — это параметры, зафиксированные в генезис-блоке, а не выпуск: машина вкомпилирована в каждый бинарник и отклоняется ниже своей высоты, так что эра наступает потому, что цепочка дошла до некоторого числа, и никогда потому, что операторов попросили обновиться.

Соберите его#

make build           # no cgo, reproducible, development engine only
make build-randomx   # the network binary: mainnet and the public testnet

Подключиться к сети может только сборка с RandomX. Сборка по умолчанию побайтово воспроизводима и запускает локальный devnet; обе намеренно пишут разные файлы, так что бинарник, который не может говорить с mainnet, никогда не спутать с тем, который может. Тулчейн Go закреплён на go1.26.2, и сборка отказывается идти под чем-либо иным, потому что один и тот же исходник, собранный двумя выпусками Go, — это два разных бинарника.

Пересборка опубликованного тега и сравнение хешей — это и есть проверка, заменяющая доверие к издателю: полная процедура в разделе Проверка загрузки, а Установка описывает сборку для обычного использования.

Ошибки и безопасность#

Ошибки, вопросы и патчи идут в трекер задач, а CONTRIBUTING.md говорит, что нужно изменению, прежде чем его примут.

Уязвимость идёт по процессу раскрытия из SECURITY.md, а не в трекер. Проекту нужен отчёт, а не презумпция невиновности, и дефект, найденный до mainnet, не стоит никому ничего.

Лицензия#

MIT — на всё дерево. Форкайте, поставляйте, продавайте, переименовывайте — лицензия просит указание авторства и больше ничего. Единственное, чего она вам не даст, — это сеть: её решают узлы, принимающие ваши блоки, а принимают они их по правилам из spec/.