Алгоритмы консенсуса: что это и какие бывают
В отличие от обычной базы данных, администрируемой централизованно, блокчейн представляет собой одноранговую децентрализованную сеть, с которой может взаимодействовать любой участник. Классический блокчейн построен на криптографии и представляет из себя последовательную цепочку блоков данных. Блоки записываются один за другим, и в зависимости от того, каким именно образом они записываются в цепочку, блокчейн обладает теми или иными определенными базовыми свойствами. Каждый следующий блок “запирает” предыдущий, поэтому данные в цепочке не могут быть изменены «задним числом», иначе пришлось бы переписывать весь блокчейн.
Большинство блокчейнов децентрализованы, то есть в сети присутствует какое-то количество независимых друг от друга компьютеров (узлов), которые и отвечают за запись в цепочку новых блоков, они формируют блокчейн и поддерживают его работоспособность.
Для того, чтобы система работала и, учитывая, что узлы блокчейна не зависят друг от друга, очевидно, что у каждого узла должны быть определённые правила, согласно которым он осуществляет валидацию транзакций и запись блоков в цепочку. При этом эти правила должны быть едины для всех узлов. Так и есть. Эти правила называются алгоритмом консенсуса блокчейна.
Алгоритм консенсуса блокчейна — это совокупность принципов и правил, благодаря которым все участвующие в сети узлы (ноды) автоматически приходят к консенсусу о текущем состоянии сети. Таким образом гарантируется безопасность сети, то есть достоверность всех хранящихся в ней данные.
Кто, кому и что доказывает?
Несложно заметить, что названия большинства алгоритмов начинаются со слов “доказательство чего-либо” (proof of). Как уже было отмечено выше, каждый следующий блок цепи “запирает” предыдущий, так обеспечивается безопасность данных в блокчейне. Каждый новый блок добывается одним из узлов сети и транслируется всем остальным узлам. Для того, чтобы этот блок был принят и записан в блокчейн, узел предоставляет остальным участникам определенные доказательства. Какие именно доказательства — зависит от алгоритма.
На сегодня существует определенное количество алгоритмов консенсуса и периодически появляются новые. Разные алгоритмы используются в зависимости от конкретных целей и задач, которые ставят перед собой разработчики при построении блокчейна. Основная причина, подталкивающая разработчиков к совершенствованию алгоритмов и разработке новых — это желание решить трилемму блокчейна. Давайте рассмотрим некоторые наиболее распространённые из алгоритмов консенсуса, использующиеся сегодня в блокчейнах.
Разнообразие алгоритмов консенсуса блокчейна
Proof-of-Work (PoW)
Это самый известный и один из самых распространённых алгоритмов консенсуса. По сути с этого алгоритма и началось развитие отрасли. Proof-of-Work расшифровывается как «доказательство работы».
При формировании очередного блока узел (майнер) выполняет большое количество математических расчетов по поиску хеша криптографической функции, который в свою очередь предоставляет сети в качестве доказательства проделанной работы (вычислений).
PoW стал прорывом для своего времени и позволил запустить первые криптовалюты. Алгоритм PoW используется, например, в блокчейне Bitcoin. Он обеспечивает отличный уровень децентрализации (любой желающий может присоединиться к сети и стать майнером) и безопасности (Bitcoin практически невозможно взломать, объём вычислительных мощностей, понадобившихся бы для взлома, на практике сегодня просто невозможно собрать). Это основные преимущества алгоритма PoW, но есть и недостатки:
- высокие затраты электроэнергии. С ростом сети и особенно, если алгоритмом предусмотрена какая-нибудь инфляционная модель, сложность майнинга увеличивается, компьютеры потребляют больше энергии, соответственно растут и совокупные энергозатраты сети
- низкая пропускная способность. Необходимость выполнения большого количества вычислений требует существенных временных затрат, поэтому пропускная способность сети при реализации алгоритма PoW невысока
- высокие комиссии. С развитием сетей на PoW появился эффект централизации. Отдельные майнеры стали объединяться в пулы для повышения результативности майнинга, сложность майнинга стала повышаться, комиссии за транзакции стали избыточно высокими для массового использования
Недостатки базового аглоритма PoW стимулировали сообщество к поиску поиску новых решений, так стали появляться новые алгоритмы консенсуса.
Proof-of-Stake (PoS)
Второй по популярности алгоритм консенсуса, расшифровывается как «доказательство доли владения». В PoS нет майнинга, вместо вычислительных мощностей в качестве доказательств выступают определенные “замороженные” объемы криптовалют, принадлежащие соответствующим узлам. Эти узлы называются нодами или валидаторами, их объём замороженной криптовалюты — стейком, и чем больше у конкретного узла криптовалюты, тем выше вероятность подтвердить транзакцию, а значит, получить вознаграждение.
На алгоритме PoS работают многие известные блокчейны, например Etherium (версия 2.0, после недавнего перехода с Pow на Pos), Binance Smart Chain, Cardano, Tron и другие.
PoS лишен таких недостатков PoW, как высокое энергопотребление, необходимость специализированного/мощного оборудования. Комиссии в сетях PoS ниже, а пропускная способность гораздо выше. Однако у PoS есть и недостатки. Главный из них — угроза централизации. Есть риск консолидации большого объёма криптовалюты ограниченным количеством валидаторов, в этом случае они будут иметь возможность влиять на сеть.
Delegated Proof-of-Stake (DPoS)
Это разновидность вышеописанного алгоритма PoS, расшифровывается как «делегированное доказательство доли владения». Основное отличие алгоритма от классического Pos — это попытка избавить алгоритм от его основного недостатка, то есть от риска централизации. В DPoS право валидаторов одобрять транзакции делегируется им держателями монет, при этом держатели голосуют за того или иного валидатора. Любой участник сети, обладающий определенным объёмом криптовалюты, может стать валидатором, но также в любой момент голоса за этого валидатора могут быть отозваны в пользу другого. DPoS в свою очередь также не лишён недостатков. В частности, риск представляет низкая активность участников сети, тогда DPoS превращается в PoS, ну и сговор делегатов тоже не исключён.
Среди известных блокчейнов с алгоритмом DPoS такие как EOS, Tezos и другие.
Leased Proof-of-Stake (LPoS)
Этот алгоритм также является модификацией классического PoS, расшифровывается как «арендованное доказательство доли владения». Алгоритм отличается от PoS и DPoS тем, что доля криптовалюты может быть арендована. При LPoS валидаторами могут стать даже мелкие участники. Все участники сети могут передавать (делегировать) свою криптовалюту соответствующим валидаторам. При этом непосредственно переводов не происходит, криптовалюта остаётся в кошельках у владельцев, но замораживается. Естественно токеномикой блокчейнов предусматриваются механизмы мотивации для всех участников сети. LPoS не убирает риск централизации. При этом алгоритме крупные валидаторы могут арендовать достаточное количество криптовалюты для монополизации сети. Пример использования LPoS — блокчейн Waves.
Proof-of-Authority (PoA)
Это алгоритм консенсуса сети, который основывается на “авторитете” валидаторов. Расшифровывается как «доказательство полномочий». В качестве доказательств валидаторы используют собственную репутацию. Валидаторы выбираются участниками сети путём голосования, обычно их количество фиксировано. В отличии от PoS и DPoS валидаторы не получают награды за стейкинг, это основной недостаток PoA, у валидаторов отсутствуют стимулы и мотивации для участия, поэтому чаще всего алгоритм PoA используется в частных блокчейнах, где вопрос децентрализации не сильно актуален.
Proof-of-Importance (PoI)
Этот алгоритм основывается на “значимости” валидатора («доказательство значимости»). При подтверждении транзакций алгоритм принимает во внимание не только объём “замороженных” средств в криптовалюте, но и активность валидатора. Оцениваются такие параметры, как количество проведённых транзакций, время в сети (доступность онлайн). Чем больше доля валидатора и его активность, тем значимее он для сети. Один из примеров блокчейнов, которые используют PoI — NEM.
Proof-of-Space (PoSpace)
Это алгоритм, основанный на дисковом пространстве, он так и расшифровывается: “доказательство пространства”. В качестве основного ресурса для доказательства участники используют свободное пространство своих жёстких дисков, которое резервируется под специальные функции блокчейна, например заполнение хеш-кодами для последующей валидации блоков. На этом алгоритме работает Burstcoin.
Proof-of-Space-Time (PoST)
Это разновидность алгоритма Proof-of-Space, которая учитывает ещё и время. Основная мысль создателей в том, что вклад участников в сеть важно оценивать не только по делегированному дисковому пространству, но также и по затратам времени, на протяжении которого это дисковое пространство было делегировано. На этом алгоритме работает Chia.
Proof-of-Elapsed-Time (PoET)
Это алгоритм консенсуса от компании Intel, расшифровывается как «доказательство затраченного времени». Алгоритм основан на использовании набора инструкций Software Guard Extension центрального процессора Intel. Принцип работы похож на лотерею, при “майнинге” генерируется случайное время ожидания для блока, нода “засыпает” ровно на это время, первая проснувшаяся нода получает право валидации блока. SGX следит за тем, чтобы время выбиралось действительно случайным образом.
Данный алгоритм не распространён, он используется в частных блокчейнах и требует обязательного наличия процессоров Intel с набором инструкций SGX.
Proof-of-Burn (PoB)
Этот алгоритм подразумевает “сжигание” криптовалюты, он так и расшифровывается: “доказательство сжигания”. При PoB майнер отправляет криптовалюту на специальный “тупиковый” кошелёк (к этому кошельку, например, отсутствуют приватные ключи, то есть нет доступа). Таким образом определённый объём криптовалюты выводится из обращения, то есть “сжигается”. После доказательства сжигания для майнера увеличивается вероятность получить право создания следующего блока и, соответственно, получить за это награду.
Для майнинга при PoB не требуется больших вычислительных мощностей, а сжигание криптовалюты стимулирует рост цены этой криптовалюты, потому что как правило эмиссия ограничена. Этот алгоритм очень специфичен, подходит далеко не каждому блокчейну. Он используется, например, в XCP.
Потенциал технологии блокчейн не оставляет сомнений в том, что её внедрение и совершенствование будут усиливаться. Для публичных блокчейнов жизненно необходимо сообщество участников, которые обеспечивают работоспособность сети. Алгоритм консенсуса обеспечивает логику функционирования блокчейна и через токеномику стимулирует участников. Существуют различные алгоритмы, каждый из них обладает определенными преимуществами и недостатками. В этой статье рассмотрены одни из самых популярных алгоритмов, кроме указанных выше существуют еще PoWt, PoH, DAG, DBFT, SBFT, PBFT и другие. Разработчики в погоне за решением трилеммы блокчейна совершенствуют алгоритмы консенсуса, разрабатывают новые, поэтому уверен, самое интересное в развитии технологии блокчейн у нас ещё впереди.
Больше информации о криптовалюте, моих инвестициях и сделках в Telegram-канале.
Что такое майнинг, стейкинг и как работают алгоритмы консенсуса?
До того, как Сатоши Накамото применил блокчейн в системе биткоина, было предпринято огромное количество попыток создать децентрализованную платежную систему. Но все они были безуспешны, так как разработчикам не удавалось создать такие условия, которые бы позволили достичь соглашения между всеми участниками сети и обеспечить ее работоспособность. Это и называется консенсусом в сети блокчейн. Он достигается тогда, когда все участники сети согласны относительно валидности транзакций и все реестры – точная копия друг друга. В этой статье мы рассмотрим самые популярные алгоритмы консенсуса, как достигается соглашение, подробно поговорим о майнинге, стейкинге и остановимся на криптографической задаче, которую решают участники майнерской сети.
Консенсус в широком смысле этого слова означает способ прийти к соглашению. Важное свойство блокчейна состоит в том, что участникам сети совершенно не обязательно доверять друг другу, как в централизованной системе, достаточно просто договорится о правилах, которые будут устраивать всех. Именно об этих правилах мы сегодня и поговорим.
Proof-of-Work (PoW). Что такое майнинг?
Для начала рассмотрим самый известный алгоритм консенсуса – Proof-of-Work, как следует из названия, — это механизм достижения соглашения между пользователями сети с публичным доказательством проделанной работы. Процесс достижения консенсуса по данному алгоритму тесно связан с майнингом.
Майнинг — это процесс добычи биткоина и других криптовалют, в результате которого в блокчейн добавляется новый блок транзакций и происходит эмиссия монет.
Эмиссия, или выпуск новых монет, является вознаграждением майнера за проделанную работу и потраченную электроэнергию в процессе майнинга.
Добавление новой транзакции требует от сети затрат энергии на решение определённой криптографической задачи. Не получится просто добавить в блокчейн очередной блок – надо еще потратить очень много реальных денег, например, на оплату электричества, покупку оборудования, необходимого для решения этих крипто-задач. К слову, о мошенничестве в блокчейн-сетях. При таком устройстве системы оно просто-напросто невыгодно.
Давайте подробней рассмотрим цикл добавления вашей транзакции в блокчейн.
Вы переводите свою криптовалюту на другой адрес в блокчейне. Информация о вашей транзакции помещается в общий реестр, который называется MemPool. К нему имеют доступ все майнеры сети. Данный список постоянно пополняется новыми транзакциями, оттуда майнеры берут себе то количество операций, которое могут обработать. Затем для каждой транзакции решают сложную криптографическую задачу. Если майнеру удаётся решить задачу, то он отправляет решение на устройства других участников сети. Остальные проверяют, верно ли решена задача и правильно ли сконструирована цепочка блокчейна. Если всё верно, блок добавляется в блокчейн. Здесь стоит сказать о том, что в блокчейн добавляется блок, подготовленный майнером, который первым решил задачу. Дублирование блоков невозможно, иначе возникнет двойное расходование. (Ситуация в сети блокчейн, когда кто-то пытается отправить один биткоин двум получателям одновременно. Однако, когда транзакция подтверждена, отправить те же самые биткоины уже другому получателю невозможно. Чем больше подтверждений есть у каждой отдельной операции, тем сложнее организовать двойное расходование)
Скорость решения задачи зависит от мощности оборудования. Майнер с наибольшей вычислительной мощностью с большей вероятностью решит задачу первым.
Для удобства восприятия информации мы составили для вас небольшую инфографику:
Итак, какую же задачу решает майнер? Чтобы это понять, разберём сначала более подробно, что такое хэш-функция.
Хэш-функция.
Криптографическая хэш-функция — это математический алгоритм, который отображает данные произвольного размера в битовый массив фиксированного размера. Это функция вида F(X+N) = H, где X – любой набор символов неограниченной длины (информация, записанная в блоке), H – это значение хэш-суммы, а N – свободная переменная, в криптографии эту переменную называют Nonce, она представляет собой любое значение от 1 до 4 миллиардов. Результатом шифрования или хэширования является «хэш-сумма», многие называют его просто хешем, он представляет собой набор цифр , в котором зашифрована информация.
У хеш-функции есть очень важные на свойства, благодаря которым её и используют в криптографии:
1. Детерминированность. (В математике – определяемость) Это значит, что одно и то же сообщение с точностью до символа приводит к одному и тому же хеш-значению.
2. Уникальность. Не существует двух разных сообщений с одинаковым хэш-значением. Обратите внимание на это свойство, оно является базовым и наиболее важным. Приведём пример для понимания. Возьмём произведение Теодора Драйзера «Финансист», проведём шифрование, а затем во всём произведении уберём всего одну запятую, и получим совершенно другое значение хэш-суммы. Можете попробовать сами по этой ссылке.
3. Быстрота вычисления. Хэширование позволяет достаточно быстро вычислить нужный хэш для большого объема информации.
4. Необратимость. Хэш-функция не позволяет восстанавливать исходный массив информации из символьной строки. Это можно сделать, только перебрав все возможные варианты, что при бесконечном количестве информации требует много времени и денег.
Алгоритмы хэширования.
Существует множество алгоритмов хеширования – MD5 (Message Digest 5, генерирует 128-битный ключ, что составляет 16 байт данных. Функции и классы для работы с MD5 реализованы во всех языках программирования. MD5 используется на многих веб-сайтах и веб-сервисах.);
SHA-1 (Secure Hash Algorithm 1, генерирует 160-битный ключ, что составляет 20 байт данных. Этот алгоритм считается более надежным, по сравнению с MD5, но и более сложным и выполняется немного медленней);
SHA-2(256), SHA-2(512) и т.д. (Secure Hash Algorithm 2, это вторая версия алгоритма SHA-1, алгоритм может генерировать 256-, 384-, 512-битный ключ, что составляет 32, 48 или 64 байта данных. Этот алгоритм считается более надежных, по сравнению с предшественниками.);
В блокчейне биткоина используется алгоритм SHA-2(256). Число 256 в названии алгоритма означает, что на выходе мы получим строку фиксированной длины 256 бит независимо от того, какие данные поступят на вход.
Скорее всего, к данному этапу статьи у вас возникло пару вопросов: неужели миллиарды транзакций, проведённых в биткоинах, не перебрали все наборы всего лишь 256 битной строки? И почему в начале статьи говорится о строке цифр, а в хеш-значениях присутствуют буквы?
Итак, ответ на первый: ну конечно, нет! Ведь, количество комбинаций равняется 2 в 256 степени, что приблизительно равно 1,158×1077. И да, значение хеша записывается в 16-ричной системе счисления, в которой присутствуют буквы. (В обычной же жизни мы с вами используем 10-тичную, кстати, вот вам конвертер, попробуйте сами)
Криптографическая задача.
Proof-of-Stake (PoS). Что такое стейкинг?
Алгоритм Proof-of-Stake – это механизм достижения соглашения между пользователями с доказательством доли владения, по принципу своего действия он похож на голосование среди акционеров компании — наибольшую власть получает тот, у кого больше всех акций.
Стейкинг – это процесс, при котором пользователи хранят криптовалюту и обеспечивают работоспособность блокчейна.
Когда пользователи выбирают блокчейн с таким алгоритмом и хранят на своих кошельках монеты, им начисляется вознаграждение. Это стимулирует участников системы вовлекаться в процесс стейкинга и обеспечивать тем самым работоспособность блокчейна. Чем больше монет у держателя, тем больше вероятность, что он станет создателем нового блока.
Стейкинг является полной альтернативой майнингу, он позволяет добывать новые блоки без затрат на электроэнергию и больших вычислительных мощностей.
Отличия стейкинга от майнинга.
На сегодняшний день процесс майнинга в сети биткоин – это сложный процесс, требующий больших вычислительных мощностей для получения новых блоков. Людям, которые хотят заработать на добыче блоков, приходится покупать дорогостоящее оборудование, разработанное специально для майнинга. Один из примеров подходящей техники – специализированные интегральные схемы (ASIC). Если эта тема вам интересна, пишите в комментариях – расскажем про виды оборудования для майнинга.
Отличия двух самых популярных алгоритмов консенсуса представлены ниже:
Стейкинг постепенно начинает вытеснять традиционный майнинг, всё больше новых блокчейн проектов кладут в свою основу алгоритм Proof-of-Stake ввиду более простого механизма заработка для пользователей и большей экологичности и энергоэффективности.
В данный момент команда разработчиков блокчейна Ethereum работает над программным кодом, который позволит второй по капитализации и популярности криптовалюте Ether перейти с PoW на PoS.
«Майнинг требует большей включенности в процесс, надо постоянно держать руку на пульсе. В случае стейкинга процесс упрощен и открыт для большего числа участников блокчейн-сообщества, порог входа в стейкинг ниже, чем порог входа в майнинг», — отметил Максим Крупышев, СЕО криптоплатежной системы Coinspaid.
Альтернативные алгоритмы консенсуса.
Мы рассмотрели два самых популярных алгоритма консенсуса, существуют также менее применяемые механизмы. Приведём их для вашего ознакомления, но подробно останавливаться не будем.
Proof-of-Authority (PoA, Процедура прихода к консенсусу с доказательством права) — Процедура консенсуса на основе разграничения прав пользователей;
Delegated Proof-of Stake (DPoS) – идея состоит в том, что каждый пользователь может голосовать за представителей – тех, кто одобряет транзакции.
Proof of Importance (PoI) – является модернизированной версией PoS. Помимо рассмотрения количества участников, владеющих валютой, алгоритм анализирует их поведение: где, когда и насколько часто монеты ими передаются.
Hybrid PoS/PoW (Гибридный PoS/PoW) — Гибридный алгоритм достижения консенсуса PoS/PoW позволяет одновременно использовать и Proof of Stake, и Proof of Work процедуры для достижения консенсуса. В этом случае можно достичь баланса между майнерами и держателями монет, создав систему управления со стороны «внешних» (майнеры) и «внутренних» (держатели) участников.
Для чего мне вообще знать, что такое алгоритмы консенсуса? Как мне это поможет заработать на крипте?
Технологии, на которых базируются блокчейн-системы, показывают их фундаментальную ценность. Понимая их, вы осознаёте, во что инвестируете, как устроен тот или иной актив;
У крупных инвесторов, фондов и корпораций, двигающих криптоиндустрию, есть определённые цели в развитии данных технологий, важно понимать, в какую сторону они смотрят, так как имеют большое влияние на движение цены;
На алгоритмах консенсуса в действительности можно зарабатывать, и, если порог входа в майнинг пул достаточно высок, то посредством стейкинга можно получать пассивный доход даже со 100 долларов.
Друзья, как сказал известный американский финансист и инвестор Питер Линч: «Знайте, чем вы владеете, и знайте, почему вы этим владеете». Спасибо за прочтение, подписывайтесь на наши обновления, будет ещё много полезной информации.
P.S. Подписывайтесь на наш Telegram-канал, там мы публикуем образовательный материала по финансам, крипто и блокчейн-технологиям.
«Алгоритмы консенсуса»: Подтверждение доли и доказательство работы
Блокчейн — это распределенная система, в которой могут находиться тысячи участников. В отличие от обычных распределенных баз данных, в блокчейне почти всегда отсутствует центральный администратор, который конфигурирует узлы сети, поэтому получается, что архитектура блокчейна не просто распределена, но децентрализована. В связи с этим для блокчейна является актуальной задача распределенного консенсуса:
«Как узлам сети достичь одинаковой точки зрения на журнал транзакций блокчейна в распределенной сети при условии, что произвольные узлы могут «падать» или зависать, руководствуясь лишь общими правилами обработки сообщений в сети?»
О том, как достигается консенсус в блокчейнах, мы поговорим в нашем сегодняшнем материале.

