Введение
Алгоритм консенсуса — это механизм, с помощью которого пользователи и программы могут координировать свои действия в распределенной сети. Он обеспечивает достижение согласия между всеми участниками сети о текущем состоянии данных, даже если некоторые ноды выходят из строя. Другими словами, консенсус помогает поддерживать отказоустойчивость системы (чтобы узнать больше, изучите статью Разъяснение задач византийских генералов).
В централизованной структуре один объект имеет власть над всей системой. В большинстве случаев данные органы имеют право вносить изменения по своему усмотрению: не существует какой-либо сложной системы управления для достижения консенсуса между множеством администраторов.
В децентрализованной среде совершенно другой механизм работы. Например, если речь идет о распределенной базе данных, то каким образом мы можем получить согласия от всех участников сети, в отношении того, какие данные можно добавить в сеть?
Достижение консенсуса в условиях, где стороны не могут доверять друг другу, стало одним из важнейших событий в индустрии, которое подготовило почву для появления блокчейнов. В этой статье мы рассмотрим важность алгоритмов консенсуса для правильного функционирования криптовалюты и распределенных реестров.
Алгоритмы консенсуса и криптовалюта
В криптовалютных сетях балансы пользователей записываются в базу данных — блокчейн. Каждый пользователь (нода) должен владеть идентичной копией базы данных. В противном случае информация будет разниться, что нарушит принципы надежности и открытости всей криптовалютной сети.
Криптография с открытым ключом гарантирует, что посторонние лица не смогут получить доступ к вашим монетам. Однако пользователи также нуждаются в надежном способе проверить, были средства потрачены или нет.
Сатоши Накамото, создатель Биткоина, предложил систему Proof of Work с целью координации пользователей сети. Далее мы рассмотрим принципы работы PoW, но сначала определим общие черты большинства существующих алгоритмов консенсуса.
Первая — это требование к пользователям, которые хотят добавлять блоки (мы будем называть их валидаторами), предоставлять взамен какую-либо долю. Доля или же стейк — это определенная ценность, которую должен выдвинуть валидатор в качестве гарантии честной работы: если валидаторы попытаются обмануть систему, они потеряют свою долю. Долей может быть вычислительная мощность, криптовалюта или же репутация.
Вы можете задаться логичным вопросом: зачем же им рисковать собственными ресурсами? Дело в том, что здесь действует специальная система наград за работу. Обычно награды выдаются в виде нативных токенов протокола, а средства на них берутся из комиссий пользователей и недавно созданной криптовалюты, а иногда и того, и другого.
Еще одна важная черта — это прозрачность, позволяющая определять мошеннические действия. Производство блоков должно быть дорогостоящим, а проверка выполненной работы — дешевой и доступной для обычных пользователей. Таким образом, работу валидаторов сможет проверять и отслеживать любой желающий.
Виды алгоритмов консенсуса
Доказательство выполнения работы (PoW)
Proof of Work (PoW) стал прародителем всех остальных алгоритмов консенсуса в блокчейне. Впервые он был реализован в Биткоине, но сама концепция появилась задолго до этого. В Proof of Work валидаторы (называемые майнерами) хешируют данные, которые они хотят добавить, пока не получат подходящее решение криптографической головоломки.
Хеш — это произвольный набор букв и цифр, который создается при обработке данных через хеш-функцию. Если вы будете снова хешировать те же самые данные, то получите прежний результат, однако при изменении хотя бы одного значения хеш станет совершенно другим.
Просматривая данные на выходе, вы не сможете сказать, какая информация была пропущена через функцию. По этой причине хеши отлично подходят для доказательства того, что вы знали до определенного времени. Вы можете дать кому-то такой хеш, а затем предоставить первоначальную информацию, для того, чтобы человек мог пропустить ее через функцию и убедиться в том, что вывод совпадает.
В Proof of Work протокол устанавливает условия для подтверждения (валидации) блока. Например, можно установить, что валидным будет только тот блок, хеш которого начинается с 00. Единственный способ для майнера создать валидный блок — это просто перебирать входные данные. Валидаторы настраивают программу таким образом, чтобы получать разные результаты при каждом хешировании до тех пор, пока не сформируется правильный хеш.
В крупных блокчейнах крайне тяжело найти подходящий хеш: понадобится целый склад специального оборудования для хеширования большого количества данных (с установками типа ASIC), чтобы быть конкурентноспособным и суметь создать действительный блок.
В майнинге стейком является стоимость такого оборудования и затраченная на работу электроэнергия. Оборудование типа ASIC (интегральной схемы специального назначения) создано для одной задачи, поэтому его нельзя будет использовать ни для чего, кроме майнинга криптовалюты. Единственная возможность окупить первоначальные инвестиции — это майнинг и вознаграждения за успешно добавленный блок.
Для сети достаточно убедиться в том, что вы действительно создали правильный блок. Даже если ваши асики проводили триллионы комбинаций, чтобы получить правильный хеш, для проверки его правильности достаточно один раз пропустить данные через функцию. Если ваши данные производят действительный хеш, блок будет принят сетью как валидный, и вы получите вознаграждение. В противном случае, сеть отклоняет ваш запрос на добавление блока и можно сказать, что вы потратили время и электричество впустую.
Доказательство владения (PoS)
Proof of Stake (PoS) появился на заре существования Биткоина как альтернатива Proof of Work. Система PoS не требует участия майнеров, использования специального оборудования или массового потребления электроэнергии — хватит обычного персонального компьютера.
Помимо этого вы должны будете внести собственный вклад. В PoS используется не внешний ресурс (электричество или оборудование), а внутренний — криптовалюта. В разных протоколах требования могут различаться, но, как правило, существует минимальная сумма средств, предоставляющая владельцу право на стейкинг.
На период стейкинга средства блокируются в кошельке (их будет нельзя перемещать во время стейкинга). В большинстве случаев, вы соглашаетесь с другими валидаторами в отношении того, какие транзакции попадут в следующий блок. В некотором смысле валидаторы делают ставку на блок, который они хотят добавить в блокчейн, но право выбора блока остается за протоколом.
Валидаторы, чей блок будет выбран, получат часть комиссий за транзакции в зависимости от размера их доли (стейка). Чем больше средств в кошельке было заблокировано, тем больше будет награда. Однако за попытки обмануть систему и добавить недействительные транзакции злоумышленники рискуют лишиться части (или всей) своей доли. Таким образом, PoS работает аналогично PoW: действовать честно выгоднее, чем пытаться обмануть систему.
Данный механизм не предполагает наград для валидаторов в виде недавно созданных монет. С этим алгоритмом нативная валюта блокчейна должна выпускаться другим способом, например посредством первичного предложения (ICO или IEO), либо же путем запуска протокола на PoW с последующим переходом на PoS.
На сегодняшний день, Proof of Stake в своем чистом виде развернут лишь в нескольких криптовалютах с относительно небольшой сетью, по этой причине пока еще сложно точно сказать, может ли это стать жизнеспособной альтернативой PoW. Хотя данный алгоритм и кажется теоретически обоснованным, на практике все происходит немного иначе.
После развертывания PoS в рамках сети с большим объемом средств в системе начинают действовать теории игр и различные финансовые стимулы. Если кто-то и захочет «взломать» PoS-систему, то только с гарантией извлечения выгоды, поэтому выяснить, насколько это вероятно, мы сможем только в сети.
Совсем скоро пройдет крупномасштабное тестирование PoS: в рамках обновления сети Ethereum (также известного как Ethereum 2.0) будет реализован протокол Casper.
Другие алгоритмы консенсуса
Доказательство работы (Proof of Work) и доказательство владения (Proof of Stake) являются наиболее обсуждаемыми алгоритмами консенсуса, но есть еще множество других, которые обладают своими преимуществами и недостатками. Рекомендуем подробнее ознакомиться с ними в следующих статьях:
- Разъяснение отложенного доказательства работы
- Принцип работы арендованного доказательства доли
- Разъяснение доказательства авторитетности
- Разъяснение доказательства сжигания
- Разъяснение делегированного доказательства доли
- Гибридный алгоритм консенсуса
Резюме
Механизмы достижения консенсуса жизненно важны для функционирования распределенных систем. Многие считают, что величайшим нововведением в биткоине было использование Proof of Work, позволяющее пользователям согласовывать общий набор фактов.
Алгоритмы консенсуса на сегодняшний день поддерживают не только системы цифровых денег, но и блокчейны, позволяющие разработчикам запускать код в распределенной сети. Теперь они являются краеугольным камнем технологии блокчейн и имеют решающее значение в долгосрочной жизнеспособности различных существующих сетей.
Из всех алгоритмов консенсуса, Proof of Work по прежнему остается доминирующим, по той простой причине, что альтернатива, которая является более надежной и более безопасной, еще не была предложена. Тем не менее, существует огромное количество исследований и разработок по замене PoW, и мы скорее всего увидим, как их будет становится только больше.