Вики ZooBC
Работа узла

Регистрация узла

Регистрация — шаг, который превращает узел, только следящий за цепочкой, в кандидата на место. Владелец отправляет одну транзакцию, которая называет ключ узла, блокирует стейк и доказывает, что владелец и ключ узла связаны друг с другом. Затем узел встаёт в публичную очередь. Создавать блоки он начинает только после допуска.

Три шага: регистрация с ключом узла, стейком и доказательством; ожидание в публичной очереди, упорядоченной по стейку, умноженному на время ожидания; допуск по одному узлу в кольцо мест
Три шага: регистрация с ключом узла, стейком и доказательством; ожидание в публичной очереди, упорядоченной по стейку, умноженному на время ожидания; допуск по одному узлу в кольцо мест

Транзакция регистрации

NodeRegistration (тип 2) несёт ключ узла, аккаунт владельца, стейк и доказательство владения. Владелец подписывает её, как любую другую транзакцию. Стейк и комиссия списываются с аккаунта владельца; минимальная комиссия — это базовая комиссия за действие 0,025 ZBC (2 500 000 атомарных единиц) плюс плата за байты транзакции (комиссии).

Никто не проверяет оператора, нет ни теста оборудования, ни этапа одобрения. Единственные проверки — правила, которые каждый узел применяет одинаково.

Доказательство владения

Доказательство связывает один ключ узла с одним владельцем. Это сообщение, подписанное ключом узла, со следующей структурой для обычного владельца ZBC_:

ПолеБайт
тип аккаунта владельца4
ключ владельца32
хеш недавнего блока32
высота этого блока4
подпись Ed25519 ключом узла64

Первые 72 байта подписываются как есть, без предварительного хеширования, поэтому всё доказательство занимает 136 байт. Каждый узел проверяет четыре условия:

  1. подпись проверяется ключом узла;
  2. аккаунт в сообщении в точности, байт в байт, совпадает с отправителем транзакции;
  3. блок с этим хешем существует в собственной цепочке проверяющего узла;
  4. блоку не больше 720 блоков (3 часа).

Поскольку доказательство называет недавний блок, его нельзя подготовить задолго заранее или использовать повторно позже. То же доказательство требуется при увеличении стейка и при заявке на узел, а новый ключ узла подписывает такое доказательство, когда место переносится на него (ключи узла).

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

Сколько блокировать

Наименьший стейк, с которым узел может встать в очередь, — большее из двух значений:

  • минимум очереди, который в mainnet начинается со 100 ZBC. Это одна из цен, по которым голосуют места (голосования по ценам): он может составлять от одной атомарной единицы до 250 ZBC и меняется не чаще раза в период снимков, причём каждый голос ограничен ростом на 20 % или снижением вдвое.
  • половина медианного стейка узлов, уже стоящих в очереди, которая следует за спросом.

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

После регистрации

Зарегистрированный узел ставится в очередь. Оценки участия у него пока нет, и раз в сутки он должен показывать, что находится в сети (очередь). Когда таймер допуска доходит до него, он становится зарегистрированным с оценкой по умолчанию 20 % (темп допуска) и начинает зарабатывать, когда становится зрелым (зрелость и доходы).

Отзыв узла до допуска стоит 10 % его стейка (выход из реестра). Ключ узла, место которого было удалено, может зарегистрироваться снова; он начинает новую запись в очереди и не наследует пропущенных ходов из прошлого.

См. также