/ изображение jgbarah CC
Структура и узлы блокчейн-сетей
В любой блокчейн-сети передаются два основных типа сообщений — транзакции и блоки (которые, в свою очередь, являются списками транзакций). Транзакции формируются участниками системы и их алгоритм консенсуса не касается: для того чтобы инициировать, скажем, отправку биткойнов, никакого соглашения не надо, достаточно знать правильный ключ. Блоки — совсем другое дело. Они являются основным продуктом алгоритма консенсуса и определяют, в каком порядке транзакции будут включены в журнал транзакций.
Зачем нужны эти сложности? Оказывается, без согласования между узлами сети возможна повторная трата средств (double spending). Предположим, у Евы есть 1 биткойн. Она может сформировать две транзакции, согласно которым этот биткойн переходит Алисе и Бобу. Если Алиса и Боб никак не согласовывают свою историю транзакций, они оба примут платеж Евы, поскольку транзакции будут подписаны электронной подписью Евы, а до выполнения транзакции у Евы действительно был этот биткойн! Поэтому участникам сети нужно согласовывать журналы транзакций. Тогда успешно выполнится только одна из транзакций Евы, а вторая станет некорректной — средства Евы будут уже потрачены.
Можно ли обойтись без блоков, включая транзакции в журнал по отдельности? Теоретически да, но на практике блоки экономят объем трафика и вычислительные ресурсы узлов сети. Кроме того, у них есть и другие преимущества в контексте конкретных алгоритмов консенсуса — оказывается, что со слишком частыми блоками работа блокчейна становится нестабильной.
Блоки создаются особой категорией узлов сети блокчейна — так называемыми узлами консенсуса. В случае биткойна и других криптовалют эти узлы называют майнерами, поскольку они вознаграждаются за свою работу (майнинг) генерацией новых порций криптовалюты. Майнеры активно участвуют в формировании блокчейна, постоянно группируя входящие транзакции в блоки и распространяя их по сети.
Второй тип — узлы аудита. Они не участвуют в процессе консенсуса, однако имеют у себя полную копию блокчейна. «Аудиторы» регулярно проверяют работу майнеров и занимаются распределением нагрузки по сети, выполняя функцию своеобразной сети доставки контента (CDN) для данных блокчейна.
Третий тип узлов — это легкие клиенты. Легкими они называются потому, что не имеют полной версии блокчейна и содержат лишь те данные, которые важны для узла. По этой причине они являются хорошим вариантом для организации криптовалютного кошелька — всей картины сети такой клиент не даст, но позволит эффективно отслеживать баланс пользователя. Легкие клиенты требуют меньше вычислительных ресурсов и объемов памяти, поэтому могут работать на мобильных платформах.

