​​​​​​​Алгоритмы консенсуса. Часть 1: PoW vs PoS

5 июля

​​​​​​​Поговорим о протоколах, на которых блокчейн держится. Сегодня рассмотрим два основополагающих: Proof-of-Work и Proof-of-Stake.

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

Для начала нужно вспомнить, что блокчейн представляет собой децентрализованную систему без единого органа власти. Такой подход имеет свои плюсы – по сути, таким образом реализуется цифровая демократия – но провоцирует и свои проблемы. Как понять, кто должен принимать решения о будущем экосистемы? Как без центральной организации инициировать какие-то изменения? И как разным узлам распределенной сети синхронизироваться в своих версиях журнала транзакций блокчейна в то время, как отдельные узлы могут произвольно зависать и расходиться с поддержанной большинством цепочкой блоков?

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

Зачем это нужно? Прежде всего, для решения проблемы Double Splending – двойной траты средств. Таким образом гарантируется, что две транзакции, в начальных условиях которых фигурируют корректные данные, не разойдутся у конечных адресатов. Предположим, у пользователя A есть один биткоин, который он хочет передать пользователям B и C, но не разделив поровну, а одновременно двоим. Сформировав две транзакции и заверив их своей электронной подписью, он может запустить процесс передачи биткоина сразу двум пользователям. И, если они не согласовывают свои журналы транзакций, это может привести к казусу и спору, кому все-таки досталась криптовалюта. В случае же, если транзакции записываются в журналы строго определенным образом и согласуются между собой, система запишет только первую из транзакций, а вторая будет призвана недействительной, поскольку этих средств у пользователя A уже не будет.

Блоки, в которые записываются все транзакции, создаются особой категорией узлов сети блокчейна – так называемыми узлами консенсуса. Это могут быть как майнеры, так и валидаторы, которые активно участвуют в формировании блокчейна, группируя транзакции в блоки. Важную роль выполняют и не участвующие непосредственно в процессе консенсуса узлы аудита. «Аудиторы», имеющие у себя полную копию блокчейна, регулярно проверяют работу майнеров и занимаются распределением нагрузки по сети. Ну и третий тип узлов – «легкие клиенты», не хранящие копию блокчейна и содержащие только те данные, которые важные для конкретного узла (например, криптовалютные кошельки).

https://lh4.googleusercontent.com/0_1QcvbMPxYeQltYpCxJZekaiRtLxJoeR8wPxgHsXUtUnUUyrzC1ZRCp9GFANcSqIaXgd6imO1CSKwlW8bU13hF9ko8sME_3P4KzgTTN2Z6uqViMhLL_BJoKPpdlrzlbRLtCZWH-

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

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

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

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

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

Ночью каждый из генералов получает от предводителя приказ о варианте действий в 10 часов утра (время одинаковое для всех и известно заранее), а именно: «атаковать противника» или «отступать».

Возможные исходы сражения:

Возможные исходы сражения:

  1. Если все верные генералы атакуют — Византия уничтожит противника (благоприятный исход).
  2. Если все верные генералы отступят — Византия сохранит свою армию (промежуточный исход).
  3. Если некоторые верные генералы атакуют, а некоторые отступят — противник уничтожит всю армию Византии (неблагоприятный исход).

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

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

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

 https://lh5.googleusercontent.com/diQ2Sk88xmRBkwEQWgoS7R3JRrLptHU_txQ0kbjzfzM3vH54NVD0K23mlXZ3c8kXyWIB3XRMcAGAsSPFoYLk8WXKQgire-KKlK630TcayxYy79rxvmgqR69SbLRRaQpGKGIxRblb

 

