В Substrate, в чем разница между Babe, Aura и Grandpa

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

Некоторые из них (например, ) могут даже использоваться вместе в одном узле. В чем разница между каждым алгоритмом консенсуса и какие из них можно или нужно использовать вместе?


person JoshOrndorff    schedule 14.10.2019    source источник
comment
Ссылка в вопросе больше не работает. Не вносить изменения, поскольку я не уверен насчет новой ссылки, но я это github.com/substrate-developer-hub/substrate-node-template/blob/   -  person Mihir Luthra    schedule 22.12.2020
comment
Спасибо, Михир. Я его сейчас обновил.   -  person JoshOrndorff    schedule 26.12.2020


Ответы (1)


Чтобы блокчейн работал (продолжал расти и добавлять новые транзакции), должны произойти две вещи, чтобы решить проблему распределенный консенсус. Обычно эти задания выполняются полными узлами, как в случае с узлом субстрата по умолчанию.

  1. Блокировать создание. Узлы создают новые блоки. Каждый новый блок содержит ссылку на родительский блок.

  2. Завершить блокировку. Когда в цепочке появляются вилки, узлы должны выбрать, какую сторону вилки считать настоящей или «канонической». После завершения блока каноническая цепочка будет всегда содержать его.

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

Блокировать авторинг

Аура

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

В Aura вилки возникают только тогда, когда блоку требуется больше времени, чем продолжительность слота, чтобы пересечь сеть. Таким образом, вилки редко встречаются в хороших сетевых условиях.

Детка

Babe также в первую очередь обеспечивает создание блоков. Например, Aura, это алгоритм консенсуса на основе слотов с известным набором валидаторов. Кроме того, каждому валидатору назначается вес, который должен быть назначен до начала производства блока. В отличие от Ауры, власти не работают по очереди. Вместо этого во время каждого раунда каждый орган генерирует псевдослучайное число, используя VRF. Если случайное число меньше их веса, им разрешено создать блок.

Поскольку несколько валидаторов могут создавать блок в одном и том же слоте, вилки более распространены в Babe, чем в Aura, и распространены даже в хороших сетевых условиях.

Реализация Babe в Substrate также имеет резервный механизм, когда в данном слоте не выбраны никакие права доступа.

Доказательство работы

Proof of Work также обеспечивает создание блоков. В отличие от Babe и Aura, он не основан на слотах и ​​не имеет известного набора прав доступа. В Proof of Work любой может создать блок в любое время, если он может решить вычислительно сложную задачу (обычно хеш поиск прообраза). Сложность этой проблемы можно настроить так, чтобы обеспечить статистическое целевое время блока.

Блокировать завершение

Вероятностные методы

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

Дедушка

Дедушка обеспечивает доработку блока. У него есть известный взвешенный набор авторитетов, как у Бейбла. Однако дедушка не создает блоки; он просто слушает сплетни о блоках, которые были созданы некоторым движком авторинга, подобным трем рассмотренным выше. Каждый орган участвует в двух турах голосования по блокам. подробности голосования выходят за рамки этого сообщения. После того, как 2/3 «дедушкиных властей» проголосовали за конкретный блок, он считается завершенным.

Гибридный консенсус

Как правило, механизм создания блоков и гаджет окончательности могут использоваться вместе в одной цепочке, поскольку Бейб и Дедушка указаны в коде, связанном в вопросе. Когда используется такая система, механизмы создания блоков должны быть осведомлены о блоках, которые завершены, чтобы они не тратили время на создание поверх блоков, которые никогда не будут в канонической цепочке.

Примечание о весах: Babe, Grandpa и многие другие алгоритмы, которые не поставляются вместе с Substrate, полагаются на веса. Сами алгоритмы консенсуса обычно не диктуют, как назначаются веса, а скорее предполагают, что они назначаются каким-то образом, оставляя назначение внешнему механизму. В общедоступных сетях обычно назначают веса в зависимости от количества поставленных токенов. В узле субстрата по умолчанию все веса установлены на 1, потому что алгоритм фрагменов сохраняет все валидаторы имеют одинаковые ставки.

person JoshOrndorff    schedule 14.10.2019