Какие механизмы/алгоритмы консенсуса на блокчейне бывают?

4687
Просмотры

Почему протоколы консенсуса так важны? Так как блокчейн — децентрализованная одноранговая система, у которой нет центрального органа власти. Хотя это создает систему, которая лишена коррупции, есть серьезная проблема: кто принимает решения, как это происходит без центральной организации? Чтобы блокчейн принимал решения, участникам сети необходимо прийти к соглашению, используя «механизмы консенсуса».

Итак, как работают эти механизмы консенсуса и каковы основные из разновидности рассказываем в этом материале.

Теоретическая сторона понятия «консенсус»

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

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

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

Метод, посредством которого достигается принятие решений, называется «механизмом консенсуса». Его цели:

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

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

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

Проблема византийских генералов

Какие механизмы/алгоритмы консенсуса на блокчейне бывают?
Источник: hackernoon.com

Это классическая проблема — децентрализованные вычисления, которые обычно объясняются через пример с византийскими генералами. Проблема в том, что несколько византийских генералов и их армии окружили город. Они должны единодушно решить, нападать или нет. Если некоторые генералы атакуют без других, осада закончится трагедией. Генералы разделены расстоянием и должны передавать сообщения друг другу. Несколько протоколов криптовалют используют переработанную версию BFT для достижения консенсуса, потому что у ситуации есть отсылки к блокчейну. Также цель — поддержать работу огромной сети. Если вы отправляете кому-то деньги, как вы можете быть уверены, что никто в сети не изменит сумму?

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

Теперь рассмотрим список алгоритмов консенсуса, которые могут решить проблему византийских генералов.

Proof Of Work / PoW

Популярные валюты: Bitcoin, Ethereum, Litecoin, Monero, ZCash, Dogecoin и многие другие.

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

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

Доказательство работы является неэффективным процессом из-за огромного количества потребляемой энергии.

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

В результате этого биткоин не так децентрализован, как хочет. Например, у BTC ~ 65% хешета делится между 5 пулами. Теоретически, они могут объединяться друг с другом и запускать атаку 51% в сети.

Proof of Stake / PoS

Популярные валюты:  VCash, BitBay, Peercoin, Qtum, Stratis

Доказательство владения доли делает весь процесс добычи виртуальным и заменяет майнеров валидаторами. Процесс работает так:

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

Протокол POS намного удобнее, чем POW. В POW нужно тратить много ресурсов, когда PoS позволяет работать с любого устройства онлайн, более централизован и менее подвержен атакам (так как на кону поставленные деньги). Но проблема в том, что участие в подтверждении блока требует много заблокированных средств, что делает такую добычу более элитарной: маленькая мощность для майнинга даст просто мало вознаграждения при работе с пулом, а мало заблокированных средств не даст быть валидатором.

Nothing at Stake в PoS / Нечего терять

Но в PoS есть проблема «Nothing at Stake» — можно поддерживать любые цепи (в том числе злоумышленные), так как терять нечего. Чтобы внедрить консенсусную систему POS в Ethereum, нужно решить эту проблему, и Ethereum собирается сделать это очень интересным способом, через Casper (подробности).

Если кратко, то Каспер отличается от других протоколов Proof of Stake:

  • Валидаторы ставят часть своих Эфиров как долю.
  • После этого они начнут проверку блоков. Когда они обнаруживают блок, подтверждают, поставив на него свою долю.
  • Если блок добавляется, то валидаторы получат вознаграждение, пропорциональное их ставкам.
  • Однако, если валидатор действует злонамеренно и пытается «ничего не поставить на карту», ​​они будут немедленно заблокированы, а все их стэки пропадут.

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

Proof of Stake Time / PoST

Сначала использовать это Vericoin. Доказательство времени ставки использует возраст монеты, но вместо того, чтобы брать количество монет для расчета возраста, используется период времени, в течение которого монеты удерживались по конкретному адресу.

Delegated Proof Of Stake / DPOS

Делегированное доказательство доли владения используют Steemit, EOS, BitShares.

EOS использует этот механизм консенсуса для масштабирования до миллионов транзакций в секунду. Подробнее о принятом в проекте алгоритме в разделе «Как майнить EOS».

