НОВОЕ: Helius приобретает Light Protocol
что такое Proof of History
Блог/Основы

Proof of History, Proof of Stake и Proof of Work — объяснение

Developer Experience Engineer0xIchigo в X0xIchigo в LinkedIn0xIchigo на GitHub
Чтение: 18 мин

О чем эта статья?

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

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

Почему стоит изучить алгоритмы консенсуса

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

  • Механизм достижения консенсуса в блокчейне влияет на архитектурные решения при разработке децентрализованного приложения (dApp). Вам придется ответить на такие вопросы: сколько стоит развертывание? Сколько транзакций должен отправлять пользователь для эффективной работы с этим dApp? Сколько стоит отправка транзакции? Самый важный вопрос: сколько времени требуется для финализации? Иными словами, сколько времени нужно, чтобы транзакция была подтверждена и добавлена в блокчейн?
  • Знание характеристик пропускной способности и задержки алгоритма консенсуса поможет выбрать подходящий блокчейн для развертывания dApp. Вопросы об архитектуре dApp позволят определить области, в которых можно оптимизировать производительность
  • Знание проблем безопасности каждого алгоритма поможет создавать более защищенные приложения. Какие векторы атак существуют для вашего блокчейна? Как они влияют на проектирование смарт-контрактов?
  • Понимание внутреннего устройства алгоритма консенсуса вашего блокчейна позволяет разобраться в особенностях его механизмов голосования и активно участвовать в управлении
  • Знание экономических стимулов каждого алгоритма консенсуса помогает поощрять участие в сети. Как участвовать в работе сети и получать вознаграждения? Какого поведения следует избегать, чтобы не получить штраф?
  • Знание основ алгоритмов консенсуса поможет лучше понимать новые и обновленные алгоритмы. Как разобраться в Delegated Proof of Stake или Leased Proof of Stake, если вы не понимаете Proof of Stake?

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

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

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

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

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

Что такое Proof of Work?

Proof of Work (PoW) — это форма криптографического доказательства, при которой одна сторона (доказывающая) подтверждает другой стороне (проверяющей), что затратила определенный объем вычислительных ресурсов. Проверяющая сторона может легко подтвердить эти затраты. Механизм изобрели Moni Naor и Cynthia Dwork в 1993 году для защиты сети от DoS-атак и спама, а позднее он был формализован в статье Markus Jakobsson и Ari Juels 1999 года.

Bitcoin популяризировал Proof of Work как основу консенсуса в общедоступной децентрализованной сети. В технической документации Bitcoin Satoshi Nakamoto объясняет, как Proof of Work позволяет создать полностью одноранговую систему электронных денег без посредников. Среди других популярных блокчейнов с алгоритмом консенсуса на основе PoW — Litecoin, Kadena, Monero и Ethereum Classic. Как же он работает?

Как это работает

В блокчейнах на основе Proof of Work участники сети должны решить сложную математическую задачу, затратив значительный объем вычислительных ресурсов. Цель — угадать 64-значное шестнадцатеричное число, называемое хешем. Поиск хеша может показаться простой задачей, однако он представляет собой результат хеширования по алгоритму SHA256 всей информации о транзакциях в блоке вместе со случайным nonce («числом, используемым один раз»). Первый участник, решивший задачу, получает право добавить в блокчейн следующий блок транзакций и получает заранее определенное количество криптовалюты. Процесс проверки транзакций и их добавления в блокчейн называется майнингом, а участвующие в нем участники сети — майнерами.

Преимущества и недостатки

Преимущество блокчейнов на основе Proof of Work заключается в том, что в майнинге может участвовать любой желающий, что способствует децентрализации распределенной сети. Для атаки на сеть PoW необходимы огромные вычислительные мощности. Поэтому провести атаку 51% одной организации чрезвычайно сложно, хотя теоретически возможно. При атаке 51% злоумышленник контролирует большую часть хеширующей мощности сети и может манипулировать историей транзакций. Proof of Work — относительно простой для понимания алгоритм консенсуса, реализованный и проверенный в масштабе Bitcoin.

Несмотря на эти преимущества, у Proof of Work есть ряд недостатков. Высокая стоимость оборудования для майнинга и электроэнергии может приводить и уже приводила к централизации майнинга в регионах с низкими ценами на энергию. Из-за высокого порога входа в прибыльный майнинг вознаграждения распределяются неравномерно в пользу тех, кто может позволить себе мощные майнинговые фермы. Это привело к появлению огромных ферм для майнинга Bitcoin. Высокое энергопотребление также вызывает множество экологических опасений. Это одна из главных причин, по которой Ethereum перешел на Proof of Stake в рамках обновления The Merge. Что же такое Proof of Stake?

Что такое Proof of Stake?

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

Как это работает

