Консенсус. Алгоритмы консенсуса в блокчейне

Консе́нсус (лат. consensus — согласие) — способ принятия решений при отсутствии возражений у большинства заинтересованных лиц, принятие решения на основе общего согласия, либо голосования.

Консе́нсус (лат. consensus — согласие) — способ принятия решений при отсутствии возражений у большинства заинтересованных лиц, принятие решения на основе общего согласия, либо голосования.

Наверняка многие сталкивались с принятием какого-то коллективного решения при наличии нескольких вариантов, либо мнений участников коллектива.

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

А как же всё происходит в криптовалютах? Как многомиллионные сообщества людей могут приходить к какому-то одному мнению?

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

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

Доказательство работы (Proof-of-Work)

Proof-of-Work (PoW) это первый успешный децентрализованный алгоритм консенсуса в блокчейне. PoW используется в Bitcoin, Ethereum (Ethereum планирует перейти на Proof-of-Stake), Litecoin, ZCash, Monero и на многих других платформах.

Он работает следующим образом:

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

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

Основные недостатки:

  • потребление огромного количества энергии;
  • майнеры, которые обладают бОльшим количеством вычислительной мощности, получают больше, чем остальные. В результате этого биткоин оказывается не таким децентрализованным, как задумывалось изначально.
    как следствие предыдущего пункта, существует вероятность “атаки 51%” (см. последний пункт нашей статьи).

Доказательство владения доли (Proof-of-Stake)

Proof-of-Stake для проверки транзакций требует от участников доль от монет, которые они хранят в сети. PoS является альтернативой PoW.

Впервые он был реализован в 2012 году в криптовалюте PPCoin (сейчас это PeerCoin). Proof-of-Stake решает основной недостаток Proof-of-Work — большие затраты на электроэнергию.

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

Возможные варианты выбора узла:

  • случайным образом из узлов с большим балансом;
  • случайным образом из наиболее старых узлов.

Proof-of-Stake предотвращает махинации в сети с помощью перекладывания полномочий по проверке на самых активных и преданных пользователей.

Алгоритм доказательства владения доли используется в Peercoin, Decred и в скором времени на Ethereum.

Делегированное подтверждение доли (DPoS)

Алгоритм Delegated proof-of-stake (DPoS) был разработан Дэниелом Ларимером в 2014 году. Это одна из разновидностей алгоритма консенсуса Proof-Of-Stake, в которой блоки подписывают выбранные представители. Владельцы наибольших балансов выбирают своих представителей. Вес каждого голоса определяется суммой активов голосующего.

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

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

Основными преимуществами алгоритма DPoS являются:

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

DPoS можно назвать частично децентрализованным. Это проявляется в том, что все пользователи в сети участвуют в выборе кандидатов в “совет”, но при этом не стоит забывать, что все решения о подтверждении блоков принимает небольшая группа валидаторов.

DPoS используется Steemit, EOS и BitShares.

Leased Proof-of-Stake (LPoS)

LPoS — еще одна модификация алгоритма Proof-of-Stake. На данный момент его можно назвать уникальным и он поддерживается только платформой Waves. В рамках этого алгоритма, любой пользователь имеет возможность передавать свой баланс в аренду узлам-валидаторам, а за это узлы-валидаторы делятся частью прибыли, полученной от подтверждения блоков, с пользователями.

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

Стратегия византийских генералов (BFT)

Концепция данного алгоритма консенсуса была представлена в научной работе Лесли Лэмпорта, Роберта Шостака и Маршалла Писа еще в 1982 году.

В криптовалюте данный алгоритм реализован следующим образом:

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

Данный алгоритм реализуется компанией Ripple, где валидаторы предварительно выбираются фондом Ripple, и Stellar, где любой может быть валидатором — доверие устанавливается сообществом. В отличие от блокчейнов, основанных на PoW, блокчейны BFT не подвергаются нападению, если только сами пользователи сети не координируют атаку. BFT считается выгодным алгоритмом, поскольку он масштабируем и охватывает транзакции с низкой стоимостью, но, как и DPoS, внедряет компонент централизации.

Proof-of-Capacity (PoC)

Proof-of-Capacity — одно из решений проблемы высокого потребления энергии при использовании алгоритма Proof-of-Work и ситуации, при которой майнерам выгоднее копить криптовалюту, а не тратить ее (в случае PoS).