DPoS является порождением Дэниела Ларимера и на самом деле очень отличается от PoS. В DPoS токены не голосуют за сами блоки, но голосуют избрание делегатов, которые проведут проверку от своего имени. Их может быть в районе 21-100. Делегаты периодически переизбираются. Система работает быстро. Если избранные узлы постоянно пропускают блоки или публикуют недействительные транзакции, ставящие голосуют против них и заменяют их лучшим вариантом.

В DPoS майнеры могут сотрудничать, чтобы создавать блок, вместо коркурирования, как в PoW и PoS. Частично централизуя создание блоков, DPoS может работать на порядки быстрее, чем большинство других консенсусных алгоритмов.

TAPOS / Транзакции как доказательство доли

Транзакция как доказательство ставки или TAPOS является функцией программного обеспечения EOS. Для каждой транзакции в системе требуется хэш последнего заголовка блока. Это дает следующее:

  • Предотвращение повтора транзакций в разных блокчейнах.
  • Сигнал сети, что пользователь и их доля находятся на определенном форке.
  • Это мешает валидаторам действовать злонамеренно в других цепях.

dBFT / Делегированная задача византийских генералов

Используется NEO.

Создатели Neo выбрали этот протокол, поскольку он должен обеспечивать лучшее масштабирование и производительность по сравнению с существующими решениями.

Чтобы объяснить, как работает dBFT, будем использовать упрощенную аналогию. Есть страна под названием Нео. Каждому гражданину страны предоставляется право голосовать, кто будет их лидером, он также называется делегатом. Делегаты составляют законы страны. Если граждане не согласны с тем, как делегат проголосовал за закон, они могут проголосовать за другого делегата в следующий раз. Затем граждане рассказывают свои избранникам, что он хочет. Каждый делегат должен отслеживать требования всех граждан и документировать их в книге. Эти требования будут учтены при принятии законов, направленных на то, чтобы сделать граждан счастливыми.

Когда пришло время принять закон, случайным образом из группы делегатов назначается  спикер. Он предлагает закон, основанный на требованиях граждан. В предлагаемом законе он рассчитывает, как закон повлияет на уровень счастья страны. Затем спикер лично вручает делегатам предложенный им закон. Делегаты решают, соответствует ли расчет уровня счастья, который предложил спикер, их собственным. Если 66% процентов делегатов согласятся с тем, что подсчитанный уровень счастья верный, закон принимается.

Если менее 66% делегатов согласны, то новый спикер выбирается случайным образом, и процесс начинается. Эта система предназначена для защиты от предателей и лидеров с вычислительными проблемами.

Применяя эту аналогию к блокчейну Нео, любой, кто владеет Нео, является гражданином. Большинство держателей Neo являются обычными нодами, которые могут передавать или обменивать монеты. Как и граждане страны, они не участвуют в проверке блоков. Делегаты представляют собой особые ноды учета: они проверяют каждый блок, записанный в блокчейн. Чтобы стать узлом учета, должны быть соблюдены определенные требования: специальное оборудование, выделенные интернет-соединения и определенный объем GAS (на момент написания 1000).

Дальше по аналогии: закон — текущий блок в блочной цепочке, а уровень счастья — это хэш текущего блока.

BFT алгоритм

Используют Hyperledger, Stellar, Dispatch, and Ripple.

Практическая задача византийских генералов (PBFT): одним из первых решений этой проблемы был разработан данный алгоритм. В настоящее время он используется Hyperledger Fabric. Это высокая пропускная способность транзакций, но централизация.

Федеративное византийское соглашение (FBA): еще один способ решений проблемы византийских генералов, используемой Stellar и Ripple. Общая идея заключается в том, что каждый генерал, ответственный за свою собственную цепочку, сортирует сообщения, чтобы установить истину. В Ripple генералы (валидаторы) предварительно выбираются основателями Ripple. В Stellar любой может быть валидатором, поэтому вы выбираете, каким валидаторам доверять.

Это дает высокую пропускную способность, низкие транзакционные издержки и масштабируемость.

Какие механизмы/алгоритмы консенсуса на блокчейне бывают?

Proof Of Activity / Доказательство деятельности

Реализован в тестнете Ethereum Kovan.

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

