#dusk $DUSK О Dusk, не стоит зацикливаться только на объёмах стейкинга

Многие, как только речь заходит о безопасности PoS, сразу представляют себе: «кто больше денег — тот и решает» — крупные держатели объединяются, а вес стейка определяет всё. Но на Dusk эта шаблонная логика не работает, её нужно пересобрать.

На Dusk используется консенсус под названием Succinct Attestation — PoS с комиссионным устройством. Суть не в том, сколько поставлено в стейкинг, а в том, *кого* выбирают для формирования блока. Причём даже сам формирующий блок заранее не может вычислить, как пройдёт его очередь и что именно получится. Это достигается алгоритмом deterministic sortition: он берёт SHA3, смешивает в единую оценку seed из предыдущего блока, номер раунда и шаг, затем отбирает участников в соответствии с весами стейка. Откуда берётся seed? Формирователь блока в предыдущем раунде подписывает ключом следующий seed, используя приватный ключ. То есть до того, как формирователь подпишет имя, он сам не знает, каким будет seed в следующем раунде. Хотите заранее сговориться и «договориться по месту»? На уровне алгоритма эту возможность просто намертво блокируют.

Обработка форков тут тоже любопытная. rolling finality имеет четыре ступени: accepted, attested, confirmed, final — каждый уровень «продвигается» вперёд. Блоки низких раундов можно заменить последующими, если для них не было достигнуто «доказательство провала». Но как только дальше подтверждённых блоков становится достаточно много, вероятность форка падает экспоненциально — и в итоге всё «заваривается» в необратимом состоянии final. Чтобы не дать развернуть хитрую схему вроде «нарочно бросить раньше стоящие раунды в воздух, а самому отсидеться на поздних и собрать награды», протокол предусматривает несколько слоёв противодействия: награды за голосование, дополнительные баллы, исключение следующего формирователя из права голосовать, плюс ограничение на число итераций. В терминах теории игр все основные щели, которые можно было бы использовать для манёвров, по сути закрыты.

Если подумать наперёд, многие цепочки отдают проблему «предсказуемости права формировать блок» на откуп механизмам наказания. Dusk же решает её иначе — точнее, вырезает саму причину на уровне алгоритма выбора. На мой взгляд, это радикальнее: безопасность достигается не за счёт наказаний, а за счёт того, что «не посчитать заранее». Стоит ли брать как пример? Решайте сами. @Dusk