В Proof of Stake майнеров заменяют валидаторы, которые предлагают блоки и голосуют за них. Валидаторы должны заблокировать определенное количество токенов в качестве своего стейка в сети. Сеть выбирает валидатора для проверки следующего блока транзакций с учетом ряда факторов, например размера стейка или срока его удержания. Затем другие валидаторы проверяют и подтверждают предложенный блок. Если блок признается действительным, его добавляют в блокчейн. За проверку валидаторы получают комиссии за транзакции, а иногда и новые выпущенные токены. Если блок признается недействительным, его не добавляют в блокчейн, а валидатора штрафуют. К таким валидаторам применяется слешинг: они теряют часть своего стейка. Эти штрафы призваны удерживать злоумышленников от предложения мошеннических блоков или внесения расхождений в реестр.

Преимущества и недостатки

Proof of Stake напрямую решает проблему высокого энергопотребления. Переход Ethereum с Proof of Work на Proof of Stake снизил энергопотребление сети на 99,84%. Алгоритмы Proof of Stake работают быстрее и лучше масштабируются, поскольку рассчитаны на более высокую пропускную способность. Они обеспечивают более быструю финализацию: транзакции быстрее подтверждаются и добавляются в блокчейн. Валидаторы также финансово заинтересованы в поддержании высококлассной инфраструктуры для проверки, что сокращает ее длительность. Алгоритмы Proof of Stake лучше подходят для параллельной обработки транзакций и шардинга. При шардинге сеть делится на меньшие части, или «шарды», которые обрабатывают транзакции независимо и параллельно.

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

Варианты Proof of Stake

Известные блокчейны, использующие Proof of Stake:

Ethereum

Ethereum использует алгоритм LMD-GHOST с Casper-FFG, который называется Gasper. LMD-GHOST накапливает голоса и помогает нодам легко выбрать правильный форк при его появлении. Casper-FFG (Casper the Friendly Finality Gadget) переводит определенные блоки в статус «финализированных», чтобы новые участники сети всегда синхронизировались с канонической цепочкой.

Cardano

Cardano использует вариант Proof of Stake под названием Ourobros — первый Proof of Stake-протокол с доказанной безопасностью. Он основан на рецензируемых исследованиях и спроектирован с учетом масштабируемости и безопасности. Подробнее можно узнать здесь

Near

Near использует Thresholded Proof of Stake — детерминированный механизм, позволяющий большому числу участников поддерживать работу сети, принимая решения через определенные интервалы времени. Подробнее можно узнать здесь

Algorand

Algorand использует Pure Proof of Stake — более эгалитарный подход к Proof of Stake, основанный на византийском консенсусе. Подробнее можно узнать здесь

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

Что такое Delegated Proof of Stake?

Delegated Proof of Stake — это развитие Proof of Stake, призванное повысить эффективность и демократичность процессов проверки в блокчейне. Этот механизм разработал Daniel Larimer в 2014 году. С тех пор его внедрили в нескольких известных блокчейнах: BitShares, EOS, TRON и SUI.

Как это работает

В Delegated Proof of Stake держатели токенов голосуют за группу делегатов, которые от их имени проверяют и создают новые блоки. Делегатов избирают держатели токенов, а вес голоса зависит от количества токенов. Пользователи голосуют, объединяя токены в пуле стейкинга и связывая их с определенным делегатом. Делегаты заинтересованы действовать честно, поскольку могут лишиться должности из-за злоумышленных действий или недостаточного времени бесперебойной работы. Проверив блок, делегат получает в качестве вознаграждения соответствующие комиссии за транзакции. Затем он распределяет вознаграждение между поддержавшими его пользователями пропорционально стейку каждого из них. Важно отметить, что делегаты проверяют блоки детерминированно по общедоступному расписанию. Число делегатов для каждого блока ограничено, поэтому их состав периодически перемешивается.

Преимущества и недостатки

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

Однако Delegated Proof of Stake не идеален. Для каждого нового блока требуется лишь ограниченное число делегатов. Это вызывает опасения, что небольшая группа получит непропорционально большое влияние на проверку транзакций и решения по управлению. Ограничение создает возможность сговора делегатов для совершения злоумышленных действий и значительно снижает порог атаки 51%. Держатели токенов потенциально могут подкупить делегатов, чтобы те действовали злоумышленно от их имени. Что еще важнее, пользователи не обязаны участвовать в выборах делегатов, поэтому апатия избирателей может усугубить упомянутые риски централизации.

Что такое Proof of History?

Proof of History — не алгоритм консенсуса.

Точнее, это компонент, который помогает достигать консенсуса. Путаница, вероятно, связана с терминологией: выражение «Proof of X» у людей, знакомых с Proof of Work и Proof of Stake, может ассоциироваться с алгоритмом консенсуса. Proof of History лежит в основе архитектуры Solana и глубоко интегрирован в упорядочивание транзакций и выполнение программ. Из-за его важной роли в сети легко ошибочно принять его за алгоритм консенсуса Solana.

