Очередь
Каждый новый узел ждёт в публичной очереди между регистрацией и допуском. Очередь решает, кто будет допущен следующим; таймер допуска решает когда. Порядок уравновешивает приверженность и терпение: в расчёт идёт стейк, умноженный на уже прошедшее время ожидания.
Порядок
Узлы в очереди ранжируются по стейку, умноженному на число блоков, которые они прождали. При равенстве выше стоит более ранняя высота регистрации, затем меньший идентификатор узла. Узел в очереди может в любой момент увеличить свой стейк и сохраняет накопленное ожидание; увеличение стоит только комиссии за транзакцию и требует того же доказательства владения, что и регистрация (регистрация узла).
Из-за произведения, чтобы обойти того, кто ждал в десять раз дольше, нужно заблокировать в десять раз больше.
У узлов в очереди нет оценки участия. Узел получает оценку по умолчанию 20 % при допуске, а таймер допуска впускает по одному узлу, так что два узла никогда не входят вместе.
Явка
Место предназначено для работающего узла, поэтому узел в очереди должен показывать, что он в сети, хотя бы раз в каждом окне из 5 760 блоков (одни сутки). Засчитывается любой признак узла в цепочке, например подписанная им аттестация. Если такого признака нет, программа узла сама отправляет транзакцию QueueAttendance (тип 59). Её комиссия берётся из стейка, никогда не опуская его ниже минимума, и уходит в пул долголетия.
Окно без единого признака перезапускает ожидание узла. За всё время ожидания узел может пропустить окна в объёме одного цикла допуска: max(2, максимальная задержка допуска ÷ одни сутки), то есть 90 окон в mainnet, где максимальная задержка — 90 дней. 91-е пропущенное окно исключает его из очереди. Кроме того, чтобы быть допущенным, узел должен был явиться в последнем оцениваемом окне.
Выход из очереди стоит 10 %
Отзыв узла из очереди стоит 10 % его стейка, даже если владелец пользуется положенной транзакцией RemoveNodeRegistration. Исключение за пропуск явки стоит те же 10 %. В обоих случаях остальные 90 % возвращаются владельцу (после исключения — сразу), а 10 % уходят в пул долголетия, который платит работающим узлам (пулы). Ничего не сжигается (ZBC никогда не сжигается).
Эта плата существует из-за минимума для входа. Новичок должен заблокировать не меньше половины медианного стейка узлов, уже стоящих в очереди. Если бы выход был бесплатным, кто-то мог бы поставить в очередь крупный стейк, чтобы поднять этот минимум для всех остальных, а затем бесплатно его забрать.
Когда приостановлены все активные узлы
Очередь служит ещё и резервом. Если приостановлены все активные узлы, лучший по порядку узел из очереди, соблюдавший явку, может создать блок, и этот блок сразу же его допускает. Поэтому цепочка может возобновиться, даже когда замолчал весь реестр.
Как прочитать очередь
Очередь публична. GET /api/v1/nodes?status=queued перечисляет все узлы в очереди с их стейком и высотой регистрации, так что любой может вычислить порядок и увидеть, кто следующий.