/ Роли узлов в блокчейн-сети. Узлы консенсуса и конечные клиенты могут быть «отгорожены» друг от друга
Биткойн-блокчейн является одним из крупнейших блокчейнов. По данным сайта bitnodes, 8 апреля 2017 года в биткойн-сети наблюдалось 7025 узлов с полной копией блокчейна. Большая часть из них — это узлы аудита; продуктивных майнеров в сети не так уж много — несколько десятков. Отметим, что количество узлов в несколько раз меньше числа участников сети биткойн (которых более 13 миллионов). Так получается потому, что пользователи не обязаны хранить локальную копию блокчейна для отправки транзакций — достаточно хранить закрытые ключи, при помощи которых транзакции подписываются.

Консенсус
Задача распределенного консенсуса не специфична для блокчейнов и имеет хорошо проверенные решения для многих других распределенных систем (например, баз данных NoSQL). Даже задача консенсуса, в котором узлы могут вести себя «по-плохому», — задача византийского консенсуса — впервые была сформулирована в 80-х годах прошлого века, а методы её решения появились в конце 90-х.
Но биткойн и другие блокчейны от предыдущих наработок отличаются условиями работы сети. В обычных алгоритмах византийского консенсуса у узлов сети есть «личности», выражаемые через цифровые подписи или сходные криптопримитивы, а сам список узлов известен заранее или меняется редко, но предсказуемо. В биткойн-блокчейне все наоборот.
Участники сети не только заранее неизвестны, но и могут свободно подключаться или отключаться от сети. При этом блокчейн, являясь децентрализованной системой, имеет определенные свойства: устойчивость к цензуре (никто не может запретить майнить криптовалюту) и объективность (для определения текущей версии журнала транзакций не нужно доверие неким авторитетным источникам — корень доверия находится в самом блокчейне).
Из-за этого обычные алгоритмы византийского консенсуса для блокчейна не подходят. Поэтому было предложено множество различных алгоритмов, среди которых выделяются две основные категории: алгоритмы на основе доказательства работы (proof-of-work) и алгоритмы на основе подтверждения доли (proof-of-stake).
Доказательство работы — PoW
Доказательство работы было «изобретено» задолго до биткойна еще в начале 90-х и применялось в ином контексте: для защиты от спама. Например, один вариант доказательства работы (Hashcash) был предложен английским криптографом Адамом Бэком (Adam Back), который сейчас является генеральным директором одного из крупнейших блокчейн-стартапов.
В случае доказательства работы хеш сообщения, объединенного со специальным полем (nonce), должен быть меньше определенного значения (или начинаться с определенного числа нулевых битов). Nonce не несет смысла для самого сообщения — это поле перебирается автором доказательства, пока не будет найдено подходящее значение. Название «доказательство работы» отражает тот факт, что для нахождения nonce надо совершить вычислительную работу, ожидаемое количество которой измеримо. Например, если нужно, чтобы первые 16 бит хеша равнялись нулю, то в среднем нужно перебрать 65536 значений nonce.
Проиллюстрировать это можно с помощью программы на Python:
import itertools from hashlib import sha256 # Интерпретирует последовательность символов как little-endian число to_long = lambda x: sum(ord(b)
Уточнение насчет ожидаемого количества работы является важным. Теоретически, при сильном везении, подходящий nonce можно найти очень быстро. Если программу выше запустить с сообщением «Bl0Ckchain», то получится, что значение nonce равняется 6571, а это в десять раз меньше ожидаемого. Поэтому, глядя на доказательство работы, можно лишь оценить затраченные на него ресурсы, однако для высокой сложности доказательства (то есть ожидаемого количества выполненной работы) эта оценка будет достаточно точна.
Доказательство работы похоже на цифровые подписи — оно обеспечивает целостность сообщения, так как вероятность того, что один и тот же nonce подойдет для различных сообщений, очень мала. Доказательства также легко проверяются — достаточно провести лишь одну операцию хеширования. В отличие от подписей, создание доказательства работы не требует знания секретов, но «потребляет» больше вычислительных ресурсов. Например, в приведенной выше программе на создание доказательства работы для сообщения «blockchain» сложностью 32 бита требуется несколько часов вычислений на обычном персональном компьютере, однако проверяется это доказательство практически мгновенно.
sha256("5263268363:blockchain") = 000000007cf39dfc8fccae534b39b5f362c16891abca02d0e7b1dbd5a129ee17
PoW и консенсус
Использование PoW для консенсуса — пожалуй, самая большая инновация оригинальной статьи о биткойне. Соответствующий алгоритм консенсуса получил вполне академическое название — консенсус Накамото. Сатоши (автор или авторы статьи) предложил «подписывать» каждый создаваемый блок доказательством работы, сложность которого зависит от общей вычислительной сложности сети биткойна. Такой подход дает несколько преимуществ:
- Консенсус Накамото решает главный бич анонимных сетей — атаки Сибиллы, в которых злоумышленник создает кучу фейковых узлов, чтобы «задавить» получившимся большинством мнение честных пользователей. Чтобы обладать мнением в консенсусе Накамото, нужно обладать реальной вычислительной мощностью, которую нельзя подделать, и которая не требует никакой дополнительной аутентификации — она сама по себе привязывает узлы к реальному миру.
- Доказательство нельзя подделать и «перенести» на другие блоки. Таким образом, майнеры не могут воровать доказательства друг у друга.
- Более того, доказательства нельзя заготовить впрок — в каждый блок входит ссылка на предыдущий, поэтому начать работать над доказательством можно только после появления предыдущего блока в сети.
- Доказательства работы обеспечивают честность — награда каждого майнера пропорциональна его вычислительной мощности (хешрейту). Если у майнера есть 10% хешрейта от всей сети, то он будет в среднем создавать 10% блоков и получать 10% награды.
- Поскольку на создание доказательства тратятся реальные ресурсы (которые в случае биткойна измеряются тысячами долларов в минуту), у майнеров возникает совершенно новый стимул действовать в рамках протокола — нечестное поведение немедленно лишает их реальных денег.
Консенсус Накамото обеспечивает два ключевых требования к блокчейну, которые мы выделили ранее. Из-за того, что доказательство работы не привязывается к личностям майнеров (в отличие от цифровых подписей/сертификатов), обеспечивается устойчивость к цензуре. А за счет того, что доказательства работы быстро проверяются и не требуют для проверки ничего, кроме блокчейна, достигается объективность протокола.
Консенсус Накамото устойчив к атакам на сеть блокчейна, причем его безопасность достаточно хорошо исследована теоретически (в отличие от более новых предложений для блокчейнов). В оригинальной статье отмечено, что сеть биткойна продолжит адекватно функционировать, даже если половина майнеров начнет злонамеренную активность. Если же среди майнеров появится злонамеренное большинство (так называемая атака 51%), они смогут игнорировать блоки от всех остальных майнеров, чтобы забрать себе всю награду в сети, или, например, мошенничать, производя повторную трату средств за счет намеренных форков блокчейна. Однако при этом отметим, даже если все майнеры в сети сговорятся, они не смогут обойти базовые механизмы безопасности биткойна — например, не смогут похитить биткойны пользователей.
Биткойн — самая мощная сеть, использующая доказательство работы. За одну секунду майнеры биткойна вычисляют более трех квинтиллионов (3∙1018) хешей. 32-битное доказательство (которое вычисляется на компьютере несколько часов) — это минимальная сложность в биткойне, которую можно было наблюдать лишь в самом начале работы сети. Это связано с тем, что сложность доказательства автоматически регулируется так, чтобы биткойн-сеть находила в среднем один блок в 10 минут. При увеличении хешрейта сети растет и сложность — сейчас сложность одного доказательства составляет около 70 бит. Соответственно, hex-запись хеша блока должна начинаться с 17 нулей.

