ZYCORD docs
Русский
ZycordДокументацияПубличный testnet

Публичный testnet

Публичный testnet несёт правила консенсуса mainnet под собственным идентификатором цепочки, так что измеряет он поведение mainnet, а не своё собственное. Его монеты ничего не стоят, и так и задумано.

Что это#

zcd genesis --testnet
network        zycord-testnet
chain id       2
params hash    0xc4a670f04575ac3aa6e670888e1a42ec877779fda8e5519e2637f4df93815b57
launch commit  0x83aeb709b14b43a0296666f006d99378049064f3e30d8191e074e09d485e2ff7
genesis id     0x81094507a4a083d01e24af21bddbf4d7eb496472a69c4b5dfb0d7a27c6b03b55
state root     0x4f45e604e1fd7ccf066e20e5fd41105373a0ba0d28aea8fc825b8795e880384f
genesis time   1791158400
cells written  6
allocations    0

Выполните эту команду, прежде чем доверять этой странице. Сборка, печатающая другой идентификатор генезис-блока, — это сборка на другой цепочке, и она к этой не подключится — рукопожатие откажет ещё до оценки блока. allocations 0 — это утверждение об отсутствии премайна, проверяемое, а не обещанное.

Генезис был 2026-10-05T00:00:00Z (unix 1791158400), за два дня до генезиса mainnet: testnet репетировал запуск с тем же бинарником и по той же процедуре. Теперь это место, где Era 1 запускается первой — cEVM, секвенсоры, интенты и fill, каталог и принудительный путь активны здесь с высоты 2 880, его первого дня, тогда как mainnet достигает того же рубежа на высоте 80 640. Следить за цепочкой можно на testnet.zycord.com.

Он отличается от mainnet десятью значениями и ничем больше#

name, chain_id, genesis_target, max_target, genesis_time, randomx_key_interval, h1_bond, h1_vm, coinbase_maturity и launch_commit. Высоты активации здесь намеренно ниже: testnet достиг их в первый же день, так что машину опробуют неделями, прежде чем mainnet подойдёт к тому же рубежу. h1_bond движется вместе с h1_vm и ни в одной из сетей ничего не открывает: внесение залога не входит в Era 1. Стартовое сообщение у testnet своё, так что его блок 1 репетирует запуск mainnet, не раскрывая стартового сообщения mainnet. Всё остальное — undo_depth, target_block_seconds, распределение субсидии и вся тарифная сетка gas — намеренно взято из mainnet. Тарифная сетка gas — особенно, потому что именно она делает измеряемое здесь поведение базовой комиссии поведением mainnet, а не собственным поведением этой сети. Testnet со своей тарифной сеткой gas измеряет другую цепочку.

ПараметрПубличный testnetMainnet
namezycord-testnetzycord
chain_id21
genesis_time1791158400 — 2026-10-05T00:00:00Z1791331200 — 2026-10-07T00:00:00Z
randomx_key_interval512 блоков2048 блоков
h1_bond, h1_vm2 880 — примерно 1-й день80 640 — примерно 28-й день
coinbase_maturity100 блоков240 блоков
target_block_seconds30 — идентично
epoch_length2880 блоков, около суток — идентично
ttl_max240 блоков, около двух часов — идентично
emission_ramp_blocks86 400, 30-дневный разгон вознаграждения — идентично
founder_share, treasury_share_bps94% майнеру, 3% основателю до 3 153 600, 3% казне — идентично
Удалите каталог данных, прежде чем подключаться к сброшенной сети

Testnet может быть сброшен от генезис-блока. Когда это происходит, его монеты, его история и его списки пиров исчезают, сеть получает новый идентификатор цепочки, а каталог данных со старой цепочкой отвергается при запуске, а не смешивается молча. Две сети к тому же разъединяются на рукопожатии, так что ничего не переносится незаметно.

Подключение#

make build-randomx        # the testnet is randomx-v2; see below
                          #   -> bin/zcd-randomx, bin/zycordd-randomx

./bin/zycordd-randomx --testnet --dir ./testnet

make build-randomx, а не make build. В testnet pow_engine — это randomx-v2, та же рабочая функция, что и в mainnet. Бинарник, собранный без этого тега, откажется запускаться против неё, а не откатится к отладочному движку, который принимал бы один проход BLAKE3 как доказательство работы для любого встреченного заголовка.