Задача византийского консенсуса впервые была сформулирована в 80-х годах прошлого века, а методы её решения появились в конце 90-х. Однако если в обычных алгоритмах у узлов сети были какие-никакие «личности», выраженные через цифровые подписи или сходные механизмы, то в блокчейне того же биткоина участники сети не только априори неизвестны, но и могут произвольно подключаться и отключаться от сети. При этом децентрализованная природа блокчейна обладает устойчивостью к цензуре и объективностью, то есть, определение правильной версии журнала транзакций не требует никаких «авторитетов» – принцип доверия заложен в самой структуре сети. Таким образом, привычные алгоритмы византийского консенсуса оказались бесполезны для работы того же биткоина, поэтому Сатоши Накамото в свое время выбрал другой путь для своего детища.

Какие же алгоритмы консенсуса применяются в блокчейне?

Proof Of Work / PoW

Proof Of Work (доказательство работы) – пожалуй, самый известный алгоритм, изобретенный задолго до биткоина и применявшийся ранее для защиты от спама. На его основе построен биткоин, а также такие популярные валюты, как Ethereum, Litecoin, Monero, ZCash и многие другие.

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

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

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

Но, как водится, есть нюансы.

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

https://lh4.googleusercontent.com/UOiBgzPIXVc6nDbYBWzy-qxro5oWa4S7-9l7k0oyEFejbLa5j-qg1dlv2f7WSNdfDyOXKf-aPiTDxrmYGPgg4bF9FTDIdx-9ROHcqFIOY7EBlUiJ37QnjPFoXodb6uadr95k_uyO

Экспоненциальный рост хешрейта биткоин-сети

Кроме того, конкуренция заставляет большое количество узлов тратить бессмысленно много энергии и наращивать вычислительные ресурсы без гарантии вознаграждения, которое достанется лишь первому узлу. Таким образом, шансы на успешный майнинг остаются лишь у тех, кто может себе позволить быстрые и мощные ASIC-майнеры, и чем больше, тем лучше. В биткоин-индустрии таким образом довольно быстро сформировались монополии крупных пулов, в результате чего биткоин потерял большую часть своей децентрализации. 65% хешрейта сети Bitcoin делится всего между пяти пулами, которые, объединившись, вполне могут инициировать любые изменения в сети по принципу «атаки 51%». Однако даже в этом случае злоумышленники не смогут обойти базовые механизмы безопасности блокчейна и похитить биткоины остальных пользователей.

В числе критических замечания об механизме proof-of-work – недостаточная масштабируемость, длительность подтверждения транзакции и зависимость майнинга от дешевой электроэнергии. Таким образом, блокчейн-сообщество оказывается перед необходимостью искать альтернативные способы достижения консенсуса, более эффективные и менее энергозатратные. И они, разумеется, существуют.

https://lh6.googleusercontent.com/oyJW8mVjyiWJfLFOk9eh32RbxA9uwHrvO2LI7pP-GrXK3qvn9uex5FYi-u1qbUMnHMfDONBg5Zr2MwMBBd21kc_gtDOzfSvoL0B5Rfp2d96KtWPzSOsnJKVHh4dw_16rewE3QTbM

Proof Of Stake / PoS

Наиболее распространенной альтернативой proof-of-work является протокол proof-of-stake (доказательство доли владения, доказательство ставки). На его основе работают такие криптовалюты, как Qtum, VCash, BitBay, Stratis. Впервые идея Proof-of-stake была предложена на форуме «Bitcointalk» в 2011 год, а первая реализация протокола PoS была представлена в 2012 году в криптовалюте PPCoin (ныне PeerCoin).

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

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

Таким образом PoS позволяет работать с любого устройства онлайн без траты большого количества ресурсов на расшифровку криптоголоволомок. Он более централизован, но менее подвержен атакам, поскольку любой, решивший создать атаку Double Splending («двойная трата») должен сконцентрировать у себя более 50% всей валюты, что является огромным состоянием. При этом даже в случае выполнения этого условия, атакующий рискует в том числе своими поставленными деньгами.

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

Кроме того, существует проблема «Nothing at Stake» («нечего терять»). Валидаторы имеют возможность поддерживать любые цепи, в том числе альтернативные форки, поскольку за это не предусмотрено штрафов, им в любом случае вернутся поставленные средства. Поскольку формирование цепочки требует довольно малых затрат ресурсов, в отличие от систем PoW, любой может попытаться злоупотребить возможностью сделать двойную ставку. Голосование за несколько ветвей цепочки не позволяют консенсусу когда-либо установиться.

