Консенсус в Minter

From Minter Wiki
(Redirected from Консенсус)

Консенсус - достижение согласия, договоренности между участниками. В сети Minter, как в любом другом блокчейн проекте, термин "консенсус" (обычно в словосочетании "алгоритм консенсуса") применяют для описания того, как узлы сети определяют "правильные" и "неправильные" блоки.

Аглоритм консенсуса Minter

Сеть Minter основана на движке Tendermint и использует алгоритм консенсуса DPoS (Delegated Proof-of-Stake, «делегированное подтверждение доли»). Этот алгоритм консенсуса считается более современным и перспективным, чем, например, PoW (Proof-of-Work, “подтверждение работы”).

Суть DPoS в том, что все участники сети (делегаторы) могут передать свои монеты (делегировать стейки) определенным узлам, называемым валидаторами. Валидаторы собирают транзакции в блоки и голосуют за них. Сеть Minter выплачивает комиссию за каждый созданный блок, которая делится между всеми валидаторами, а те распределяют ее между делегаторами.

Таким образом, каждый делегатор каждую минуту получает вознаграждение пропорционально делегированному стейку. А валидаторы получают комиссию за обработку транзакций и взимают процент с наград, перечисляемых делегаторам. Размер доли в наградах равен весу голоса валидатора (силе), зависит от величины делегированного ему стейка и обычно указывается в процентах от всех делегированных стейков сети Minter.

Протокол Tendermint

Валидаторы обрабатывают блоки транзакций по протоколу Tendermint. Это асинхронный протокол по достижению BFT-консенсуса, по сути, машина состояний.

Схема работы протокола Tendermint (перевод, оригинал на сайте Tendermint)

Эта машина состояний работает следующим образом:

  • Валидаторы по очереди предлагают блоки транзакций и голосуют за них. Блоки соединены в цепочку, номер блока называется высотой блока. Блок может быть не поддержан, в этом случае сеть переходит к следующему раунду и другой валидатор может предложить блок для этой высоты.
  • Два этапа голосования необходимы для успешной проверки блока; они называются предварительным голосованием (англ. “prevote”) и предварительным коммитом (“пре-коммит”, англ. “precommit”, предварительное сохранение состояния). Блок сохраняется, если более 2/3 валидаторов “пре-коммитят” (поддерживают) один и тот же блок в одном раунде.

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

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

Для того, чтобы валидаторы не создавали несколько блоков с одним номером (на одной высоте), введены правила блокировки. Если валидатор уже поддержал какой-то блок, он блокируется от поддержки других блоков в данном раунде до того, пока не проголосует за него и этот блок не будет принят сетью.

Стейк и ответственность

Размер стейка валидатора имеет огромное значение, так как именно он определяет вес голоса ("силу") валидатора при голосованиях. Если сила какого-то валидатора превысит 33%, он сможет блокировать работу сети. И именно стейк как показатель материальной заинтересованности служит гарантией, что валидатор не будет злоумышлять против правил сети.

Хотя за недобросовестные действия валидаторов штрафуют, основная ответственность лежит на делегаторах - необходимо следить за силой валидаторов и отзывать свои стеки от валидатора, сила которого подходит к 30%, а также если валидатор получает предупреждения о некорректных действиях.

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

Отзыв стейка

Протоколом Tendermint предусмотрена временная блокировка стейка при его отзыве от валидатора. В сети Minter этот срок равен 30 дням. На время блокировки стейк исключается из расчетов по выплате награды.

Данная мера введена для защиты сети от недобросовестных действий валидаторов (так называемой Nothing-at-stake проблемы) и в целом повышает устойчивость сети, ведь делегаторы не могут слишком часто перемещать свои стейки, а потому более ответственно относятся к выбору валидатора.

Смотрите также

Источники