Что общего между PoW и PoS и чем они отличаются (часть 1)

Перевод с английской статьи

Принцип Proof-of-Work (PoW, доказательство работы) биткойна - это первый сетевой консенсус, который используется для достижения единого действующего состояния регистра с узлами, разбросанными по всему земному шару. Как любая технология может быть улучшена, так и сетевой консенсус может быть также улучшен. Аспекты, в которых он может быть улучшен, следующие: быстрота, безопасность, децентрализованность и меньшая энергозатратность. Принцип Proof-of-Stake (PoS, доказательство ставки) Cardano будет таким консенсусом. Давайте рассмотрим более детально.


Cardano - это зеленый протокол благодаря современной криптографии.

Что такое сетевой консенсус и каковы его ключевые особенности

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

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

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

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

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

Безопасность должна рассматриваться с двух точек зрения. Сеть должна быть устойчива не только к внешним атакам, таким как хорошо известная атака 51%, но и к атакам изнутри. Крупные операторы пула образуют несколько отдельных точек отказа. Они могут злоупотреблять своей властью, подвергая цензуре транзакции, или они могут не принять блоки, которые были созданы меньшими пулами. Они могут даже принять решение о минимальном размере комиссии за транзакцию. Они могут злоупотреблять своей властью и диктовать условия другим мелким операторам или пользователям. Теоретически они могли бы даже изменить максимальный запас монет. Нельзя забывать о том, что люди управляют узлами, участвующими в сетевом консенсусе, поэтому человеческие решения влияют на безопасность сети. Операторы пула могут изменять исходный код клиента, поэтому они в сущности могут изменять правила протокола на своих узлах. Остальные полные узлы, вероятно, должны будут принять новые правила.

Безопасность узла может быть нарушена сетевой атакой или может возникнуть давление на операторов узла, чтобы они действовали нечестно. Если оператор обладает значительной властью принятия решений и способен совершить атаку, то только от его решения зависит, сделает он это или нет. Если злоумышленник ставит под угрозу безопасность узла, то полномочия узла в принятии решений могут быть использованы не по назначению. На самом деле безопасность очень тесно связана с децентрализацией. Чем более децентрализована сеть, тем более она безопасна. Объяснение заключается в том, что чем больше существует более независимых участников, которые принимают свои собственные решения, тем их труднее скомпрометировать. Смысл децентрализации состоит в том, чтобы свести к минимуму отдельные точки отказа. В настоящее время у нас очень надежные базы данных. Они быстры, и управлять ими дешево. Здесь возможна только одна проблема - это наличие администратора (администраторов). Это самостоятельные точки отказа, поскольку любая из них может скомпрометировать базу данных. В криптовалютном пространстве мы стремимся в основном к децентрализации, которая в то же время достаточно безопасна.

Основная концепция создания нового блока

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

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

В сети может случиться так, что за короткое время будет произведено больше блоков и, соответственно, больше блоков будет получено проверяющими узлами. Кроме того, проверяющие узлы могут получать блоки в другом порядке из-за задержки сети. Это вызвано тем, что узлы географически удалены друг от друга, поэтому распространение блоков занимает разное время. Например, блок, созданный в центре Европы, скорее всего, будет распространяться по всей Европе быстрее, чем он доберется до США или Китая, поскольку он должен пройти большее расстояние. Каждый узел должен справляться с ситуацией автономно, и это возможно реализовать, применяя правила протокола, которые выбирают правильную цепочку блоков. Протокол - это набор правил, которые диктуют, что должно произойти в каждой конкретной ожидаемой ситуации. Решение о выигрышной цепочке блоков основано на следующих блоках, которые прибудут после блока, вызвавшего форк (разветвление). Форк - это описание ситуации, при которой существует больше следующих возможных блоков, которые могут быть добавлены после данного блока. Таким образом, цепочек блоков может быть больше, и протокол должен быть способен решить, какая цепочка будет представлять единственную версию истины. Одна и та же версия клиентов (полный узел) имеет одни и те же правила консенсуса. Таким образом, большинство узлов склонны принимать одни и те же решения в долгосрочной перспективе. Как только узлы получат больше блоков, честное большинство выберет одну и ту же цепочку блоков. Таким образом, узлы будут поддерживать единую версию истины в долгосрочной перспективе, несмотря на то, что версия блокчейна может отличаться на разных узлах в краткосрочной перспективе.

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