Отчасти эту проблему внедрения консенсуса PoS пытаются решить в Ethereum с помощью обновления Casper. В этом протоколе прописан ряд отличий от традиционных протоколов такого типа. Так, если валидатор попытается воспользоваться механизмом «Nothing at Stake» и поддерживать одновременно две цепи, он будет немедленно заблокирован, а его ставки пропадут. Жестко, но эффективно. Кроме того, FFG Casper является, по сути, гибридным механизмом: блоки по-прежнему будут добываться с помощью PoW, но каждый 50й блок станет контрольной точкой PoS и будет оцениваться валидаторами.

 https://lh4.googleusercontent.com/Drpjp_un7AkwQ8lQ04v3ggsYJJNueJIRcw1NveKbCiDc39ut7uw7o-sK0zvLmU0q8VAlel8zCM1LpXrKqI4CPR4Of5vxv8lvpLKh0kUxL4hgOLYVSSDnq2kVVszrNpXpBOXrddWb

Еще ранее в сети Ethereum предлагали внедрить протокол Slasher, позволяющий пользователям выполнять роль модераторов и «наказывать» тех, кто поддерживает более чем одну ветвь цепи блоков. Протокол подразумевает двойную подпись для создания новой ветви цепочки и штраф в случае создания ответвления без подтверждения ставки, однако принят он так и не был. Разработчики Ethereum пришли к выводу, что доказательства доли в этом случае нетривиальны, и вместо этого написали протокол Ethash, использующий алгоритм PoW.

А вот в первой перешедшей на PoS криптовалюте Peercoin, например, используются контрольные точки, подписанные приватным ключом разработчика. Благодаря этому механизму переорганизация цепочки блоков после последней контрольной точки делается невозможной. По сути, разработчики этой криптомонеты сделали выбор в пользу меньшего зла – и большей централизации.

Есть и попытки зайти с другой стороны и, наоборот, прописать возможность реорганизации, как в протоколе NXT. Несмотря на то, что в этой сети можно реорганизовать последние 720 блоков, это не мешает клиенту следовать за вилкой из 721 блока вне зависимости от того, является ли эта цепочка самой длинной.

Но в последнее время ставка все больше делается на гибридные протоколы, совмещающие PoS и PoW. Таковым является Proof-of-Activity (доказательство деятельности), действующий в блокчейн-сети Decred и представляющий собой доказательство ставки, зависимое от метки времени алгоритма PoW, играющего роль подстраховочного доказательного механизма.

У PoS есть и другие разновидности. Например, Proof-of-Stake-Time (доказательство времени ставки), впервые использованное в криптовалюте Vericoin. Оно апеллирует ко времени создания блока и вводит такой компонент, как возраст монеты. Вероятность подтверждения ставки возрастает с течением времени, в течение которого монеты удерживались по конкретному адресу, что повышает безопасность сети и стимулирует работу валидаторов, а также значительно усиливает децентрализацию блокчейна.

Чуть большую популярность снискал протокол делегированного доказательства доли владения Delegated Proof Of Stake, впервые примененный в блокчейне EOS. Однако об этом и других разновидностях консенсуса – в следующей статье.

Войдите на сайт, чтобы оставить комментарий
0 комментариев
Популярные
Новые

Рассылка

Подписывайтесь на обновления и анонсы

18+
Москва, Берсеневская набережная 6/2
+7 (495) 118-41-48
2018 © Blockchain.ru, Сделано в Charmer
  • Дисклеймер
  • Пользовательское соглашение
  • Политика конфиденциальности

К сожалению, браузер, которым вы пользуйтесь, устарел и не позволяет корректно отображать сайт. Пожалуйста, установите любой из современных браузеров, например:

Google Chrome Firefox Opera