Почему мы тогда о нем говорим, если это не алгоритм консенсуса? Proof of History решает фундаментальную проблему распределенных систем — согласование времени, то есть последовательности событий. Solana использует Proof of History как своего рода алгоритм «предварительного консенсуса», который упрощает достижение консенсуса и обеспечивает эффективную обработку транзакций. Благодаря этому валидаторы могут обрабатывать транзакции параллельно, повышая пропускную способность и сокращая задержку. Таким образом, Proof of History — это компонент, который помогает достигать консенсуса. Лучше воспринимать Proof of History как децентрализованные часы сети: он позволяет доказать время и порядок событий без участия третьей стороны.

Недостатки традиционных подходов

Традиционно блокчейны синхронизируются по блокам, представляющим собой крупные наборы транзакций. Это означает, что транзакцию нельзя обработать до истечения определенного времени. Оно называется временем блока. В Proof of Work время блока должно быть большим — Bitcoin создает блок примерно каждые 10 минут, — чтобы снизить вероятность одновременного создания нового блока несколькими валидаторами. В Proof of Stake такого ограничения нет, но валидаторам нужны временные метки, чтобы определять порядок поступающих блоков. Распространенное обходное решение — добавлять в каждый блок временную метку системных часов. Однако такая метка действительна только в том случае, если она больше медианного значения меток предыдущих 11 блоков и меньше «скорректированного по сети времени» плюс два часа. Скорректированное по сети время — это медиана временных меток, возвращенных всеми подключенными к вам нодами. Из-за расхождения часов и сетевой задержки это не лучшее решение. Что же делать?

Proof of History

Solana применяет к этой проблеме радикальный подход под названием Proof of History. Проще говоря, Proof of History позволяет доказать время во враждебной сети. Proof of History выполняет роль криптографической функции временных меток и позволяет нодам согласовывать порядок событий без непосредственного взаимодействия. Для этого используется последовательная устойчивая к нахождению прообраза хеш-функция, которую сложно обратить. Она создает цепочку хешей, где каждый хеш зависит от предыдущего. Ноды-лидеры присваивают блокам временные метки с помощью этих криптографических доказательств, подтверждая, что с момента предыдущего доказательства прошло определенное время. Поскольку все хеши связаны в цепочку, формируется историческая запись, доказывающая существование данных в определенный момент времени.

Этот уникальный подход основан на проверяемых функциях задержки (VDF) — функциях, вычисление которых занимает очень много времени, но результат можно быстро проверить. Проверяемые функции задержки используются для создания хешей, которые зависят не только от предыдущего хеша, но и от прошедшего времени. Это позволяет сформировать проверяемую временную шкалу событий. Проверяемые функции задержки гарантируют ее целостность: изменение одного хеша потребовало бы пересчитать все предыдущие хеши. Это обеспечивает дополнительный уровень безопасности и целостности Solana, поскольку существует только одна проверяемая временная шкала событий.

Простая аналогия

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

Тогда появляется чрезвычайно скрупулезный писец. Он садится посреди городской площади и записывает каждое событие в журнал с помощью особых чернил и пера. У этих чернил есть необычное свойство: их цвет зависит от последней записи в журнале. Любой житель может обратиться к журналу писца и подтвердить порядок и время событий, не опрашивая всех остальных. Журнал становится для города бесспорным источником истины и устраняет необходимость в глашатае: жители могут делать важные объявления без него. Меняющиеся чернила обеспечивают постоянный и неизменяемый источник истины, подтверждающий все предыдущие записи. Замените город сетью, журнал — реестром, а меняющиеся чернила — криптографической хеш-функцией, и вы получите один из самых надежных методов синхронизации. В этом и заключается сила Proof of History.

Преимущества и недостатки

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

При этом Proof of History не идеален. Эта модель значительно усложняет сетевую архитектуру Solana, затрудняет ее понимание и потенциально повышает риск ошибок и уязвимостей. Из-за ресурсоемких вычислений, необходимых проверяемым функциям задержки, нодам Solana требуется более мощное оборудование. В краткосрочной перспективе это повышает стоимость участия в сети. Благодаря закону Мура этот аппаратный барьер со временем должен снизиться, поскольку мощное оборудование, которое раньше стоило дорого, становится доступнее. Закон Мура — это наблюдение, согласно которому число транзисторов на микрочипе удваивается примерно каждые два года, что приводит к росту вычислительной мощности.

Заключение

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

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

Если вы дочитали до этого места, анон, спасибо!

Дополнительные материалы

Подпишитесь на Helius

Следите за новостями разработки на Solana и получайте уведомления о наших публикациях

Увеличенное изображение