В проектах публичных блокчейнов, с которыми я сталкивался, P2P-уровень часто оказывается последним, на который обращают внимание: всем больше нравится обсуждать консенсус, виртуальные машины и кроссчейн. Но те, кто реально запускал полный нод, знают: когда нагрузка по пропускной способности растёт, за месяц можно «сжечь» несколько терабайт трафика. В небольших масштабах это ещё терпимо, но если нужно обслуживать глобальные финансовые институты, эта проблема становится уже неотвратимой.

В белой книге описание традиционных P2P-сетей довольно прямолинейное: у них есть две серьёзные «болевые точки» — высокий расход пропускной способности и большая задержка. Моё понимание такое: при традиционном широковещательном подходе каждый блок или сообщение о транзакции должно распространяться по всей сети. После получения сообщения каждый узел пересылает его всем соседям, из‑за чего объём сообщений растёт экспоненциально. В сети оказывается полно повторяющихся избыточных данных.

Решение Dusk@Dusk — Kadcast, основанный на Kademlia DHT. Узлы он организует в иерархию по типу дерева: каждый узел не пересылает слепо всем подряд, а выбирает узлы для отправки исходя из XOR-расстояния — пересылает только тем, которые находятся на возрастающем расстоянии. Сообщение как будто последовательно «передаётся сверху вниз» по дереву, создавая каскадный эффект: на каждом уровне пересылают лишь небольшому числу узлов, а не всем узлам сети. #dusk

Эта идея очень меня вдохновила. По сути, она говорит о том, что P2P-уровень блокчейна не обязательно строить по шаблону «все сообщают всем». $DUSK логика распространения финансовой информации сама по себе является принципом «кто нуждается — тот и получает». Насколько именно Kadcast снижает потребление пропускной способности, белая книга конкретных тестовых данных не приводит, но с точки зрения механизма проектирования уменьшение избыточного объёма сообщений должно быть весьма значительным.

Однако у древовидной структуры есть и уязвимые места: устойчивость промежуточных узлов критически важна для сети, и это нужно будет постоянно отслеживать в дальнейшей эксплуатации.