Публичный testnet
Публичный testnet несёт правила консенсуса mainnet под собственным идентификатором цепочки, так что измеряет он поведение mainnet, а не своё собственное. Его монеты ничего не стоят, и так и задумано.
Что это#
zcd genesis --testnet
network zycord-testnet
chain id 2
params hash 0x0b732489dee8fd2bcb5fa37b513b2ea10edc616bd664ba5b55c69952f63e2c1b
genesis id 0xc1b21b079b3dfe781c40a187326bb8dbbcf0fb97164d6fdf7a7d6a536c74705b
state root 0x6974f84b8088039ab721fd6be6ac72b73845e5dc93f0b5625b4e9c564ccf73e3
genesis time 1789430400
cells written 6
allocations 0
Выполните эту команду, прежде чем доверять этой странице. Сборка, печатающая другой
идентификатор генезис-блока, — это сборка на другой цепочке, и она к этой не подключится —
рукопожатие откажет ещё до оценки блока. allocations 0 — это утверждение об отсутствии премайна,
проверяемое, а не обещанное.
Генезис-блок появился 2026-09-15T00:00:00Z (unix 1789430400). Следить за
цепочкой можно на testnet.zycord.com.
Он отличается от mainnet восемью значениями и больше ничем#
name, chain_id, genesis_target, max_target,
genesis_time, randomx_key_interval, h1_bond и
h1_vm. Последние два — это высоты активации, и здесь они ниже намеренно:
testnet доходит до них на первый и третий день, так что машину гоняют неделями раньше, чем
mainnet подойдёт к тем же воротам. Всё остальное —
undo_depth, target_block_seconds, coinbase_maturity и
вся тарифная сетка gas — намеренно взято из mainnet. Особенно сетка gas,
потому что именно она делает измеряемое здесь поведение базовой комиссии поведением mainnet, а не
этой сети. Testnet со своей тарифной сеткой gas измеряет другую цепочку.
| Параметр | Публичный testnet | Mainnet |
|---|---|---|
name | zycord-testnet | zycord |
chain_id | 2 | 1 |
genesis_time | 1789430400 — 2026-09-15T00:00:00Z | 1790812800 — 2026-10-01T00:00:00Z |
randomx_key_interval | 512 блоков | 2048 блоков |
h1_bond | 2 880 — примерно 1-й день | 40 320 — примерно 14-й день |
h1_vm | 8 640 — примерно 3-й день | 80 640 — примерно 28-й день |
target_block_seconds | 30 — идентично | |
coinbase_maturity | 100 — идентично | |
epoch_length | 2880 блоков, около суток — идентично | |
ttl_max | 240 блоков, около двух часов — идентично | |
treasury_share_bps | 300, то есть 3% — идентично | |
Testnet может быть сброшен от генезис-блока. Когда это происходит, его монеты, его история и его списки пиров исчезают, сеть получает новый идентификатор цепочки, а каталог данных со старой цепочкой отвергается при запуске, а не смешивается молча. Две сети к тому же разъединяются на рукопожатии, так что ничего не переносится незаметно.
Подключение#
make build-randomx # the testnet is randomx-v1; see below
# -> bin/zcd-randomx, bin/zycordd-randomx
./bin/zycordd-randomx --testnet --dir ./testnet
make build-randomx, а не make build. В testnet
pow_engine — это randomx-v1, та же рабочая функция, что и в mainnet. Бинарник,
собранный без этого тега, откажется запускаться против неё, а не откатится к отладочному
движку, который принимал бы один проход BLAKE3 как доказательство работы для любого встреченного заголовка.
Бинарники с тегом несут этот тег в своих именах, так что сборка обоих оставляет
оба на диске, а имя файла говорит, какой движок внутри. В других местах этих страниц команды
записаны как zcd и zycordd для краткости; в этой сети это
пара с суффиксом -randomx.
Начальная загрузка#
Бинарник несёт один seed-адрес для этой сети и ничего для любой другой. Вам не нужно искать пира, чтобы начать — команда выше подключается от встроенного seed. Чтобы указать свой вместо него или вдобавок:
zycordd --testnet --dir ./testnet --peers-file peers.txt
zycordd --testnet --dir ./testnet --peers host:9421,host2:9421
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)
Запускайте хоть до открытия сети — именно так его и предполагается использовать. Узел, чьи часы не дошли до самой ранней метки времени, которую может нести следующий блок, отказывается его строить, сообщает, сколько осталось ждать, и начинает майнить сам, когда придёт время. Ничего не нужно планировать и нечего перезапускать, а пиринг и синхронизация идут всё время ожидания.
Адрес выплат обязан быть постоянным (0x02) —
zcd wallet address по умолчанию печатает именно такой, а zycordd отвергает любой
другой, а не предупреждает. Почему.
coinbase_maturity равно 100, поэтому примерно первую сотню блоков после вашего первого
вознаграждения транзакции доступны только майнерам. Этот разгон взят из mainnet и составляет часть того, что эта сеть
репетирует — и именно поэтому кран существует здесь и не может существовать там: кран
сокращает разгон тому, кто хочет опробовать кошелёк, в той единственной сети, где сокращение
ничего не стоит.
Майнинг выделяет набор данных RandomX — около 2 ГиБ, плюс ~256 МиБ на каждую удерживаемую эпоху ключа. Машина, способная спокойно проверять, не обязательно способна майнить; бюджеты приведены в разделе Майнинг.
Монеты testnet ничего не стоят#
По замыслу и навсегда. Сеть может быть сброшена от генезис-блока, для чего testnet и существует. Любой, кто предлагает купить или продать их, ведёт мошенничество, которому не нужна даже легенда.
Что измеряет эта сеть#
Это не демонстрация. Четыре вещи, ради чисел о которых она существует:
- Пауза при смене ключа. При 512 блоках повторное задание ключа RandomX случается примерно раз в четыре часа вместо семнадцати в mainnet, так что перестроение набора данных репетируется достаточно часто, чтобы его измерять, а не рассуждать о нём.
- Поведение базовой комиссии при тарифной сетке gas от mainnet, из-за чего сетка здесь и не правится.
- Доля узлов, доступных для входящих подключений — первое условие пересмотра решения об отказе от обхода NAT.
- Ожидание до генезис-блока и то, действительно ли честный ранний запуск превращается в своевременный старт без перезапусков.
Когда что-то выглядит не так#
В разделе Запуск узла описан путь диагностики для узла, который не синхронизируется, и команда починки для каталога данных, против которого он отказывается стартовать. Находки и способы воспроизведения — в трекер задач; проекту нужен отчёт, а не презумпция невиновности.