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


Обзор 9 алгоритмов блокчейн консенсуса

Описание алгоритма опубликовано в 2014 году, как потенциально нового и более надежного алгоритма для биткоина, информации о его имплементации я так и не нашел. Авторы алгоритма PoA попытались объединить два наиболее популярных алгоритма, такие как Proof-of-Work и Proof-of-Stake, с целью увеличения уровня защиты от потенциально возможных атак (51% attack, Denial-of-Service attacks (DoS). Принцип работы алгоритма описан ниже:- каждый майнер блокчейн сети пробует сгенерировать заголовок пустого блока, который включает в себя хеш предыдущего блока, публичный адрес майнера, индекс текущего блока в блокчейне и nonce.- после генерации заголовка пустого блока отвечающего текущим требованиям сложности, узел рассылает этот заголовок в блокчейн сеть.- все узлы сети рассматривают заголовок такого блока, как данные полученные от псевдослучайных владельцев. Используя хеш разосланного заголовка блока и хеш предыдущего блока + N пресетов с использованием алгоритма follow-the-satoshi выбираются стейкхолдеры.- каждый стейкхолдер, находящийся в онлайне, проверяет полученный, пустой заголовок блока на его корректность. Во время проверки, каждый получивший заголовок, проверяет: является ли он одним из первых N-1 стейкхолдеров "счастливчиков" этого блока и в этом случае подписывает заголовок пустого блока своим секретным ключом и отправляет его в блокчейн сеть.- Когда N-й стейкхолдер видит, что он должен стать подписантом этого блока, он, в дополнение к заголовку пустого блока, добавляет блок с включенными транзакциями (количество включаемых транзакций он выбирает сам), все подписи N-1 от других стейкхолдеров и подписывает блок.- Стейкхолдер N рассылает новый, подготовленный блок. Узлы получают этот блок, убеждаются в его законности и добавляют этот блок в блокчейн.- Премия за транзакции, которую получил N-стейкхолдер, распределяется между майнером и N стейкхолдерами "счастливчиками".

Ссылки- Proof of Activity: Extending Bitcoin's Proof of Work via Proof of Stake / PDF

digiforest.io

Доказательство X: Как работает Блокчейн алгоритм?

Блокчейн — инновационная технология, способная изменить многие отрасли. Одна из главных его особенностей — способность создать доверие между незнакомыми сторонами. Работу распределенных сетей обеспечивают так называемые «консенсусные алгоритмы», которые гарантируют децентрализацию и защищенность. Редакция BITSIDE разбиралась с тем, что они собой представляют и какими бывают.

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

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

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

Метод, благодаря которому происходит коллективное принятие решений, получил название «механизма консенсуса». Он преследует следующие цели:

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

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

Рассмотрим работу протокола на примере блокчейна Биткоина. Алгоритм отслеживает частоту создания блоков — новый появляется каждые 10 минут.

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

Алгоритм принимает участие в решении нескольких задач:

  • размер награды за создание блока. Объем вознаграждения определяется на основании сложности создания нового блока: чем она выше, тем сумма награды ниже;
  • проверка корректности занесения данных в цепочки. Все узлы должны подтвердить факт правильного занесения информации в базу данных. Проверке подвергаются хеши транзакций только что сгенерированного и предшествующего блока, а также подбора случайного числа nonce;
  • предотвращение повторной траты средств. В системе Биткоина, когда происходит транзакция, списываются все деньги. Затем указанная сумма для отправки пересылается получателю, а оставшиеся деньги возвращаются обратно отправителю.

У блокчейна алгоритмы консенсуса основаны на криптологической интерпретации принципа «византийских генералов». Для криптовалюты эта технология была немного изменена и адаптирована под P2P-сети:

  • объективность — в сети всегда хранится полный реестр транзакций. Поэтому аутентичность этих данных не нуждается в дополнительном подтверждении другими авторитетными источниками;
  • стойкость к цензуре. У блокчейна нет «главнокомандующих», так как это децентрализованная система. Здесь никто не может запрещать пользователям цепочки майнить или проводить транзакции.

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

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

как работает блокчейн алгоритм

Самые распространенные блокчейн-алгоритмы

Существует несколько вариантов алгоритмов консенсусов, но наиболее популярны три:

  • Proof of Work (PoW) — доказательство работы;
  • Proof-of-Stake (PoS) — доказательство доли;
  • Delegated Proof-of-Stake (DPoS) — делегированное доказательство доли.

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

Алгоритм Proof-of-Work

Идея подхода зародилась в 1992 году. Ее высказали исследователи Синтия Двор и Мони Наор. Они отметили, что получить доступ к сетевому ресурсу можно только после выполнения достаточно сложной конкретной задачи.

Спустя пять лет британский криптограф Адам Бэк впервые реализовал эту задумку в проекте Hashcash, который был создан для защиты от спама электронных систем, DDoS-атак и прочих спам-атак. Термин «Proof-of-Work» впервые формализировал шведский исследователь в области в области компьютерных наук Маркус Якобссон в 1999 году.

Технологию Hashcash с некоторыми доработками Сатоши Накамото применил в Биткоин в 2008 году. Благодаря этому Bitcoin стал самой первой криптовалютой, работающей на схеме консенсуса PoW.

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

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

В представленной схеме, решение задачи представляет собой подтверждение (proof), что была проведена работа (work). Это соответствует идеи Наор и Двор о получении доступа к сети только при выполнении конкретных полезных действий.

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

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

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

PoW выполняет следующие задачи:

  • защита блокчейна от атаки 51% и двойных трат;
  • обеспечение честности и справедливости операций внутри системы;
  • наказание за мошенничество в виде потери награды;
  • обеспечение устойчивости перед цензурой.

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

Алгоритм консенсуса блокчейна Proof-of-Work используют в Bitcoin, Bitcoin Cash, Litecoin, Monero и многих других криптовалют.

Алгоритм Proof-of-Stake

Proof-of-Stake (PoS) расшифровывается как «доказательство доли владения». Впервые его предложил в 2011 году пользователь с ником QuantumMechanic на форуме Bitcointalk.org. Является альтернативой PoW. Здесь тоже возможен майнинг, который получил название форджинг.

Первая монета, построенная на этом протоколе – Peercoin. Хотя для ее добычи использовался гибридный вариант: вначале майнинг шел по схеме PoW, а после добычи всех монет алгоритм переключился на PoS. Первыми чистыми криптовалютами на основе PoS стали Blackcoin и NXT.

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

«Заморозка» монет позволяет избежать двойных трат и предотвратить атаки на блокчейн, а также избежать риска валидации транзакций поддельными узлами.

Отличие PoS от PoW заключается в том, что форджинг требует наличия на счету узла (ноды) криптовалюты. Чем больше коинов размещено на кошельке, тем вероятнее шанс сгенерировать новой блок в blockchain. «Победивший» узел называют мастернодой.

Принцип работы PoS напоминает игру в рулетку: чем больше ставок будет сделано (положено монет на счет ноды), тем выше шансы на выигрыш.

Преимущества PoS по сравнению с PoW:

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

Из недостатков нужно отметить риск атаки «double-spend» («двойной траты средств»). Для форджинга на счету должны всегда находиться монеты, которые нельзя пускать в оборот. Также минусом является большой порог вхождения и относительно небольшая прибыль.

На PoS работают Waves, NXT, Cardano, Blackcoin, PayCoin и другие.

Алгоритм Proof-of-Stake

Алгоритм Delegated Proof-of-Stake

Delegated Proof-of-Stake (DPoS, делегированное доказательство доли) в 2014 году создал разработчик Дэниел Лаример. Впервые он задействовал нововведение в проекте Bitshares. Позже, на DPoS Лаример построил децентрализованную блог-платформу Steemit. Несмотря на схожую концепцию, технологии DPoS и PoS существенно отличаются.

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

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

DPoS поддерживает в цепи блокчейна непрерывную процедуру перетасовки и голосования. Эта система рандомно выбирает валидаторов. Работоспособность сети основывается на отборе ценных пользователей и удалении бесполезных участников. Только ценные участники могут генерировать блоки. Обычно выбирается порядка 20-50 кандидатов. Из-за этого протокол находится в зависимости от активности избирателей.

DPoS создавался для децентрализованной среды в качестве альтернативы PoS и PoW. Условия работы DPoS отличаются от двух ранее описанных подходов. Здесь валидаторы должны раскрыть свою личность и быть готовыми постоянно поддерживать работу полноценных узлов. Они также должны своевременно проходить верификацию транзакций и генерировать новые блоки в блокчейн.

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

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

Преимущества DPoS:

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

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

Сегодня этот протокол используют в EOS, Steemit, BitShares, Lisk, Ark и ряд других проектов.

Алгоритм Delegated Proof-of-Stake в процессе выборов

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

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

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

Уже сегодня в мире используют альтернативные варианты протоколов в противовес трем самым распространенным. Рассмотрим два самых известных “неклассических” протокола.

Proof-of-Elapsed-Time (PoET ) –  доказательство истекшего времени. Здесь выбор лидера проводится из максимальной выборки. Отличительная особенность — на центральный процессор идет высокая нагрузка. Это позволяет блокчейну функционировать на любом устройстве с большим вычислительным потенциалом. Алгоритм основан на элементах PoS и PoW. Позволяет облегчить майнинг на ASICs и GPU. Недостаток – номинальная стоимость монеты представляет собой заданное значение.

Proof-of-Value alternative (PoV)  –  доказательство ценности. В качестве определяющего фактора здесь используется уровень полезности вклада пользователя в коллективную работу. Поэтому контроль в блокчейн распределяется на основании воспринимаемой ценности. Отличается податливостью и гибкостью. Здесь пользователь может получить авторитет и доверие, если будет генерировать для системы полезные действия.

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

Выводы

Несмотря на наличие большого количества алгоритмов консенсуса, самыми популярными остаются PoW, PoS и одна из модификаций — DPoS. Тем не менее, эти протоколы остаются несовершенными. Их недостатки могут быть решены в новых комбинациях альтернативных консенсусов, которые пока еще только разрабатываются.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

bitside.org

Обзор: алгоритмы консенсуса в блокчейне

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

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

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

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

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

Этот алгоритм является честным и понятным, ему можно доверять. Однако у PoW есть главный недостаток — потребление огромного количества энергии. В 2017 году на полное оформление одной транзакции в системе Bitcoin требовалось затратить в среднем 163 кВт/ч энергии. Таким количеством энергии можно в течение пяти с половиной дней полностью обеспечивать нужды семьи из трех человек, проживающей в небольшом одноэтажном доме. Кроме того, те майнеры, которые обладают более быстрыми и мощными ASIC, получают больше, чем остальные. В результате этого биткоин оказывается не таким децентрализованным, как задумывалось изначально.

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

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

Валидаторы ставят свои монеты на транзакции путем блокировки монет. Микшер, который используется для завершения блока, выбирается пропорционально значению, поставленному в сети. Proof-of-Stake предотвращает плохое поведение в сети с помощью перекладывания полномочий по проверке на самых активных и интересующихся пользователей. Алгоритм консенсуса доказательства владения доли используется в Peercoin, Decred и вскоре будет функционировать на Ethereum, в котором заранее прописывался переход с одного алгоритма на другой.

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

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

DPoS используется Steemit, EOS и BitShares. Новый крипто-проект Minter от блокчейн-сообщества DeCenter основан на алгоритме консенсуса делегированного подтверждения доли.

Византийская отказоустойчивость (Byzantine fault tolerance) носит весьма технический характер (как и другие консенсусные алгоритмы). Целью BFT является установление доверия между несвязанными сторонами сети. Концепция данного алгоритма консенсуса была представлена в научной работе Лесли Лэмпорта, Роберта Шостака и Маршала Писа еще в 1982 году.

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

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

Например, сейчас набирают популярность направленные ациклические графы Directed acyclic graph (DAG), и, возможно, в ближайшем будущем будут активно использоваться в блокчейн-проектах, потому что они могут выступить в качестве потенциального решения проблем, связанных с масштабируемостью. DAG — ори­ен­ти­ро­ван­ный граф с дан­ны­ми на основе то­по­ло­ги­че­ской сор­ти­ров­ки. Его раз­ви­тие идет толь­ко в одном на­прав­ле­нии — от ран­них блоков к поздним. Из-за без­блоч­но­го устрой­ства все тран­зак­ции совершаются в сетях DAG, поэтому этот про­цесс за­ни­ма­ет на­мно­го мень­ше вре­ме­ни, чем в слу­чае блок­чей­нов, ос­но­ван­ных на PoW и PoS. В сети DAG нет май­не­ров. Под­твер­жде­ние осуществляется непо­сред­ствен­но в самих тран­зак­ци­ях, поэтому сдел­ки про­хо­дят почти мгно­вен­но.

Интересным с точки зрения экономики платформы является Proof-of-Importance (PoI). Алгоритм консенсуса используется в блокчейне NEM. Значимость каждого пользователя в сети определяется количеством средств, имеющихся у него в кошельке, и количеством проведенных транзакций. В отличие от PoS, который учитывает сумму имеющихся средств у пользователя, PoI принимает в расчет количество средств и активность пользователя в блокчейне. Такой подход побуждает активно использовать те средства, которые хранятся на счете.

Большинство платформ, несмотря на обилие алгоритмов консенсуса, по-прежнему используют Proof-of-Work, Proof-of-Stake и их модификации. Одним из наиболее оптимальных является алгоритм консенсуса Delegated Proof-of-Stake, плюсы которого заключаются в увеличенной скорости подписания блоков и большей энергоэффективности за счет ограниченного количества подписантов.

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

Адаптация материала с Hackernoon.

decenter.org

Что такое Консенсус в Блокчейне? Алгоритмы консенсуса

 

Консенсус в Блокчейне

 

 

Что такое Консенсус?

 

Термин Консенсус (лат. Consensus – согласие) в общем случае трактуется как процесс принятия группой лиц единого решения, достижение согласия по какому-либо вопросу. При этом как такового голосования не проводится – решение принимается на основе отсутствия возражений у большинства участников.

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

 

Алгоритм консенсуса

 

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

Алгоритм консенсуса имеет следующие цели:

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

 

Консенсус в блокчейне

 

Алгоритм консенсуса в блокчейне – это набор определенных математических правил и функций, регулирующих работу сети.

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

Современные механизмы консенсуса в блокчейне основаны именно на данной криптографической задаче.

Для применения в отношении криптовалют принципы «византийской» задачи были несколько скорректированы и адаптированы под работу в P2P-сети.

Применяя данную задачу к блокчейну можно выделить следующие моменты:

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

 

Функции механизмов консенсуса в блокчейне

 

  • Частота генерации новых блоков. Благодаря данным алгоритмам исключаются ситуации, каждый узел генерирует свой блок и записывает его в блокчейн. К примеру, в сети Биткоин блоки генерируются каждые 10 минут. Однако иногда возникают ситуации, когда два или более узлов генерируют блок практически одновременно, с разницей в долях секунды. В этом случае возникает конфликт, который разрешается в пользу узла, раньше всех создавшего блок. Транзакции, которые входили в конкурентный блок или блоки, помещается в список неподтвержденных транзакций, и отрабатываются в следующем блоке.
  • Проверка информации в блоке. Все участники должны подтвердить, что данные в сгенерированном блоке верны. Проверке подлежат хеши транзакций как текущего, так и предыдущего блока, а также корректность подбора числа nonce.
  • Размер вознаграждения. Размер вознаграждения зависит от сложности сети, причем, как это ни парадоксально в обратной пропорции.
  • Недопущение двойного списания средств. Например, в сети Биткоин при проведении транзакции в блокчейн направляются все средства. После этого необходимая сумма перечисляется получателя, а остаток возвращается отправителю.

 

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

 

Все перечисленные механизмы консенсуса имеют свои преимущества и недостатки. Ознакомится с каждым из них вы можете по ссылкам.

Самыми распространенными в настоящее время являются два алгоритма — Proof-of-Work и Proof-of-Stake. Другие механизмы находят применение в намного меньшем количестве криптовалютных платформ. Это связано с их относительным малым возрастом, и, соответственно, не в полной мере отработанными технологиями.

blockchaindesk.ru

что такое PoW, PoS, DPOS, TAPOS и dBFT и другие

Почему протоколы консенсуса так важны? Так как блокчейн — децентрализованная одноранговая система, у которой нет центрального органа власти. Хотя это создает систему, которая лишена коррупции, есть серьезная проблема: кто принимает решения, как это происходит без центральной организации? Чтобы блокчейн принимал решения, участникам сети необходимо прийти к соглашению, используя «механизмы консенсуса».

Итак, как работают эти механизмы консенсуса и каковы основные из разновидности рассказываем в этом материале.

Читайте в статье

Теоретическая сторона понятия «консенсус»

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

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

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

Метод, посредством которого достигается принятие решений, называется «механизмом консенсуса». Его цели:

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

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

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

Проблема византийских генералов

Какие механизмы/алгоритмы консенсуса на блокчейне бывают?Источник: hackernoon.com

Это классическая проблема — децентрализованные вычисления, которые обычно объясняются через пример с византийскими генералами. Проблема в том, что несколько византийских генералов и их армии окружили город. Они должны единодушно решить, нападать или нет. Если некоторые генералы атакуют без других, осада закончится трагедией. Генералы разделены расстоянием и должны передавать сообщения друг другу. Несколько протоколов криптовалют используют переработанную версию BFT для достижения консенсуса, потому что у ситуации есть отсылки к блокчейну. Также цель — поддержать работу огромной сети. Если вы отправляете кому-то деньги, как вы можете быть уверены, что никто в сети не изменит сумму?

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

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

Proof Of Work / PoW

Популярные валюты: Bitcoin, Ethereum, Litecoin, Monero, ZCash, Dogecoin и многие другие.

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

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

Доказательство работы является неэффективным процессом из-за огромного количества потребляемой энергии.

Люди и организации, которые могут позволить себе более быстрые и мощные ASIC, имеют больше шансов на майнинг, чем другие.

В результате этого биткоин не так децентрализован, как хочет. Например, у BTC ~ 65% хешета делится между 5 пулами. Теоретически, они могут объединяться друг с другом и запускать атаку 51% в сети.

Proof of Stake / PoS

Популярные валюты:  VCash, BitBay, Peercoin, Qtum, Stratis

Доказательство владения доли делает весь процесс добычи виртуальным и заменяет майнеров валидаторами. Процесс работает так:

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

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

Nothing at Stake в PoS / Нечего терять

Но в PoS есть проблема «Nothing at Stake» — можно поддерживать любые цепи (в том числе злоумышленные), так как терять нечего. Чтобы внедрить консенсусную систему POS в Ethereum, нужно решить эту проблему, и Ethereum собирается сделать это очень интересным способом, через Casper (подробности).

Если кратко, то Каспер отличается от других протоколов Proof of Stake:

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

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

Proof of Stake Time / PoST

Сначала использовать это Vericoin. Доказательство времени ставки использует возраст монеты, но вместо того, чтобы брать количество монет для расчета возраста, используется период времени, в течение которого монеты удерживались по конкретному адресу.

Delegated Proof Of Stake / DPOS

Делегированное доказательство доли владения используют Steemit, EOS, BitShares.

EOS использует этот механизм консенсуса для масштабирования до миллионов транзакций в секунду. Подробнее о принятом в проекте алгоритме в разделе «Как майнить EOS».

DPoS является порождением Дэниела Ларимера и на самом деле очень отличается от PoS. В DPoS токены не голосуют за сами блоки, но голосуют избрание делегатов, которые проведут проверку от своего имени. Их может быть в районе 21-100. Делегаты периодически переизбираются. Система работает быстро. Если избранные узлы постоянно пропускают блоки или публикуют недействительные транзакции, ставящие голосуют против них и заменяют их лучшим вариантом.

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

TAPOS / Транзакции как доказательство доли

Транзакция как доказательство ставки или TAPOS является функцией программного обеспечения EOS. Для каждой транзакции в системе требуется хэш последнего заголовка блока. Это дает следующее:

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

dBFT / Делегированная задача византийских генералов

Используется NEO.

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

Чтобы объяснить, как работает dBFT, будем использовать упрощенную аналогию. Есть страна под названием Нео. Каждому гражданину страны предоставляется право голосовать, кто будет их лидером, он также называется делегатом. Делегаты составляют законы страны. Если граждане не согласны с тем, как делегат проголосовал за закон, они могут проголосовать за другого делегата в следующий раз. Затем граждане рассказывают свои избранникам, что он хочет. Каждый делегат должен отслеживать требования всех граждан и документировать их в книге. Эти требования будут учтены при принятии законов, направленных на то, чтобы сделать граждан счастливыми.

Когда пришло время принять закон, случайным образом из группы делегатов назначается  спикер. Он предлагает закон, основанный на требованиях граждан. В предлагаемом законе он рассчитывает, как закон повлияет на уровень счастья страны. Затем спикер лично вручает делегатам предложенный им закон. Делегаты решают, соответствует ли расчет уровня счастья, который предложил спикер, их собственным. Если 66% процентов делегатов согласятся с тем, что подсчитанный уровень счастья верный, закон принимается.

Если менее 66% делегатов согласны, то новый спикер выбирается случайным образом, и процесс начинается. Эта система предназначена для защиты от предателей и лидеров с вычислительными проблемами.

Применяя эту аналогию к блокчейну Нео, любой, кто владеет Нео, является гражданином. Большинство держателей Neo являются обычными нодами, которые могут передавать или обменивать монеты. Как и граждане страны, они не участвуют в проверке блоков. Делегаты представляют собой особые ноды учета: они проверяют каждый блок, записанный в блокчейн. Чтобы стать узлом учета, должны быть соблюдены определенные требования: специальное оборудование, выделенные интернет-соединения и определенный объем GAS (на момент написания 1000).

Дальше по аналогии: закон — текущий блок в блочной цепочке, а уровень счастья — это хэш текущего блока.

BFT алгоритм

Используют Hyperledger, Stellar, Dispatch, and Ripple.

Практическая задача византийских генералов (PBFT): одним из первых решений этой проблемы был разработан данный алгоритм. В настоящее время он используется Hyperledger Fabric. Это высокая пропускная способность транзакций, но централизация.

Федеративное византийское соглашение (FBA): еще один способ решений проблемы византийских генералов, используемой Stellar и Ripple. Общая идея заключается в том, что каждый генерал, ответственный за свою собственную цепочку, сортирует сообщения, чтобы установить истину. В Ripple генералы (валидаторы) предварительно выбираются основателями Ripple. В Stellar любой может быть валидатором, поэтому вы выбираете, каким валидаторам доверять.

Это дает высокую пропускную способность, низкие транзакционные издержки и масштабируемость.

Какие механизмы/алгоритмы консенсуса на блокчейне бывают?

Proof Of Activity / Доказательство деятельности

Реализован в тестнете Ethereum Kovan.

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

Proof Of Burn / Алгоритм сжигания монет

Использует Slimcoin.

Самая популярная реализация принадлежит Йену Стюарту, но могут быть другие варианты.

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

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

Proof of Weight / Доказательство веса

Используется в Algorand, Filecoin, Chia.

Это группа алгоритмов консенсуса.  Общая идея заключается в том, что если в PoS ваш процент токенов, принадлежащих сети, дает вероятность «обнаружения» следующего блока, в системе PoWeight используется другое другое взвешенное значение. Конкретный пример: Proof-of-Spacetime от Filecoin взвешен на том, сколько данных IPFS вы храните. Другие системы могут включать в себя вес таких вещей, как «Доказательство репутации».

Похожи на это алгоритмы ниже:

Proof of Capacity и Proof of Storage

Proof of Capacity — это осуществление концепции «мегабайты как ресурсы». Чтобы получать вознаграждение, нужно поделиться своим местом на жестком диске. Это помогает на пользу направлять ресурсы, которые не используются.

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

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

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

Какие механизмы/алгоритмы консенсуса на блокчейне бывают?

Proof of Checkpoint / PoC

Это гибридная система, которая использует любую систему PoS с PoW. Каждому блоку, подтвержденном в одном алгоритме, должен найтись аналог в другом.

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

Proof of Importance / Доказательство важности

Используется NEM.

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

Чтобы иметь право на «вычисления важности», пользователи должны иметь не менее 10 000 XEM на балансе. Возможно, этот порог будет изменен в будущем.

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

Как сеть NEM определяет оценку важности? Когда кто-то владеет 10 000 XEM или более, происходит математический расчет. Больше транзакций XEM в сети, связанной с этой учетной записью, улучшит оценку важности. Подробности в WP проекта.

PoI для другого алгоритма мы писали в отдельной карточке.

Directed Acyclic Graphs / Направленный ациклический граф

Построение по типу DAG используют Iota, Hashgraph, Raiblocks/Nano.

DAG не берет структуру блокчейна, а обрабатывает транзакции в основном асинхронно. Это теоретически дает бесконечное количество транзакций в секунду, но у консенсуса в DAG есть сильные и слабые стороны, как и у любого другого консенсуса.

  • Tangle — это алгоритм консенсуса DAG, который использует Iota. Чтобы отправить транзакцию, необходимо подтвердить две предыдущие транзакции, которые вы получили. Консенсус по принципу «два к одному» укрепляет справедливость транзакций. Поскольку консенсус определяется транзакциями, теоретически, если кто-то может генерировать треть всех транзакций, они могут захватить сеть. В Iota есть «двойная проверка» всех транзакций сети на централизованном узле «Координатор». Команда говорит, что Координатор работает как поддержка системы и будет удален, как только Tangle будет достаточно большой.
  • Hashgraph использует aBFT — это консенсус, разработанный Leemon Baird. Узлы распределяют свои известные транзакции с другими узлами наугад, поэтому в итоге все транзакции переплетаются вокруг всех узлов. Hashgraph быстр (250 000 транзакций в секунду), но не устойчив к атакам Sybil. Он походит для частных сетей.

Подробнее про DAG и распределенные реестры.

При всем названном количестве алгоритмов консенсуса, это только часть существующих: реализованных или гипотетических.

crypto-fox.ru

Подтверждение доли и доказательство работы / Блог компании Bitfury Group / Хабр

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

«Как узлам сети достичь одинаковой точки зрения на журнал транзакций блокчейна в распределенной сети при условии, что произвольные узлы могут «падать» или зависать, руководствуясь лишь общими правилами обработки сообщений в сети?»

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

/ изображение 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) << (8*i) for i, b in enumerate(x)) # Комбинирует nonce и сообщение для вычисления хэша. combine = lambda nonce, msg: str(nonce) + ":" + msg # Проверяет доказательство работы def verify_pow(msg, nonce, difficulty): h = sha256(combine(nonce, msg)).digest() # Равны ли первые difficulty битов хеша нулю? return to_long(h) % (1 << difficulty) == 0 # Создает доказательство работы для сообщения def create_pow(msg, difficulty): for nonce in itertools.count(0): if verify_pow(msg, nonce, difficulty): return nonce msg = "blockchain" nonce = create_pow(msg, 16) combine(nonce, msg), sha256(combine(nonce, msg)).hexdigest() #43952:blockchain 000027b5022f88d2da21bd2802268966050f5a0b031058ce4562939c13727303 Уточнение насчет ожидаемого количества работы является важным. Теоретически, при сильном везении, подходящий 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. А вот еще небольшая подборка наших материалов:

habr.com

Блокчейн Алгоритм Работы : Блокчейн

Базовую теорию блокчейна, кажется, освоил каждый на финансовом рынке Май 16, 2017 – 06:54

Основные характеристики блокчейна — это:

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

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

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

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

Затем все накопившиеся транзакции упаковываются в блок. На основании всех данных транзакций в блоке вычисляется «хэш». Хэш представляет собой кажущуюся на первый взгляд случайной последовательность букв и цифр, но является гарантией того, что если в блоке данных изменится хотя бы один бит, каждый узел быстро сможет узнать о попытке фальсификации истории транзакций. Блокчейн биткоина использует алгоритм шифрования SHA-256. Каждый блок в блокчейне состоит из транзакции и должен обязательно содержать в себе информацию о предыдущем блоке в блокчейне, чтобы быть «принятым» системой.

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

ukrbomj.net