Представляем PoB — Более децентрализованный консенсусный механизм.

Обзор

Каждая блокчейн система — это общество в миниатюре, гибкая организация, состоящая из сети нодов. Работа этой организации регулируется консенсусным механизмом. Консенсусный механизм — это программируемое правило передачи выгод, которое объединяет людей, формирует безопасную сеть и работает  детерминистским образом.

В PoB, консенсусном механизме IOST, «комитет» валидаторов, создающих блоки, насчитывает 17 нодов, которые меняются каждые 10 минут. В рамках каждого цикла в «комитет» валидаторов избирается 17 нодов с наибольшим количеством Servi, а затем они по очереди создают блоки и запрашивают вознаграждения. Каждый раз, когда нод выбирается для участия в создании блока, Servi всех членов «комитета» валидаторов сгорают. Таким образом, у тех нодов, которые не были выбраны, будет больше Servi и больше шансов, что их выберут в «комитет» валидаторов в следующем цикле. При таком механизме в «комитет» валидаторов могут ежедневно избираться сотни различных нодов.

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

Терранс Ван, CTO @ IOST

Общие сведения

Консенсусный механизм IOST — PoB — включает более децентрализованный процесс выбора «комитета» валидаторов по сравнению с существующими системами DPoS, при этом сохраняя преимущества, связанные с масштабируемостью, и противодействие цензуре.

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

Наша модель предусматривает такие процессы голосования и формирования «комитета» валидаторов, в которых большинство нодов может претендовать на право создания блоков (в отличие нескольких главных нодов),  в которых ноды с большим количеством набранных голосов имеют большую возможность получить право создать блок.

Чтобы достичь этого, мы не используем результат голосования как единственный параметр, на основе которого делается выбор. Вместо этого мы предлагаем систему баллов (Servi), чтобы определить членов «комитета» валидаторов и постоянно менять их.

Как стать кандидатом?

Для обеспечения безопасности сети у механизма PoB есть входной барьер для нодов, которые хотят создавать блоки. В текущей версии этот барьер установлен на уровне 0,1% от всех доступных в сети голосов. Как только нод получает количество голосов, превышающее этот порог, он может отправить специальную транзакцию, чтобы стать кандидатом и участвовать  в формировании «комитета» валидаторов и в процессе создания блоков.

Как получить Servi и как голосовать?

Несмотря на то, что результаты голосования не определяют членов «комитета» валидаторов напрямую, они все же оказывают пропорциональное влияние на количество получаемых Servi.  В текущей версии в рамках каждого цикла для создания блока выбирается 17 членов «комитета» валидаторов.

Каждый цикл состоит из трех этапов:

  1. Все кандидаты получат количество Servi пропорциональное количеству набранных голосов.
  2. Согласно количеству Servi первые 17 нодов образуют «комитет» валидаторов, которые будут отвечать за создание блока в следующем цикле.
  3. Баланс Servi всех избранных членов «комитета» валидаторов будет уменьшен на сумму, равную балансу 17-ого нода. Другими словами, количество Servi 17-ого нода обнулится, и оставшиеся 16 нодов потеряют такое же количество.

В текущей версии период голосования длится 10 минут. Благодаря этому в сети IOST члены «комитета» валидаторов сменяются каждые 10 минут.

Пример

Чтобы не усложнять, давайте представим упрощенную версию, в которой в каждый «комитет» валидаторов избирается по 3 нода, а текущая  база кандидатов насчитывает 5 нодов.

Ноды получают 10, 8, 5, 4 и 1 Servi соответственно.  Давайте назовем их A, B, C, D и E. Также давайте представим, что количество голосов не меняется в течение всего периода голосования.

В первом цикле их баллы составляют 10, 8, 5, 4, 1. Ноды A, B и C станут членами «комитета» валидаторов, потому что у них самое большое количество Servi.

Из их баланса Servi вычитается 5 — столько же, сколько было у нода C. Баланс Servi нодов D и E остается прежним. Теперь балансы Servi этих нодов составляют 5, 3, 0, 4 и 1.

Во втором раунде каждый нод снова получает Servi. Теперь их балансы составляют  15, 11, 5, 8 и 2.

Теперь ноды A, B и D становятся членами «комитета» валидаторов и теряют по 8 Servi (баланс Servi нода D). Теперь их балансы Servi составляют  7, 3, 5, 0 и 2.

В третьем цикле на их балансе будет 17, 11, 10, 4, 3 Servi. В этом цикле ноды A, B и C снова избираются в «комитет».

Теперь давайте сразу перейдем к циклу 9. Теперь баланс Servi этих нодов составляет  26, 8, 5, 12 и 9. Нод E станет членом «комитета»валидаторов, даже несмотря на то,что в каждом цикле получал только 1 Servi.