Proof Of Burn / Алгоритм сжигания монет

Использует Slimcoin.

Самая популярная реализация принадлежит Йену Стюарту, но могут быть другие варианты.

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

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

Proof of Weight / Доказательство веса

Используется в Algorand, Filecoin, Chia.

Это группа алгоритмов консенсуса.  Общая идея заключается в том, что если в PoS ваш процент токенов, принадлежащих сети, дает вероятность «обнаружения» следующего блока, в системе PoWeight используется другое другое взвешенное значение. Конкретный пример: Proof-of-Spacetime от Filecoin взвешен на том, сколько данных IPFS вы храните. Другие системы могут включать в себя вес таких вещей, как «Доказательство репутации».

Похожи на это алгоритмы ниже:

Proof of Capacity и Proof of Storage

Proof of Capacity — это осуществление концепции «мегабайты как ресурсы». Чтобы получать вознаграждение, нужно поделиться своим местом на жестком диске. Это помогает на пользу направлять ресурсы, которые не используются.

Например, сейчас многие предпочитают пользоваться облачными хранилищами, а заблаговременные компьютеры с HDD на терабайты простаивает: пару фильмов можно удалить, как и игры после прохождения, а больше половины может быть просто никогда не занята.

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

Proof-of-Storage — это похожий алгоритм, но мегабайты используются как облачное хранилище данных. Такое есть в SIA.

Какие механизмы/алгоритмы консенсуса на блокчейне бывают?

Proof of Checkpoint / PoC

Это гибридная система, которая использует любую систему PoS с PoW. Каждому блоку, подтвержденном в одном алгоритме, должен найтись аналог в другом.

Идея этой концепции заключается в смягчении атак на систему доказательства доли; однако она по-прежнему подвержена атаке на узле, который был отключен в течение длительного периода времени и, в свою очередь, может использоваться для предоставления ложной информации о блокчейне.

Proof of Importance / Доказательство важности

Используется NEM.

Каждой учетной записи присваивается оценка важности. Можно сказать, что сбор вознаграждения на блокчейне NEM почти такой же, как при майнинге. Цель состоит в том, чтобы добавить транзакции людей в блокчейн, в обмен на небольшое финансовое вознаграждение. По мере того, как оценка важности людей возрастает, у них будет больше шансов получить эти награды.

Чтобы иметь право на «вычисления важности», пользователи должны иметь не менее 10 000 XEM на балансе. Возможно, этот порог будет изменен в будущем.

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

Как сеть NEM определяет оценку важности? Когда кто-то владеет 10 000 XEM или более, происходит математический расчет. Больше транзакций XEM в сети, связанной с этой учетной записью, улучшит оценку важности. Подробности в WP проекта.

PoI для другого алгоритма мы писали в отдельной карточке.

Directed Acyclic Graphs / Направленный ациклический граф

Построение по типу DAG используют Iota, Hashgraph, Raiblocks/Nano.

DAG не берет структуру блокчейна, а обрабатывает транзакции в основном асинхронно. Это теоретически дает бесконечное количество транзакций в секунду, но у консенсуса в DAG есть сильные и слабые стороны, как и у любого другого консенсуса.

  • Tangle — это алгоритм консенсуса DAG, который использует Iota. Чтобы отправить транзакцию, необходимо подтвердить две предыдущие транзакции, которые вы получили. Консенсус по принципу «два к одному» укрепляет справедливость транзакций. Поскольку консенсус определяется транзакциями, теоретически, если кто-то может генерировать треть всех транзакций, они могут захватить сеть. В Iota есть «двойная проверка» всех транзакций сети на централизованном узле «Координатор». Команда говорит, что Координатор работает как поддержка системы и будет удален, как только Tangle будет достаточно большой.
  • Hashgraph использует aBFT — это консенсус, разработанный Leemon Baird. Узлы распределяют свои известные транзакции с другими узлами наугад, поэтому в итоге все транзакции переплетаются вокруг всех узлов. Hashgraph быстр (250 000 транзакций в секунду), но не устойчив к атакам Sybil. Он походит для частных сетей.

Подробнее про DAG и распределенные реестры.

При всем названном количестве алгоритмов консенсуса, это только часть существующих: реализованных или гипотетических.