Proof-of-Capacity дает возможность нодам в сети блокчейна задействовать для майнинга доступных криптовалют свободное место на жестком диске.

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

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

К недостаткам этого алгоритма можно отнести его недостаточную популярность.

В силу малой популярности такой вид алгоритма используется только у двух криптовалют — Burstcoin (Burst) и SpaceMint (SPACE)

Proof-of-Importance (PoI)

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

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

Алгоритм используется платформой NEM.

Proof-of-Activity (PoA)

Данный алгоритм предложили в 2014 году, как новый и более надежного алгоритма для Bitcoin.

Авторы алгоритма PoA попытались объединить два наиболее популярных алгоритма, такие как Proof-of-Work и Proof-of-Stake, с целью увеличения уровня защиты от потенциально возможных атак (51% attack, Denial-of-Service attacks (DoS).

Принцип работы:

Для начала PoW майнер должен решить задачу, чтобы найти блок (хеш);
Далее данный хеш отправляется в сеть, но блок при этом еще не формируется. Создается так называемая “заготовка”;
Заготовку должны подписать определенное количество холдеров (PoS майнеров), после чего формируется полноценный блок и вписывается в блокчейн;
Награда за сформированный блок распределяется между майнерами и холдерами.
Атаковать Proof-of-activity блокчейн довольно тяжело, так как “заготовки” служат своего рода точкой сохранения информации. Все точки несут в себе информацию обо всех предыдущих блоках, которые были подтверждены другими участниками сети.

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

Среди проектов, которые используют идеи, описанные в PoA замечены Decred и Enecuum.

Proof-of-Authority (PoAuthority)

PoA алгоритм не требует какого-либо майнинга для своей работы, в отличии от PoW или PoS.

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

Принцип работы вкратце такой:

  • Все узлы (им может быть человек, государство, корпорация и т.д.) равны между собой;
  • Авторитетность узла может составлять от 0% до 100%;

Для каждой транзакции обязательно нужно участие, как минимум, более двух авторитетных узлов, нежели начальный узел: то есть, если у начального авторитет 50%, то у двух последующих он должен быть 50%+.
Авторитетность узла для транзакции не означает его авторитетность для транзакции в следующий раз, т.к. показатель динамический и зависит от пункта 3.

Положительным моментом данного алгоритма является:

  • отсутствие майнинга и как следствие, существенное снижение затрат на его обслуживание.

Негативный момент использования данного алгоритма:

  • частичная  централизованность из-за наличия валидаторов;
  • сложность принципа работы.

Примером криптовалюты с таким алгоритмом является VeChain. Также его частично использует Ethereum в одной из тестовых сетей с названием Kovan.

Proof-of-Burn (PoB)

Майнер отправляет часть заработанных монет на специальный burn address — кошелек, с которого не сможет вернуть их назад. Шансы на то, что подтверждать блок будет именно этот майнер повышаютсяпри увеличении количества сожженных монет. Алгоритм постоянно уменьшает статистику перечисленных на burn address монет, стимулируя “сжигать” крипту более регулярно.

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

PoB не требует специального оборудования. Заниматься майнингом можно на домашнем компе. Энергозатраты на обслуживание такого блокчейна минимальны.

Данный алгоритм используется на платформе Slimcoin.

Термины, которые упоминались в статье

Атака 51%

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

Также контролируемое большинство имеет возможность провести подделку данных путём проведения атаки 51%. Цифра 51 означает критический процент владения вычислительными мощностями сети. То бишь, от 51% и выше = риск проведения “атаки 51%”

Происходит процесс отмены транзакции примерно так:

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

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

Таким образом, “большинство” может совершать двойное расходование монет и блокировать транзакции “меньшинства”.

Команды многих криптовалют пытаются бороться с этой проблемой, учитывая тот факт, что на данный момент «контрольный пакет» мощностей сети может принадлежать сравнительно малому количеству компаний. В теории они могут объединиться и провести атаку.

Существует множество решений проблемы 51%. К ним относятся переход на Proof-of-Stake-протокол, увеличение количества необходимых подтверждений для транзакций или модернизация алгоритма хэширования.

Denial-of-Service attacks (DoS)

DoS —  хакерская атака на вычислительную систему с целью довести её до отказа, то есть создание таких условий, при которых добросовестные пользователи системы не могут получить доступ к предоставляемым системным ресурсам (серверам), либо этот доступ затруднен.

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