Это добавит «белый шум», предложенный во второй части моего CCS. Что также приближает monerod к Dandelion++ (есть код, который может быть разделен между функциями). К сожалению, это не завершает вторую часть моего CCS, одной из предложенных целей было создание отдельного мемпула (также необходимого для Dandelion++). Это будет сделано в надежде на то, что скоро будет выпущен патч - взлом мемпула достоин отдельного анализа. Также метка времени в p2p протоколе не была очищена (не обязательно для CCS). Для завершения Dandelion+++ понадобится: Отдельный мемпул (указан в моем CCS) Обнаружение контура (в основном дополняется отдельным мемпулом) Поддержка отправки транзакций в режиме «стебля» Переход от «флуда» к «пушинке» (см. технический документ и/или реализацию Bitcoin). Последние два должны быть значительно проще в реализации после этого патча. Часть стебля в основном реализована и протестирована, теперь требуется только соединение между этими частями. Любой, кто хочет это проверить, может обратиться к разделу test/unit_tests/levin.cpp, тестовый фреймворк должен облегчить тестирование выбора стебля и т.д. Код: byte_slice Я также представил golang-подобную концепцию «среза» для байтов данных, чтобы «белый шум» мог быть увеличен, а не постоянно копировался для каждого соединения. Это также позволило снять блокировку для каждого отправляемого p2p-сообщения. Я не измерял его, но уверен, что это повысит эффективность трансляции транзакции и в конечном итоге заблокирует её повторную ретрансляцию (каждое p2p сообщение генерируется раз, а не копируется повторно). Отличия от CCS Этот патч также отличается от предложения в CCS и моей речи на Monerokon. Может понадобиться еще один markdown-файл, но: Два исходящих соединения I2P/Tor выбираются для белого шума каждые 5 минут. Каждые 10-15 секунд по этим ссылкам отправляется 3 килобайта фиктивного сообщения или фрагмента транзакции. Скрытая служба I2P/Tor, которая получает транзакцию, немедленно передает её по сети общего пользования, а не с задержкой. Это происходит потому, что Dandelion++ предпочтительнее, чем произвольная задержка (Dandelion++ имеет «стеблевую» фазу, а затем «пушистую» фазу, которая уже имеет некоторое время ожидания). Я думаю, что эти изменения оправданны, хотя последний из них спорный. Я изменил его, потому что, как только стало очевидно, что Dandelion++ будет встроен в monerod, стало проще работать «внутри» этого дизайна, а не делать что-то другое. Я оставляю это на усмотрение CCS, чтобы решить, должны ли средства быть выплачены - это может означать, что для выполнения задачи мне придется выполнить Dandelion++. Источник: I2P/Tor White Noise #5793 Перевод: TheFuzzStone (@TheFuzzStone) Редактирование: Agent LvM (@LvMi4) Коррекция: Kukima (@Kukima)