Финальность в PoTB даёт комитет из ста узлов, и этот комитет никогда не живёт долго в неизменном виде: каждый блок заменяет примерно десятую часть состава. Через десять блоков ни одно место не помнит, кто занимал его до начала ротации.
Выборка
Выбор — взвешенная выборка без возвращения по набору валидаторов, управляемая хеш-цепочкой от seed эпохи. Каждый узел выполняет одинаковую выборку и получает одинаковый комитет — согласовывать нечего, и сообщений о составе рассылать не нужно.
Ротация как движущаяся граница
Десятая часть мест меняется каждый блок, причём уходящий набор разбросан по кольцу, а не идёт подряд. Из этого следуют три вещи:
- Захват — проблема темпа, а не снимка. Противник должен удерживать влияние много выборок подряд, пока честные узлы продолжают входить.
- Нагрузка на сеть остаётся ограниченной. Полная замена сотни мест за блок умножила бы трафик голосов без всякого прироста безопасности.
- Новый валидатор ждёт места не больше десяти блоков — и никогда дольше.
Кворум от существующих мест
Кворум — ⌊2n/3⌋ + 1 подписей от реально занятых мест, а не от номинальной сотни. Если заседает девяносто семь узлов, финальности нужно шестьдесят пять голосов — византийский порог следует за реальностью, а не предполагает, что пустой стул может подписать.
Seed эпохи под выборкой устроен как commit-reveal: участники сперва фиксируют хеш, затем раскрывают прообраз, после чего всё смешивается без учёта порядка. Тот, кто раскрывается последним, не может сместить выборку, решая, раскрывать ли вообще, — его молчание стоит ему доли залога, а не протоколу справедливости.
Что это покупает
Ни одно свойство здесь само по себе не экзотика. Взвешенная выборка, частичная ротация, пороговые подписи и commit-reveal существуют уже десятилетия; вклад замысла — в их укладке, где ни один слой не нужно доверять ради работы другого. Спецификация перечисляет, что доказано, что аргументировано, а что лишь дорого атаковать — именно в этом порядке.