Поговорим о случайном выборе валидаторов: зачем нужно, чтобы он был «воспроизводимым»? Сначала я разложу «случайный выбор валидаторов» на два вопроса: кто может заранее угадать результат? И могут ли другие узлы доказать, что результат не был изменён? Первый вопрос связан с тем, есть ли у атакующего время на подготовку; второй — с тем, сможет ли консенсус продолжать нормально работать. Deterministic Sortition с @Dusk как раз уравновешивает эти две стороны.

Подход в whitepaper не в том, чтобы центральный орган опубликовал список, а в том, чтобы каждый узел по одним и тем же входным данным самостоятельно всё вычислял. Deterministic Extraction распределяет credits с учётом веса stake provisioner: чем больше stake, тем обычно выше частота, с которой узел попадает в выборку. Получив очередной credit, вес уменьшается на 1 $DUSK , чтобы высокостейкнутые узлы не выбирались чрезмерно много раз в одной и той же эпохе/раунде.

#dusk

Откуда берётся случайность? SHA3 берёт seed из предыдущего блока, текущий round, step и номер credit и объединяет их в score. Новый seed формируется подписью block generator по seed предыдущего блока. Поэтому результат могут пересчитать все узлы, но заранее нетривиально предсказать, кто окажется производителем блока в следующую эпоху/раунд и кто войдёт в комитет.

Здесь легко запутаться: воспроизводимость не равна предсказуемости. Узлы знают алгоритм, но это не означает, что они знают действующий seed следующего раунда; при отсутствии единого алгоритма узлы также не смогут проверить, сформирован ли список комитета по правилам. Согласно текущей официальной документации по стейкингу, минимальный порог для прямого стейкинга — 1,000 DUSK, epoch составляет 2,160 blocks; награда зависит от участия в консенсусе и объёма эффективного стейка, а не является фиксированным доходом. Параметры вроде 64 credits в whitepaper следует рассматривать как параметры соответствующей версии протокола, а не как вечные константы.

Эта механика логична с точки зрения защиты от сибил-атак и проверяемости, но выбор с учётом stake также означает, что размер капитала влияет на частоту участия. Она решает проблему «один участник с множеством идентичностей», но не устраняет автоматически концентрацию власти. Дальше разберём, что происходит, если выбранные узлы уходят в офлайн: как SA-консенсус обрабатывает сбои, ветвления и финальность?