что такое консенсус в криптовалюте
Что такое консенсус в криптовалюте
Содержание:
Что такое Консенсус?
Термин Консенсус (лат. Consensus – согласие) в общем случае трактуется как процесс принятия группой лиц единого решения, достижение согласия по какому-либо вопросу. При этом как такового голосования не проводится – решение принимается на основе отсутствия возражений у большинства участников.
Стоит отметить, что консенсусом называют не только сам процесс принятия решения, но и само принятое в результате такой процедуры решение, то есть результат.
Алгоритм консенсуса
Тот или иной метод, который используется для принятия решения, называется «механизмом консенсуса» или «алгоритмом консенсуса».
Алгоритм консенсуса имеет следующие цели:
Консенсус в блокчейне
Алгоритм консенсуса в блокчейне – это набор определенных математических правил и функций, регулирующих работу сети.
Как известно, первой криптовалютой, в основе которой лежит технология блокчейн, является Биткоин. Однако и до его появления было достаточно много попыток разработки одноранговых децентрализованных платежных систем, но все они потерпели неудачу, главным образом, из-за неспособности решить основную проблему достижения консенсуса. Эта проблема получила название «задача византийских генералов». Более подробно о ней читайте в статье по ссылке.
Современные механизмы консенсуса в блокчейне основаны именно на данной криптографической задаче.
Для применения в отношении криптовалют принципы «византийской» задачи были несколько скорректированы и адаптированы под работу в P2P-сети.
Применяя данную задачу к блокчейну можно выделить следующие моменты:
Функции механизмов консенсуса в блокчейне
Основные алгоритмы консенсуса в блокчейне
Все перечисленные механизмы консенсуса имеют свои преимущества и недостатки. Ознакомится с каждым из них вы можете по ссылкам.
Самыми распространенными в настоящее время являются два алгоритма — Proof-of-Work и Proof-of-Stake. Другие механизмы находят применение в намного меньшем количестве криптовалютных платформ. Это связано с их относительным малым возрастом, и, соответственно, не в полной мере отработанными технологиями.
Безопасность, децентрализация и равные права. Как работает блокчейн
Блокчейн позволяет пользователям просматривать и обновлять единый, общий реестр транзакций, который поддерживается децентрализованным способом без присутствия доверенной третьей стороны. Именно через механизм консенсуса обновляется эта цепочка блоков, механизм, которой обеспечивает четкое и однозначное упорядочение транзакций и блоков и гарантирует целостность и согласованность содержимого этой цепочки между различными распределенными узлами сети.
В рамках публичного блокчейна каждый может создать собственный распределенный узел. Следовательно, необходимо согласовать механизму согласованности между этими узлами, которых, как правило, много, чтобы эффективно снизить вероятность атаки Sybil или DDoS. Первоначально эта проблема была решена с помощью самых первых платформ блокчейнов, потребовав от узлов, чтобы они предоставили «доказательство работы». Этот концепт было весьма трудно реализовать, но можно было легко проверить (Proof of Work или PoW). Тем не менее, публичные или частные блокчейн-платформы должны отвечать растущим требованиям приложений, для которых они предназначены:
Хотя механизм PoW позволил установить надежный консенсус в глобальной сети, он совсем не подходит для приложений, требующих, например, очень высокую пропускную способность транзакций. Для преодоления этих различных ограничений были разработаны и внедрены новые механизмы консенсуса.
Какова цель механизмов консенсуса?
Цель механизма консенсуса в сети состоит в том, чтобы позволить членам сети согласовывать текущее состояние истории транзакций. Другими словами, это процесс, который позволяет сети, совместно использующей общую историю (блокчейн), согласовать действительность и порядок транзакций, которые будут добавлены в историю, путем последовательного добавления новых блоков.
Можно выделить следующие цели:
Описание алгоритмов консенсуса:
Proof-of-work (PoW)
Proof-of-work — это алгоритм консенсуса, используемый для достижения соглашения, который определяет, какие из блоков будут добавлены в цепочку после майнинга. Цель этого протокола состоит в том, чтобы избежать кибератак, таких как отказ в обслуживании (DDoS). Он работает через добавление задачи, на которую требуется затратить весомый объем ресурсов. При этом валидатор на проверку будет тратить намного меньше времени. PoW является фундаментальным понятием для криптовалют, и в блокчейне этот алгоритм является ключевым фактором, при генерации новых блоков в цепочке. С PoW майнеры соревнуются друг с другом в совершении онлайн-транзакций и получении вознаграждений. В сети пользователи отправляют друг другу цифровые токены. База данных децентрализована и отвечает за все транзакции в блоках.
Proof-of-stake (PoS)
Proof-of-Stake (PoS) — это категория согласованных алгоритмов для открытых цепочек блоков, которые зависят от экономических интересов валидатора в сети. В общедоступных цепочках блоков, основанных на PoW (например, BTC и текущая реализация ETH), алгоритм поощряет участников, которые решают задачи криптографического шифрование для проверки транзакций и создания новых блоков (например, майнинга). В открытых цепочках блоков, основанных на PoS, группа валидаторов по очереди предлагает и голосует за следующий блок, и вес голоса каждого валидатора (то есть валидация) зависит от размера вашего депозита. Существенные преимущества PoS включают безопасность, снижение риска централизации и энергоэффективности. В общем, алгоритм выглядит следующим образом. Блокчейн отслеживает набор валидаторов, и любой, кто имеет базовую криптовалюту блокчейна, может стать валидатором, отправив транзакцию особого типа. Процесс создания и принятия новых блоков осуществляется через согласованный алгоритм, в котором могут участвовать все существующие валидаторы.
Leased proof of stake (LPoS)
В консенсусе LPoS держатели низких сумм в своем кошельке не смогут проверить блок — так же, как и майнеры с низким хэшрейтом не смогут добывать блок в PoW. На практике в обоих случаях обслуживание сети зависит от ограниченного числа пользователей с большим спектром полномочий (большие суммы или высокие показатели вычислительной мощности). Однако, чем больше распределена сеть, тем больше она будет защищена от бесчисленных типов атак. LPoS делает это, позволяя пользователям сдавать свои балансы в аренду. Арендованные средства остаются под полным контролем владельца и могут быть перемещены или потрачены в любое время (когда заканчивается срок аренды). Арендованные монеты увеличивают «вес» узла, увеличивая ваши шансы добавить блок в цепочку блоков. Все полученные вознаграждения распределяются пропорционально арендаторам.
Delegated proof of stake (DPoS)
DPoS работает таким образом, что валидаторы являются основными действующими лицами в любой конкретной сети блокчейна. Владельцы несут ответственность за голосование валидаторов, которым поручено проверить транзакции и формировать блоки.Это дает возможность исключить двойные траты и обеспечить безопасность. По сути, DPoS — это вариация PoS, которая была разработан для снижения затрат и высокого потребления электроэнергии, связанных с механизмами типа PoW. Метод DPoS был впервые реализован на платформе BitShares, разработанной ведущим разработчиком BitShares Даниэлем Ларимером. С тех пор другие блокчейны, такие как Крипти или Лиск, внедрили аналогичные системы ОИ. Разница между классическим механизмом PoS и механизмом DPoS аналогична разнице между PoS и DPoS. Для классического PoS у каждого пользователя есть определенная криптовалюта, которую он будет блокировать в конце размещения, то есть для участия в процессе проверки транзакции и формирования распределенного консенсуса, чтобы получить вознаграждение. В системе DPoS каждый портфель, содержащий единицы криптовалюты, может голосовать за делегатов пропорционально количеству принадлежащих ему единиц. Именно эти делегаты (101 в первой реализации BitShares), которые выполняют проверку транзакций, подписывая каждый новый блок своим закрытым ключом, гарантируют неприкосновенность данных реестра и возмещают стоимость транзакций, введенных в блок.
Proof-of-Capacity (PoC)
Этот конкретный алгоритм «майнинга» требует от пользователей совместного использования доступного места на HDD. В частности, для подтверждения емкости требуется, чтобы пользователи выделяли большое количество места на жестком диске, чтобы начать процесс генерации новых токенов. В определенном случаи это место на жестком диске используется в качестве хранения больших объемов данных. Выделение большего количества доступного места на HDD позволит пользователям иметь больше «участков» данных. Если хэш вместе заголовком последнего блока меньше определенного значения, пользователь генерирует блок. Этот принцип майнинга идентичен PoW, несмотря на отсутствие мощного компьютерного оборудования, задействованного каким-либо образом. Хранение данных является ценным для многих людей, и свободное место на HDD может быть использовано для получения небольшой пассивной выручки с помощью PoC. Прежде чем кто-либо даже подумает о покупке десятков жестких дисков для майнинга на этой системе, будьте уверены, это не будет стоить вашего времени. Те, которые имеют очень низкую ценность за токен, что означает, что вам понадобится очень большая сумма этой валюты, чтобы заработать немного денег. Даже тогда вам все еще нужно найти людей, желающих выкупить эти монеты, что иногда может быть довольно проблематичным. PoС может принести следующие преимущества: значительно сократить растрату ресурсов. После того, как пользователь платит один раз за место на жестком диске, последующий майнинг не требует сверхусилий.
Proof-of-Importance (PoI)
PoI — это консенсусный алгоритм, применяемый на площадке NEM. Proof of Importance — это модифицированный Proof of Stake, поскольку он не только оценивает количество токенов, но также учитывает активность счета и непрерывного пребывания в сети. Основанный в Сингапуре и запущенный в 2015 году, проект NEM направлен, прежде всего, на создание блокчейна, именуемой «Системой интеллектуальных активов», способного обрабатывать большой объем операций. Хотя интеллектуальные активы, выпущенные в рамках блокчейна, не являются новизной для криптоиндустрии. Это дает возможность майнерам работать на любом оборудовании, гарантируя полную безопасную сеть, которая может развиваться без ограничений.
Proof-of-Burn (PoB)
Название Proof of Burn говорит само за себя, это алгоритм который сжигает токены. Чтобы получить новую валюту, нужно «уничтожить» (сжечь) n-ное количество другой криптовалюты, полученной в системе pow. В теории, это приведет к тому, что каждая новая криптовалюта будет иметь стоимость уничтоженного токена. Другими словами, процесс «горения» токенов представляет силу виртуального майнинга, чем больше токенов пользователь инвестирует, тем больше у него мощности майнинга, и, следовательно, более высокие вознаграждения, поскольку, это станет большим шансом стать валидатором следующего блока.
Proof-of-Authority (PoA)
Алгоритм Proof of Authority в основном используется в сетях, где требуется аутентификация пользователя. Это связано с тем, что в PoA личность пользователя должна быть известна. Для сети это означает, что только доверенные ноды могут участвовать в майнинге. Если это доверие нарушено, сеть может заблокировать доступ для данного пользователя. В PoA мы можем столкнуться с полной централизацией, так как этот алгоритм может использоваться в закрытых пулах. Конечно, существует также возможность децентрализации, когда сетевое сообщество выбирает доверенных лиц — как в DPoS (однако в DPoS можно оставаться инкогнито). Блокчейны с Proof of Authority (PoA) входят в число «разрешенных» блокчейнов доступ к механизму консенсуса для участвующих валидаторов разрешен только должно быть — в отличие от «неразрешенных» блокчейнов, таких как PoW или PoS, в в принципе, каждый может принять участие в поиске консенсуса. Алгоритмы работают пошагово. В каждой транзакции выбран узел, который выступает в качестве лидер а майнинга.
Proof-of-Elapsed-Time (PoET)
Чипмейкер Intel представила свой собственный альтернативный согласованный протокол под названием Time Elapsed Test. Эта система работает по принципу PoW, но потребляет гораздо меньше электроэнергии. Кроме того, чтобы участники решали криптографическую головоломку, алгоритм использует надежную среду исполнения (TEE) — такую как SGX — для обеспечения того, чтобы блоки создавались случайным образом, но без необходимой работы. Подход Intel основан на времени ожидания, предоставляемом через TEE. По словам Intel, алгоритм масштабируется на тысячи узлов и будет эффективно работать на любом процессоре Intel, поддерживающем SGX. Единственный недостаток этого протокола заключается в том, что он требует, чтобы вы полагались на Intel в качестве централизованного сервера.
Больше новостей о криптовалютах вы найдете в нашем телеграм-канале РБК-Крипто.
«Алгоритмы консенсуса»: Подтверждение доли и доказательство работы
Блокчейн — это распределенная система, в которой могут находиться тысячи участников. В отличие от обычных распределенных баз данных, в блокчейне почти всегда отсутствует центральный администратор, который конфигурирует узлы сети, поэтому получается, что архитектура блокчейна не просто распределена, но децентрализована. В связи с этим для блокчейна является актуальной задача распределенного консенсуса:
«Как узлам сети достичь одинаковой точки зрения на журнал транзакций блокчейна в распределенной сети при условии, что произвольные узлы могут «падать» или зависать, руководствуясь лишь общими правилами обработки сообщений в сети?»
О том, как достигается консенсус в блокчейнах, мы поговорим в нашем сегодняшнем материале.
Структура и узлы блокчейн-сетей
В любой блокчейн-сети передаются два основных типа сообщений — транзакции и блоки (которые, в свою очередь, являются списками транзакций). Транзакции формируются участниками системы и их алгоритм консенсуса не касается: для того чтобы инициировать, скажем, отправку биткойнов, никакого соглашения не надо, достаточно знать правильный ключ. Блоки — совсем другое дело. Они являются основным продуктом алгоритма консенсуса и определяют, в каком порядке транзакции будут включены в журнал транзакций.
Зачем нужны эти сложности? Оказывается, без согласования между узлами сети возможна повторная трата средств (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:
Уточнение насчет ожидаемого количества работы является важным. Теоретически, при сильном везении, подходящий nonce можно найти очень быстро. Если программу выше запустить с сообщением «Bl0Ckchain», то получится, что значение nonce равняется 6571, а это в десять раз меньше ожидаемого. Поэтому, глядя на доказательство работы, можно лишь оценить затраченные на него ресурсы, однако для высокой сложности доказательства (то есть ожидаемого количества выполненной работы) эта оценка будет достаточно точна.
Доказательство работы похоже на цифровые подписи — оно обеспечивает целостность сообщения, так как вероятность того, что один и тот же nonce подойдет для различных сообщений, очень мала. Доказательства также легко проверяются — достаточно провести лишь одну операцию хеширования. В отличие от подписей, создание доказательства работы не требует знания секретов, но «потребляет» больше вычислительных ресурсов. Например, в приведенной выше программе на создание доказательства работы для сообщения «blockchain» сложностью 32 бита требуется несколько часов вычислений на обычном персональном компьютере, однако проверяется это доказательство практически мгновенно.
PoW и консенсус
Использование PoW для консенсуса — пожалуй, самая большая инновация оригинальной статьи о биткойне. Соответствующий алгоритм консенсуса получил вполне академическое название — консенсус Накамото. Сатоши (автор или авторы статьи) предложил «подписывать» каждый создаваемый блок доказательством работы, сложность которого зависит от общей вычислительной сложности сети биткойна. Такой подход дает несколько преимуществ:
Консенсус Накамото обеспечивает два ключевых требования к блокчейну, которые мы выделили ранее. Из-за того, что доказательство работы не привязывается к личностям майнеров (в отличие от цифровых подписей/сертификатов), обеспечивается устойчивость к цензуре. А за счет того, что доказательства работы быстро проверяются и не требуют для проверки ничего, кроме блокчейна, достигается объективность протокола.
Консенсус Накамото устойчив к атакам на сеть блокчейна, причем его безопасность достаточно хорошо исследована теоретически (в отличие от более новых предложений для блокчейнов). В оригинальной статье отмечено, что сеть биткойна продолжит адекватно функционировать, даже если половина майнеров начнет злонамеренную активность. Если же среди майнеров появится злонамеренное большинство (так называемая атака 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.