Как блок создается в PoW биткойна

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

  1. Создание блоков в системе PoW - это открытая конкуренция между всеми узлами (пулами). Каждый узел может произвести блок после решения математической головоломки, которое требует потребления электричества. До тех пор, пока узел не получит новый подтвержденный блок от конкурента, он работает над решением головоломки на своем собственном блоке. Узлы выбирают транзакции из мемпула, чтобы вставить их в новый блок и начать работу (решение головоломки).
  2. Если узел решает головоломку, и ни один блок от конкурентов не был получен, то он распространяет блок на остальные узлы. Если это единственный блок, который был создан, и нет конкурирующего блока, который был бы создан в аналогичное время, то блок будет добавлен в конце блокчейна и останется там навсегда. Если есть конкурирующий блок, то следующие блоки будут решать судьбу блока, который в данный момент был произведен узлом. Добавим, что каждый узел прекращает работу над текущим блоком и начинает работу с шага 1, если от конкурента получен подтвержденный блок. Объяснение заключается в том, что узел должен вытягивать самую длинную цепочку. Таким образом, узел должен добавить новый блок позади полученного блока от конкурента. Блок должен быть добавлен в блокчейн всеми честными полными узлами.
  3. Предположим, что узел распространил блок и нет другого конкурирующего блока. Другие узлы сети теперь выполняют роль валидаторов. Они получают блок и проверяют его. Проверка блока состоит в основном из проверки транзакций и проверки доказательства того, что узел разрешил головоломку. Проверка может быть выполнена в течение секунды, и если блок действителен, то все честные узлы добавляют его в блокчейн.
  4. Узлы пула создают новый блок сразу же после получения действительного блока и начинают решать новую головоломку. Процесс повторяется с шага 1. Полные узлы просто ждут другой блок. Узел, разрешивший головоломку, начинает работать над создание нового блока так же, как над первым. Другие могут начать после получения блока, и это зависит от задержки сети и ее длительности.

Создание нового блока и процесс проверки занимает секунду. Решение математической головоломки занимает примерно 10 минут (а может быть и час) и потребляет много энергии. Для внесения ясности, в настоящее время, это такое же количество энергии, которое может быть потреблено средним европейским государством. Математическая головоломка имеет два характерных свойства. Первое - это порождение случайности. Невозможно определить, какой узел найдет решение головоломки первым. Каждый узел решает разную головоломку, но сложность одна и та же. Существует высокая вероятность того, что пул, который располагает большим хэш-рейтом, выиграет. Но это всего лишь вероятность, а не уверенность. Вообщем, чем выше хэш-рейт пула, тем выше вероятность его выигрыша. Второе свойство - безопасность. В системе PoW для производства блока потребляется большое количество электроэнергии. Таким образом, производство блока является финансово дорогостоящим. Сеть вознаграждает только один узел, который успешно создал новый блок, если тот остается в блокчейне навсегда. За каждый блок выплачивается вознаграждение. Если блок не добавляется в блокчейн по причине того, что другой блок был включен, то для оператора пула, создавшего неподтвержденный в дальнейшем блок, вознаграждение отсутствует. В случае форка в блокчейн может быть добавлен только один блок. Операторы хотели бы видеть свой блок победителем соревнования форков. Из-за высокой стоимости создания блоков операторы мотивированы производить только потенциально подтверждаемые блоки, и не прибегать к мошенничеству.

Как блок создается в PoS Cardano

Давайте начнем с теории. В Cardano время делится на определенные логические периоды, называемые эпохами. Каждая эпоха разбита на 21 600 слотов (временных интервалов), каждый из которых длится приблизительно 20 секунд, следовательно, каждая эпоха длится приблизительно 5 дней. Награды выплачиваются после окончания каждой эпохи. В начале каждой эпохи делается снимок блокчейна, чтобы узнать, как распределяются монеты. Снимок отражает состояние распределения делегированных монет в последнем блоке 2 эпохи назад. Здесь применяется механизм следования принципу Сатоши, в котором каждый поставленный Lovelace (0,000001 ADA) является чем-то вроде выигрышного билета, который может выиграть право на создание блока. Чем больше билетов пользователь имеет в игре, тем выше шансы на выигрыш. Моментальный снимок является одним из входных данных для генерации случайности, которая используется для определения узлов, которые получат право создавать блок в данном слоте.

