На шаг ближе к координации: IOTA выпускает быстрый вероятностный симулятор консенсуса

В предыдущем посте блога исследовательский отдел IOTA, в сотрудничестве с одним из наших получателей исследовательских грантов, доктором Себастьяном Мюллером, опубликовал результаты моделирования протокола FPC, сокращенно от «Быстрый вероятностный консенсус», который был предложен доктором Сергеем Поповым и доктором Биллом Бьюкенен.
Сегодня мы рады поделиться с вами исходным кодом симулятора, который мы используем для получения некоторых результатов FPC. Выпуск симулятора FPC для общественности позволяет нам включать сообщество, открывать технологии и поощрять их тестирование в условиях дикой природы.
Наш симулятор написан на Go, и вы можете получить доступ к коду из следующего репозитория:
Симулятор оптимизирован для оценки поведения FPC в определенных условиях. Мы упростили исходный код для голосования по отдельным транзакциям. В симуляции узлы могут вести себя либо честно, либо отрицательно.
Для каждой транзакции мы определяем среднее начальное мнение о честных узлах, стратегию для противников, а также другие параметры. Мы кратко обсудим некоторые из этих параметров в следующем разделе.
Вид сети
В документе FPC мы предполагаем, что каждый узел имеет полное представление о сети, но нас также интересует, что произойдет, если вместо этого мы предположим частичное представление о сети. Другими словами, мы хотим проанализировать, как отсутствие полных знаний обо всех других узлах в сети влияет на способность достичь консенсуса.
[irp]
Для изучения этого сценария мы включили модель Ваттса-Строгатца, которая позволяет моделировать сеть в виде графикаа со свойствами малого мира. Для создания этих графиков добавлены два параметра:
Во-первых, параметр δ, который задает долю сети, с которой может взаимодействовать узел, и параметр γ, который представляет собой вероятность перемонтажа. График создается следующим образом: сначала мы создаем кольцевой график, в котором каждый узел соседствует с ближайшими соседями δN-1, где N — общее количество узлов.
Затем для половины из этих соединений новый одноранговый узел выбирается случайным образом из оставшихся узлов с вероятностью перемонтирования γ. Отметим, что при γ = 0 мы получаем кольцевой график, который максимизирует диаметр графика при фиксированном δ. Последнее может быть понято как наихудший сценарий с учетом графика Ваттса-Строгатца.
Хаотичность
Мы включили возможность уменьшения вероятности получения случайного числа. Это позволяет изучить производительность протокола в случае, если случайный порог не предусмотрен для каждого раунда. Это имеет особое значение для понимания того, сколько случайности требует протокол FPC.
Стратегии противника
[irp]
Кроме того, мы предоставляем возможность включить две осторожные стратегии противника. В первом случае противник пытается атаковать целостность мнений, то есть переворачивать первоначальное мнение, непрерывно голосуя за первоначальное мнение меньшинства. Во втором случае злоумышленник пытается атаковать сеть, пытаясь создать ошибку соглашения и нарушить консенсус между узлами.
Метрики и оценка
В настоящее время симулятор поддерживает следующие основные метрики, для которых мы также предоставляем оценочные сценарии:
TerminationRate: скорость, с которой все честные узлы завершают работу до максимально допустимого раунда.
AgreementRate: скорость, с которой все честные узлы приходят к единому мнению
IntegrityRate: скорость, с которой все честные узлы сходятся в одном мнении, а окончательное мнение совпадает с исходным большинством.
EtaEvolution: гистограмма честных значений η для каждого раунда для узлов, которые еще не завершены.
Для этого мы включили три оценочных скрипта, написанных на Python с Matplotlib.
plot.py и plot2d.py: эти два сценария позволяют выполнять оценку с 1 и 2 векторами входных данных соответственно. Мы используем скрипт для извлечения данных из CSV-файлов вывода, которые генерируются кодом моделирования.
Например, на рисунках ниже мы применяем сценарий plot.py для отображения данных, полученных путем оценки эффектов частичного сетевого просмотра. На первом рисунке мы придерживаемся консервативной точки зрения и предполагаем, что график принимает форму кольца. Можно видеть, что частичное представление сети достаточно для того, чтобы узлы пришли к соглашению.
Для второго рисунка мы рандомизировали топологию, считая, что некоторые из соединений пересоединены с вероятностью γ. Мы показываем, что скорость соглашения может быть значительно увеличена при сохранении небольшого обзора сети.
[irp]
plot_eps.py: этот скрипт предоставляет тепловую карту распределения значений η во времени. Например, на следующем рисунке вы можете увидеть эволюцию серверов, если большая доля узлов неблагоприятна.
Кроме того, следующие метрики также могут быть извлечены, и их вывод предоставляется в виде файлов CSV:
MeanTerminationRound: Средний раунд после завершения FPC
MedianTerminationRound: Средний раунд после завершения FPC
TerminationRound: Количество раундов, необходимых для завершения FPC в форме гистограммы
MeanLastRound: средний последний раунд по всем узлам
LastRoundHisto: гистограмма отдельных раундов завершения узлов
OnesProportion: доля 1 с после завершения протокола
OnesPropEvolution: эволюция пропорции 1с
Исследовательская группа IOTA постоянно работает над улучшением кода моделирования и добавлением новых функций. Если вам интересно и вы хотите узнать больше об этом, не стесняйтесь экспериментировать с этим кодом! Кроме того, если вы хотите внести свой вклад, вы можете реализовать новые стратегии противника, а также защитные механизмы. Более подробную информацию о том, как построить и запустить симулятор, можно найти в файле README хранилища.
Выпуск быстрого вероятностного симулятора консенсуса является еще одним шагом вперед в проекте Coordicide. Это позволяет нам взаимодействовать с сообществом и исследователями, заинтересованными в технологиях. Благодаря этому у людей во всем мире есть еще один способ внести свой вклад в усилия или даже подать заявку на получение грантов.
Мы надеемся, что вы получите такое же удовольствие от разработки этого симулятора, как и мы.