Сумерки затащили меня сегодня в другую кроличью нору — не про приватность, а про то, как блоки физически переходят от одного узла ко всем остальным, не душа сеть самой собой.

большинство блокчейнов по-прежнему используют протоколы сплетен (gossip):

узел узнаёт о блоке, пересылает его случайным пирами, те пересылают дальше, и одни и те же данные постоянно повторно передаются по избыточным маршрутам. Dusk заменил это на Kadcast, построенный на маршрутизации в стиле Kademlia с XOR-расстоянием. У каждого узла есть двоичный ID, а расстояние между любыми двумя узлами — это просто XOR их ID; благодаря этому пира группируются в структурированные "k-buckets", а не в случайные соединения. Когда блок нужно рассылать, сеть не заливается потоком (flood), а он распространяется по детерминированным путям на основе этой метрики расстояния. Упомянутое в исследованиях по дизайну показывает, что расход полосы пропускания примерно на 25–50% ниже по сравнению с gossip, и, по-видимому, это снижает долю устаревших/«осиротевших» блоков на 10–30% в условиях быстрых блоков.
Вот что меня зацепило по-настоящему: Kadcast ещё и солит метрику расстояния при каждой рассылке — с помощью хэша, полученного из самих данных блока или транзакции. Так позиции узлов псевдослучайно перенастраиваются на каждой пропагандистской итерации. Это сделано специально, чтобы атакующий не мог предсказать маршруты и занять позиции для перехвата или задержки конкретных сообщений — защита от eclipse-атаки, встроенная прямо в сетевой уровень, а не просто «прикрученная» где-то правилом файрвола.
@Dusk это было нужно, потому что Succinct Attestation зависит от того, как комитеты быстро и надёжно обмениваются голосами — медленный, перегруженный сетевой уровень тихо подорвёт быструю финальность, которую консенсус обещает на бумаге. $DUSK -secured валидаторы так же быстры, как быстро до них доходят сообщения. Отличное решение проблемы, которую большинство цепей даже не называют. Сработает ли такая структурированная маршрутизация, когда количество валидаторов реально масштабируется до тысяч — или обслуживание k-bucket со временем само станет узким местом?
#dusk $DUSK @Dusk