Описание работы Delegated Proof-of-stake

Обзор работы Delegated Proof-of-stake

DPoS (Delegated proof-of-stake) — это алгоритм достижения консенсуса в децентрализованой среде, который является альтернативой консенсусам PoW (Bitcoin proof-of-work) и PoS (Peercoin или NXT proof-of-stake). DPoS был разработан в 2014 году в рамках проекта Graphene и впервые был задействован в проекте Bitshares, позже в проекте Steemit.

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

Условия, в которых работает данный алгоритм консенсуса, отличаются от условий в которых работает PoW и PoS. А именно, валидаторам необходимо раскрыть свои личности и заявить о готовности бесперебойно поддерживать работу полноценного узла сети, своевременно выполнять верификацию транзакций и формировать новые блоки.

Консенсус на основе модифицированного proof-of-stake работает по такому правилу, что каждый пользователь по желанию может выставить свою кандидатуру на пост верифицирующей рабочей станции (узла валидатора). Потом среди всех пользователей проводится голосование за кандидатов, где вес каждого голоса определяется суммой активов голосующего. По результатам голосования выбирается N (натуральное число, которое выбирает комьюнити, обычно 20-50) кандидатов, которые получают право формировать новые блоки данных. Правила протокола гарантируют корректное принятие решений, если большая часть активов, принимающих участие в голосовании контролируется честными пользователями.

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

Также важно отметить что держатели монет могут выполнять переголосование за кандидатов в произвольное время. Следовательно, текущая группа валидаторов может измениться и новая очередь валидаторов будет сформирована уже другим составом. Кроме того, один держатель монет может голосовать более чем за одного кандидата, распределяя вес своих монет порционально между несколькими валидаторами.

В DPoS-системах, в отличии от Peercoin, монеты, которые находятся у пользователей, могут одновременно участвовать в голосовании и при этом использоваться для переводов. А в результате изменения баланса вес в голосовании будет изменяться пропорционально.

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

Illustration by Katerina Krashtapuk
Bohdan SkriabinCryptographer, analyst at Distributed Lab