/ Мощность биткойн-сети растет по экспоненте. Это обеспечивает высокую стоимость атаки на сеть
Альтернативы для PoW
У консенсуса Накамото есть свойство, которое многими воспринимается как большой недостаток, — для обеспечения безопасности нужно «работать», то есть производить доказательства работы. Вычисления, которые выполняются в рамках PoW, не служат никакой полезной цели, и это архитектурная особенность. Оказывается, очень сложно придумать доказательство работы, которое бы выполняло общественно полезную роль. Поэтому может показаться, что ресурсы (прежде всего, электричество) на майнинг тратятся впустую (если не считать, что они тратятся на обеспечение безопасности).
Помимо этого, майнинг все же подвержен проблеме централизации. Более 70% хешрейта биткойна на данный момент находится в одной стране — Китае. Многие криптовалюты пытаются децентрализовать майнинг за счет использования доказательств работы, которые экономически невыгодно вычислять на специализированном оборудовании, однако с таким подходом возникает другая проблема — если сделать выгодным майнинг биткойнов с помощью домашних компьютеров, то арендовать оборудование для атаки (или создать для нее ботнет) станет существенно дешевле и проще.
Пытаясь решить эти проблемы, сообщество предлагает множество алгоритмов консенсуса, которые не требуют «работы». Самая популярная категория таких алгоритмов основана на доказательствах доли (proof-of-stake, PoS). Доказательство доли похоже на доказательство работы, только вместо совершения определенной работы автор показывает, что у него есть доля в системе (например, в виде ненулевого баланса криптовалюты). Получается, что для майнинга с PoS достаточно «запастись» криптовалютой, после чего просто получать с нее «проценты».
Однако у доказательства доли есть неприятный недостаток в сравнении с PoW: поскольку доказательства доли базируются не на реальном мире (вычислительная мощность), а на чём-то внутри самого блокчейна (баланс криптовалюты), задача построения надежного PoS-алгоритма оказывается нетривиальной.
В простейших вариантах PoS-консенсуса возникают проблемы с базовыми свойствами. Оказывается, что в них самым экономически выгодным поведением является размножение форков блокчейна для повторной траты средств. Были созданы более сложные варианты доказательства доли, без явных дыр в безопасности; такие алгоритмы возвращают в консенсус фактор экономической ответственности за счет обязательного залога, который конфискуется в случае некорректного поведения участника.
У криптографического сообщества все еще остаются сомнения насчет возможности надежных алгоритмов с доказательством доли. Возможно, планируемый переход на доказательство доли блокчейна Ethereum — второго по объему рынка публичного блокчейна — расставит все точки над i.
Кроме доказательства доли, блокчейн-энтузиасты экспериментируют и с другими алгоритмами «proof-of-*». Например, Брэм Коэн (Bram Cohen), создатель протокола BitTorrent, недавно предложил использовать для консенсуса в блокчейнах доказательство локального хранения файлов (proof-of-space), то есть заменить вычислительную мощность в PoW на дисковое пространство. Однако по степени зрелости подобные инициативы еще сильнее отстают от алгоритмов доказательства работы, чем proof-of-stake.
P.S. А вот еще небольшая подборка наших материалов:
- Подтверждение доли и доказательство выполнения работы (PoS vs PoW)
- Безопасность в блокчейне — почему это важно?
- Механизмы вознаграждения в контексте безопасности биткойна
- Недостающее звено интернета: 5 фактов о биткойн-блокчейне, которые должны знать все
Обзор алгоритмов блокчейн консенсуса: Ouroboros PoS, Proof of Elapsed Time, Practical Byzantine Fault Tolerance
Как видно из названия, алгоритм Ouroboros PoS (далее Ouroboros) базируется на использовании алгоритма PoS. В частности он выглядит похожим на подмножество алгоритмов Delegated PoS (DPoS), но с некоторыми нюансами.
Также как и в классическом PoS алгоритме, в формировании блоков могут принимать участие все Владельцы узлов имеющие положительный баланс токенов.
Давайте рассмотрим каким именно образом выбираются узлы, осуществляющие формирование и подписание блоков. Основными временными сущностями в Ouroboros являются Эпохи и Слоты, каждая Эпоха делится на Слоты (например, 20 секунд). У каждого Слота есть свой Слот Лидер — выбранный владелец узла, который должен сформировать и подписать один блок, формируемый в рамках одного, определенного Слота. В том случае, если по какой-либо причине, Слот Лидер не смог подписать блок в своем Слоте, он теряет свое право формирования блока в текущем Слоте.
Выбор Слот Лидеров осуществляется следующим образом:
- Перед каждой Эпохой производится выбор Слот Лидеров для Эпохи и соответственно формируется количество Слотов в ней.
- Шанс стать Слот Лидером есть у каждого владельца токенов, но чем больше токенов есть у владельца, тем выше его шансы на то, чтобы стать Слот Лидером.
- Выбором занимается специальная группа владельцев — Выборщиков, имеющая существенное количество токенов, например 2% от всех токенов.
- Каждый из выборщиков производит случайный выбор потенциальных Слот Лидеров, после чего, используя алгоритм Follow-the-Satoshi, из сформированного списка выбираются реальные Слот Лидеры для следующей Эпохи.
Proof of Elapsed Time (PoET)
Алгоритм консенсуса Proof-of-Elapsed-Time, предложенный компанией Intel, на данный момент используется в качестве алгоритма консенсуса в проекте Hyperledger Sawtooth.
По-сути, алгоритм PoET похож на алгоритм PoW, но без использования существенного количества электроэнергии, необходимой для функционирования алгоритма PoW. Оборудование, используемое для генерации блока, создает блок и дальше переключается на другие, не связанные с генерацией блоков задачи до того момента, пока не придет его время для того, чтобы сгенерировать следующий блок. Встроенный механизм гарантирует, что каждый из узлов сети уверен, что время выбрано случайным образом: оно изначально не меньше определенного для всех узлов блокчейн сети, а также то, что выигравший узел ожидал необходимое время. За обеспечение работы этого механизма отвечают специальные инструкции процессоров компании Intel (Intel Software Guard Extensions (SGX).
Принцип работы алгоритма
- На каждом узле в блокчейн сети случайным образом генерируется время ожидания.
- Узел, который получил минимальное время ожидания, становится узлом генерирующим и подписывающим следующий блок.
- До того момента пока время конкретного узла не подойдет, узел не занимается задачами связанными с генерацией блока. Соответственно первый "проснувшийся" узел станет узлом, который подпишет следующий блок.