Бинарники с тегом несут этот тег в своих именах, так что сборка обоих оставляет оба на диске, а имя файла говорит, какой движок внутри. В других местах этих страниц команды записаны как zcd и zycordd для краткости; в этой сети это пара с суффиксом -randomx.

Начальная загрузка#

Бинарник содержит сиды testnet: с seed1.zycord.com по seed4.zycord.com на порту 19421. Сиды mainnet — те же хосты на 9421, и две сети отвергают друг друга при рукопожатии, так что ничего не смешивается. Старый бинарник, в котором сидом указан testnet.zycord.com, следует заменить, а не обходить это. Чтобы указать другие пиры вместо них или в дополнение к ним:

zycordd --testnet --dir ./testnet --peers-file peers.txt
zycordd --testnet --dir ./testnet --peers host:19421,otherhost:19421
zycordd --testnet --dir ./testnet --no-seeds --peers-file peers.txt

Будьте доступны для входящих, если можете#

Zycord не занимается обходом NAT. Узел с --listen на достижимом порту — это место, откуда другие могут начать загрузку, а доля таких узлов — фальсифицируемое условие, на котором держится всё решение отказаться от обхода NAT — она измеряется, а не предполагается.

zycordd --testnet --dir ./testnet \
  --listen 0.0.0.0:9421 --advertise <public-address>:9421

Если пробросить порт не получается, не указывайте --listen и будьте периферией. Это вполне достойный способ участвовать. Проверить, кто вы, можно командой curl -s localhost:9420/network — listening: true при inbound: 0 спустя несколько минут означает, что порт на деле недостижим.

Как получить монеты#

Два пути, и второй — тот, вокруг которого эта сеть и проектировалась.

Кран#

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

Он существует в этой сети и ни в какой другой. Кран — функция обозревателя, выключенная по умолчанию, а её включение требует назвать сеть — имя сверяется с цепочкой, которую этот обозреватель действительно индексирует, причём mainnet отвергается сразу. В mainnet нет ни крана, ни премайна, и это проверка в бинарнике, а не правило, которое кто-то должен помнить.

Для него ничего не выпускается. Кран держит обычный ключ, подписывает обычный перевод через ту же wallet/session, что и командная строка, и выдаёт одну заявку на блок, потому что сертификат несёт прочитанное им состояние, и два сертификата, построенных на одном чтении своей ячейки, столкнулись бы. Его баланс берётся из майнинга, так что пустой кран останется пустым, пока кто-нибудь его не пополнит.

Самостоятельный майнинг#

Путь без очереди и без оператора, с тем же распределением, что и в mainnet:

zcd wallet new --out miner.json
zycordd --testnet --dir ./testnet \
  --mine --payout $(zcd wallet address --key miner.json | awk '/^persistent/ {print $3}')

Адрес выплат обязан быть постоянным (0x02) — строка persistent в выводе zcd wallet address, который печатает и следующий одноразовый адрес, — а zycordd отвергает любой другой, а не предупреждает. Почему.

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

Майнинг выделяет набор данных RandomX — около 2 ГиБ, плюс ~256 МиБ на каждую удерживаемую эпоху ключа. Машина, способная спокойно проверять, не обязательно способна майнить; бюджеты приведены в разделе Майнинг.

Монеты testnet ничего не стоят#

По замыслу и навсегда. Сеть может быть сброшена от генезис-блока, для чего testnet и существует. Любой, кто предлагает купить или продать их, ведёт мошенничество, которому не нужна даже легенда.

Что измеряет эта сеть#

Это не демонстрация. Четыре вещи, ради чисел о которых она существует:

  • Пауза при смене ключа. При 512 блоках повторное задание ключа RandomX случается примерно раз в четыре часа вместо семнадцати в mainnet, так что перестроение набора данных репетируется достаточно часто, чтобы его измерять, а не рассуждать о нём.
  • Поведение базовой комиссии при тарифной сетке gas от mainnet, из-за чего сетка здесь и не правится.
  • Доля узлов, доступных для входящих подключений — первое условие пересмотра решения об отказе от обхода NAT.
  • Era 1 под реальной нагрузкой: секвенсоры, fill и принудительный путь в живой сети, за недели до того, как mainnet достигнет своего рубежа.

Когда что-то выглядит не так#

В разделе Запуск узла описан путь диагностики для узла, который не синхронизируется, и команда починки для каталога данных, против которого он отказывается стартовать. Находки и способы воспроизведения — в трекере задач; проекту нужен отчёт, а не презумпция невиновности.