Прочие пункты

  1. По завершении голосования и процесса выбора «комитета» валидаторов начинается циклическая генерация блоков, схожая с механизмом DPoS на основе подписи типа «round robin» (когда подписи расположены в виде круга, чтобы не было понятно, кто подписался первым). Другими словами, в каждом сформировавшемся «комитете» валидаторов каждый его член по очереди создает блок, в то время как все остальные члены подтверждают все блоки.
  2. В большинстве случаев кандидат с наибольшим количеством Servi становится членом «комитета» валидаторов. Чтобы ограничить это, мы установили правило, которое не позволяет, чтобы баланс Servi превышал общее количество отданных голосов более, чем в десять раз.
  3. Если при выборе 17-го кандидата получается ничья, то выигрывает тот нод, который стал кандидатом раньше. На практике это будет происходить чрезвычайно редко.
  4. Чтобы подтвердить свою доступность, кандидаты должны совершать одну транзакцию подтверждения каждые 6 периодов (1 час). В противном случае, этот кандидат потеряет свое место и все голоса.
  5. Если член «комитета» валидаторов не производит блок в течение цикла, то он теряет свои голоса и место.
  6. Токены, использующиеся для голосования, возвращаются на баланс через 7 дней, то же самое касается и нодов, которые теряют свое место. Таким образом, ноды, которые теряют свое место по вышеуказанным причинам получат время, чтобы «остыть» и не будут иметь права быть избранными в «комитет» валидаторов.

Заключение

Консенсусный механизм IOST — PoB — обеспечивает более децентрализованные процессы голосования и формирования «комитета» валидаторов, благодаря системе баллов Servi, в которой количество произведенных блоков будет практически пропорционально количеству полученных голосов.

В то время как такая модель обеспечивает децентрализацию процесса создания блоков и беспристрастность всей сети, она не исключает преимуществ системы DPoS , которая обеспечивает высокую масштабируемость и пропускную способность.

Мы все еще проводим стресс-тесты этой системы и работаем над улучшениями и разрабатываем вспомогательные опции. Если у вас есть отзывы, предложения или комментарии, пожалуйста, не стесняйтесь и пишите мне по адресу Вы также можете напрямую пообщаться с нашей тех командой в Slack’е —

Вопросы и ответы

В: Может ли голосовать любой нод (даже с 1 IOST)?

О: Да, наша сеть открыта для всех, без каких-либо барьеров. Фактически возможно стать кандидатом, членом «комитета» валидаторов, подтверждать и создавать блоки, а также зарабатывать IOST без каких-либо вложений. Достаточно просто иметь обычный домашний компьютер и достаточное количество людей, которые будут вам «доверять» и голосовать за вас.

В: Сколько нодов в одном «комитете» валидаторов?

О: В одном «комитете» валидаторов насчитывается 17 нодов, которые создают и подтверждают блоки, но каждый день для участия в «комитет» валидаторов могут быть выбраны сотни разных нодов. Это обусловлено децентрализованностью и постоянной изменяемостью процесса выборов.

В: Как часто эти ноды будут меняться?

О: В текущей версии временной промежуток для голосования  составляет 10 минут. Это означает, что в сети IOST «комитет» валидаторов будет меняться каждые 10 минут после того, как Servi (полученные за голоса) сгорают. Это обеспечивает гораздо более децентрализованный процесс выборов по сравнению с другими системами типа DPoS. Например, ноды, создающие блоки в EOS не изменятся, даже если изменятся результаты голосования, потому что эти изменения очень малы. Алгоритм IOST  — PoB — гарантирует эффективность таких изменений.

В: Как IOST соотноситься с такими сетями как EOS с точки зрения децентрализованного голосования и процесса выборов?

О: IOST предлагает более децентрализованный механизм голосования, участия и выборов окончательного «комитета» валидаторов, который будет создавать и подтверждать блоки. В EOS не предусмотрен механизм смены членов «комитета» валидаторов, если не проводится повторного голосования (для которого предусмотрен 3-дневный период ожидания после возвращения токенов из залога). Это означает очень высокую вероятность того, что первоначально выбранные для создания блоков ноды (в количестве 21)  останутся в «комитете» валидаторов и будут производить все блоки. Процесс выборов в IOST обеспечивает постоянную смену нодов, создающих блоки.

В EOS для первоначального голосования был выбран только 1 создающий блок нод, и проходило это голосование абсолютно тайно, а это максимально централизованный, непрозрачный процесс.

Непосредственно само голосование в сети EOS сопряжено со сложными техническими моментами и не удобно для пользователя, что создает множество препятствий для участия в сети. Более того, частные ключи должны сообщаться сторонним организациям, что создает огромные проблемы с безопасностью. Также в EOS 1 голос приходится на каждые 30 нодов, из-за чего нарушается право на голосование участников с небольшим балансом токенов.

