Раньше я думал, что непредсказуемость в блокчейне — это баг, который приходится терпеть, а не функция, которую вы действительно будете проектировать.
Изучение Dusk изменило это.
Представьте, что вы провайдер. Вы внесли стейк, имеете право участвовать, вы знаете, что вас могут выбрать для генерации следующего блока. Но вы не знаете, выберут ли вас. И никто другой тоже не знает — ни остальные валидаторы. Даже вы сами, за десять секунд до того, как это случится.
Странная часть в том, что зерно, которое определяет, кого выберут для блока N+1, еще не существует, пока блок N все еще строится. Оно буквально генерируется текущим блок-генератором, который подписывает предыдущий seed. Ответ на вопрос «кто следующий» не спрятан где-то — он еще не был вычислен.
Почему это важно? Потому что здесь предсказуемость — это скорее уязвимость, а не удобство. Если бы злоумышленник мог выяснить, кто сгенерирует блок 40 уже сегодня, у него было бы сколько угодно времени, чтобы нацелиться на этого валидатора — подкупить его, DDoS-ить, оказывать давление — до наступления момента.
Детерминированная сортировка в Dusk полностью закрывает это окно. Вы узнаёте, что именно вы — генератор, только в тот момент, когда это уже стало правдой.
Так что главный вопрос дизайна был не «как выбрать лидера». Он звучал так: «как выбрать одного и никогда не позволить кому-либо заранее планировать это».
Угадайте, что происходит в момент, когда выбор блока становится хотя бы немного предсказуемым заранее?

#dusk $DUSK @Dusk

Опрос:
Что сломается первым, если вы сможете предсказать следующего блок-генератора
🎯 Появляется возможность подкупа
🛑 Появляется возможность DDoS
⚖️ Оба варианта, одна и та же уязвимость
🔒 Ничего, всё по-прежнему безопасно