27 мая на официальном ресурсе Aergo в Medium.com появилась статья под названием «DPoS консенсус в Aergo Mainnet».
Приводим здесь перевод данной статьи от ресурса CryptoCoinExpert.info:
Подробное описание консенсуса DPoS — делегированного доказательства доли (Delegated Proof of Stake), реализованного в ядре блокчейна Aergo.
Перевод статьи — DPoS: Consensus on the Aergo Mainnet, которую написал Сун Чже Ву — Developer at Blocko and AERGO
Вступление
Каждый блокчейн протокол использует согласованный алгоритм для поддержки одного и только одного списка криптографически связанных блоков — блокчейна. Самым известным в мире блокчейнов является консенсус Накамото реализованный в Bitcoin, основанный на Proof of Work (PoW). Он позволяет достигать полной децентрализации, допуская окончательность только вероятностным методом. В этом случае несколько ветвей могут конкурировать друг с другом и постепенно со временем превращаться в одну. Другая крайность в спектре — это консенсусы, которые произошли из традиционного Византийского соглашения (BA). Они гарантируют мгновенную окончательность блока, но ограничивают степень децентрализации.
Консенсус делегированного подтверждения доли (DPoS)¹, который используется в основной сети Aergo, находится посередине между вышеупомянутыми двумя консенсусами. Он делегирует исключительное право на генерацию блоков для ряда выбранных производителей блоков (BP), в то же время разрешая реорганизацию в ограниченном диапазоне. (A) Следуя модели Proof of Stake (PoS) и (b) поддерживая только ограниченное количество BP, это решает как проблему производительности, так и проблему чрезмерного энергопотребления, обнаруженную в консенсусе на основе PoW.
В этой статье дается подробное описание DPoS, реализованного в ядре блокчейна Aergo. В оставшейся части статьи «DPoS» означает DPoS, реализованный в ядре блокчейна Aergo, если не указано иное определение.
Делегированное доказательство доли в Aergo
Производство блоков
В DPoS разрешено генерировать блоки только ограниченному количеству² узлов, называемых производителями активных блоков (BP). Они выбираются путем голосования среди заинтересованных сторон. Время равномерно делится на слоты, и для каждого слота должен быть создан максимум один блок. Активные BP распределяются по этим слотам путем подсчета голосов и по очереди производят блоки.
Для простоты, давайте рассмотрим пример четырех активных BP, которые являются соответственно A , B , C и D в порядке убывания голосов. Интервал блока составляет 1 секунду. Если все в порядке, блокчейн работает так, как показано на рисунке 1.
Рисунок 1. Производство блоков при нормальной работе; Буква в каждом квадрате — это блок производителя
Каждый BP генерирует блок каждые четыре секунды. Однако, когда первый блок не получен вовремя, следующий BP должен его сгенерировать. Например, предположим, что A создал блок «1», а затем B упал, прежде чем производить блок «2» В этом случае, С должна генерировать блок «2» , а не B . На рисунке 2 показано, как выглядит блокчейн в случае такого сбоя.
Рисунок 2. Производство блоков при сбое B
Нет блоков, соответствующих слотам «1» и «5», так как B дает сбой, так что блоки распределяются неравномерно по времени; временной интервал между блоками «1» и «2» примерно в два раза длиннее (2 с), чем обычно (1 с).
Fork (разветвление)
С другой стороны, DPoS позволяет разветвление и реорганизацию, как в Bitcoin. Давайте предположим, что B отключен от других BP из-за сбоя в сети. Даже в этом случае B и другие ( A , C , D ) не останавливают производство блоков. Они соответственно управляют своими собственными блокчейнами, как показано на рисунке 3.
Рисунок 3. Разветвление сети; B и (A, C, D) отключены друг от друга
Обратите внимание, что слоты «1» и «5» главной цепи (верхняя) пустые, потому что блоки, созданные B , не принимаются ( A , C , D ) из-за разделения сети.
Нижняя цепь, управляемая B, является боковой цепью, поскольку она короче другой; В то время как высота главной цепи становится равной 7, высота боковой цепи все еще составляет только 3. Таким образом, согласно правилу самой длинной цепи, как только проблема сети решена, и блоки главной цепи отправлены в B , B становится известно, что его цепь короче другой. Наконец, она начинает следовать основной цепи (реорганизация).
Законченность: Последний необратимый блок
Если блок подключен к цепочке блоков, его можно рассматривать как приводящий в действие сам блок и его родительские блоки. Исходя из этой идеи, в DPoS была введена концепция, называемая последним необратимым блоком (LIB). Как только блок становится LIB, любая реорганизация, выходящая за его пределы, запрещена. Соответственно, гарантируется законченность LIB и предшествующих ей блоков. При нормальных условиях LIB постоянно обновляется до более высокого значения, за исключением начального периода перезагрузки.
Говоря техническим языком, LIB определяется в два этапа:
- Когда большинство (⅔+) ВР присоединяют к цепочке блоки, первым из них становится предлагаемая LIB.
- Предложенная LIB, наконец, становится LIB, когда дополняется блоками из другого большинства BP.
Первоначально диапазон голосования [или подтверждения] по блоку не имел ограничений. Другими словами, блок, подключенный к цепочке, считался голосованием за сам блок и все вышестоящие блоки. Однако позже он будет изменен, чтобы избежать конфликтующих LIBs³. В модифицированном варианте блок, сгенерированный BP X, подтверждает только ряд предшественников блока, произведенного BP X в последний раз.
Рисунок 4. Определение последнего необратимого блока в случае 4 BP
Простой пример приведен на рисунке 4. Это случай с сетью DPoS 4-ВР, большинство голосов в ней составляет 3. В этом случае голоса 3 ВР необходимы для достижения консенсуса соответственно на каждом из этапов определения LIB. Поэтому, как показано на рисунке 3, блок «1» становится предлагаемой LIB при подключении блока «3» к цепи (1 фаза). После этого блок «1» окончательно переходит в LIB, когда к нему добавляется блок «5» (вторая фаза). При нормальных условиях, как только блок завершен в виде LIB, высота LIB увеличивается на 1 при подключении нового блока; один новый блок сопровождает новый LIB.
Ставки, голосование и выборы
Активные BP выбираются пользователями Aergo, которые ставят свои токены (Aergo) ⁴. Заинтересованная сторона может свободно голосовать за нескольких кандидатов (максимум 30 кандидатов), хотя голосование ограничено 1 голосом в день. Результат голосования собирается каждые 100 блоков. Рейтинг влияет на смену режима после 100 блоков. Эта схема выборов проиллюстрирована на рисунке 5. Здесь ВР на блоке «700»выбираются в соответствии с рейтингом, собранным на блоке «600» (а не «700»). Она призвана снизить вероятность неоправданно частой смены режима в результате реорганизации, поскольку реорганизация прошлых блоков менее вероятна, чем недавних.
Рисунок 5. Схема выборов ВР
Резюме
На простом примере, состоящем из 4 BP, мы объяснили, как работает DPoS. Его основными достоинствами являются:
- генерирование блока ограниченным количеством избранных ВР; и
- возможность реорганизации только в пределах ограниченного диапазона блоков.
Первое обеспечивает быстрое и стабильное производство блоков, в то время как второе гарантирует абсолютную окончательность блоков, пока большинство активных BP находятся в нормальном режиме работы. Благодаря им DPoS может достичь высокой производительности при умеренной степени завершенности транзакций. Такой баланс между производительностью и окончательностью является одним из наиболее важных факторов, определивших наш выбор DPoS для консенсуса в сети Aergo.
_____________________________________________________________________________________________________
- DPoS был впервые представлен как алгоритм консенсуса для BitShares. Текущая реализация Aergo похожа на реализацию в EOS.
- В настоящее время сеть Aergo работает с 13 активными ВР на стадии инкубации.
- Прочтите «Исправить потерю консенсуса DPOS из-за противоречивого последнего необратимого блока».
- Ставка и голосование проводятся путем подачи заявок на участие в торгах.
Добавить комментарий