В сети IOST невозможно постоянно быть членом «комитета» валидаторов, что создает гораздо более децентрализованный процесс формирования «комитета» валидаторов.

В: Какие механизмы предотвращают тайные сговоры между нодами и возможность голосования друг за друга?

О: Из-за того, что кандидаты с наибольшим количеством голосов имеют более высокий шанс быть выбранными в качестве нода, создающего блоки, просто не будет смысла делиться своими голосами и уменьшать свои шансы быть выбранным в «комитет» валидаторов. Это еще больше подтверждается самим процессом выборов и механизмом сгорания servi — гораздо более выгодно иметь более высокий запас голосов по сравнению с другими кандидатами. В других системах типа DPoS, чтобы превзойти конкурента, вам достаточно всего лишь иметь больше голосов, что способствует тайным сговорам и намеренному распределению голосов.

В: Что не позволяет одному субъекту владеть несколькими нодами?

О: Способа определить, владеет ли один субъект несколькими нодами, не существует. Это открытая и децентрализованная сеть, и для размещения нода не существует никаких предварительных условий. Однако, как говорилось выше, делиться голосами и рисковать шансом быть выбранным в качестве кандидата или члена «комитета» валидаторов просто не выгодно.

В: Что произойдет, если будет недостаточно нодов с количеством голосов, превосходящим порог в 0,1%?

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

В: Нужно ли в сети IOST закладывать токены?

О: Да, токены IOST можно закладывать для различных целей, включая голосование и использование ресурсов сети. Это обеспечивает честные выборы «комитета» валидаторов, равную доступность ресурсов, а также решает проблему «отсутствия заложенных средств», чтобы избежать атак на сеть и спама.

В: Чтобы претендовать на место кандидата, кандидат должен получить 0,1% от всех доступных в сети голосов, где 1 IOST = 1 голосу. Верно ли это?

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

В: Как система голосования работает на практике? Как держатели IOST будут отдавать свой голос и как они смогут изменить свое решение?

О: Технически это будет осуществляться через отправку транзакций и смарт-контрактов. На стороне пользователя это будет представлено в виде интуитивного интерфейса, благодаря чему любой сможет легко принять участие в работе сети.

В: Как выбирается «комитет» валидаторов?

О:  Как стать кандидатом: В текущей версии, если вы получаете 0,1% от всех голосов в сети IOST, вы можете отправить в адрес блокчейн сети специальную транзакцию и стать кандидатом в члены «комитета» валидаторов.

Как получить Servi и стать членом «комитета»валидаторов: Посредством распространения информации о сети IOST и ее продвижения, заручившись доверием сообщества и голосуя с помощью IOST, кандидат получает определенное количество Servi. Во время выборов система принимает 17 нодов с наибольшим количеством Servi в качестве членов «комитета»валидаторов, а затем они по очереди создают блоки и получают вознаграждения.

Обновление баланса Servi и смена «комитета»валидаторов: Из баланса всех выбранных нодов вычитается количество Servi, полученное последним из выбранных нодов (член «комитета» валидаторов с наименьшим количеством Servi). Это количество Servi сгорает в балансе всех нодов-членов «комитета»валидаторов, а затем избирается и формируется новый «комитет» валидаторов. В текущей версии «комитет» валидаторов будет меняться каждые 10 минут.

В: Связан ли процесс выборов и с Servi, и с токенами IOST? Каково их пропорциональное соотношение?

О: В сети IOST голоса соответствуют токенам IOST и могут использоваться для голосования. Чем больше у вас токенов, тем активнее вы можете голосовать. Нод-кандидат получит определенное количество Servi в зависимости от количества голосов и в то же время, после каждых удачных выборов из его баланса будет вычитаться определенное количество Servi, и, наконец, члены «комитета» валидаторов будут выбираться из числа нодов-кандидатов согласно количеству Servi.

В: Зачем кому-то создавать блок?

О: Ноды, создающие блоки, получают IOST за создание блоков и за подтверждение транзакций. Эта статья посвящена децентрализованному процессу выбора кандидатов и «комитета» валидаторов, а его свободная модель и структура будут описаны в следующей статье.

В: Что произойдет, если нод создаст “коррумпированный блок”?

О: Каждый блок проверяется каждым членом «комитета» валидаторов и требует ⅔ консенсуса. В ситуации, когда создается “коррумпированный блок”, остальные члены «комитета» валидаторов не будут его проверять, а нод, который создал “коррумпированный блок”, будет исключен из «комитета» валидаторов.

В: Может ли пользователь передать свое право на голосование (разрешить голосовать по «доверенности») другому пользователю, который сможет голосовать от его лица?

Да, это возможно и уже является частью протокола и базового функционала процесса голосования.

Источник

Интересное по теме