Давайте теперь посмотрим, как осуществляется производство нового блока в консенсусу Cardano PoS Ouroboros.

  1. Если определенный узел хочет участвовать в консенсусе, он должен подключиться к сети и синхронизировать регистр. После этого узел регистрируется в Global Clock function (глобальной функции синхронизации), которая используется протоколом для синхронизации. Global Clock function предоставляет узлу информацию о том, в какой эпохе и слоте находится регистр учета.
  2. Перед началом любой эпохи все лидеры слотов рисуются сетью в случайном порядке таким образом, что никто не может предвидеть, в каких слотах какие узлы получат право производить блок.
  3. В начале каждого слота каждый узел должен спросить, является ли он лидером слота для текущего слота. Ответ дается с помощью Verifiable Random Function (VRF), которая основана на современной криптографии. Узел должен послать несколько входных данных, чтобы получить ответ. Входными данными являются фактический индекс слота, метка времени и ключ данного узла. Рандом Oracle берет случайные числа “V”, которые входят в первые 2 трети слотов из предыдущей эпохи, хэширует их, и соответственно создается случайный результат. Последняя треть блоков не учитывается, так как эти блоки не имеют необходимого количества проверок и все еще могут быть изменены. Основываясь на входных данных, присутствующих в запросе от узла, Random Oracle отправляет обратно узлу случайное число “V”.
  4. Если число “V” имеет меньшее значение, чем определенное пороговое значение, узел становится лидером слота и может произвести новый блок. Есть два важных вывода, вытекающих из VRF. Помимо числа “V“ генерируется доказательство ”P”, которое также будет помещено во вновь созданный блок. Предположим, что узел выиграл право на создание нового блока.
  5. С этого момента все просто для победившего узла. Лидер слота выбирает транзакции и вставляет их в новый блок. Лидер слота добавляет переменные ”V“ и ”P". После этого узел генерирует новый закрытый ключ для подписи следующего блока. Текущий ключ будет использоваться для подписи текущего блока. Для этого используется криптография Key Evolving Signature (KES). KES позволяет сохранять один и тот же открытый ключ неизменным, в то время как новый соответствующий закрытый ключ может быть сгенерирован снова и снова. Таким образом, новый блок может быть подписан закрытым ключом, который может быть удален сразу после этого. Благодаря этой мере невозможно подделать ключ, что фактически делает невозможным переписывание истории блокчейна, поскольку каждый блок подписан уникальным закрытым ключом. Только узел, подписавший блок, знает закрытый ключ, который использовался для подписи. Можно математически доказать, что даже если узел сделал ключ открытым или если ключ был украден, и другие узлы будут также раскрывать закрытые ключи, то, если в сети достаточно честных узлов, злоумышленники не смогут использовать знание ключей в своих интересах.
  6. Комбинируя число ”P“ с числом ”V", другие узлы-валидаторы могут легко проверить, действительно ли узел-производитель имел право создавать блок в данном слоте. Таким образом, узел злоумышленника не может произвольно создать блок, который был бы подтвержден другими, поскольку у него нет шанса сгенерировать правильную комбинацию “V” и “P”, что облегчает другим узлам разоблачение злоумышленника. Кроме того, легко проверить подпись блока.
  7. Если мы все еще находимся в той же эпохе, процесс продолжается с шага 3, и новый лидер слота получает право произвести новый блок. Если эпоха только что закончилась, то держателям токенов выплачиваются вознаграждения, и процесс продолжается с этапа 2.

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

Обратите внимание, что время протокола имеет важное значение для PoS. Узлы должны иметь представление о текущей эпохе и слоте. Таким образом, существует функция Global Clock function, которая обеспечивает контроль времени для всех узлов. Протокол Ouroboros способен присвоить узлу право на создание нового блока. Узел отправляет запрос и получает быстрый ответ. В сети PoS нет открытой конкуренции между узлами, которая имеет место в сети PoW. Так что присвоить узлу право на создание блока можно всего за секунду. Вот почему PoS Cardano может иметь значительно более короткое время на создание блока. Новый блок может быть создан в течение нескольких секунд, в то время как в сети Биткойн он занимает около 10 минут. Пользовательская практика будет намного эффективнее в сети Cardano, так как транзакция может быть подтверждена и урегулирована в течение очень короткого времени. Мы говорим о десятках секунд максимум.

Продолжение