Привет, Хабр!
На старте блокчейн-технологий стояла задача создания системы, которая могла бы функционировать надежно и без централизованного контроля. Здесь помогают консенсусные алгоритмы. Консенсус в блокчейне — это согласие всех участников сети относительно ее текущего состояния, т.е это механизм, который позволяет децентрализованным сетям достигать общего согласия о том, какие транзакции считаются действительными и добавляются в блокчейн.
Для достижения консенсуса в блокчейне существуют механизмы Proof of Work и Proof of Stake. Рассмотрим их в этой статье.
Proof of Work
Идея PoW была впервые предложена в 1993 году Мони Наором и Синтией Дворк как механизм для борьбы с DoS-атаками и спамом. Однако её наиболее известное применение было реализовано в 2009 году с запуском сети Bitcoin, где PoW использовался для достижения консенсуса в децентрализованной сети и для защиты от двойной траты.
Помимо Bitcoin, существуют и другие криптовалюты, использующие PoW, такие как Bitcoin Cash, которые пытаются улучшить масштабируемость и скорость транзакций по сравнению с Bitcoin, увеличивая размер блока. Однако, эти изменения также вызывают дебаты относительно централизации и безопасности сети.
Принцип работы
PoW требует от участников сети выполнения сложных вычислительных задач для доказательства того, что они затратили определенное количество вычислительных ресурсов (времени, энергии). В крипте к примеру это означает то, что кто первым решает задачу, получает право добавить новый блок в блокчейн и за это вознаграждается определенным количеством криптовалюты.
В основе PoW лежит процесс майнинга. Майнеры соревнуются в решении математических задач, и первый, кто находит решение, может добавить блок в цепочку и получить вознаграждение в виде криптовалюты. Технически, этот процесс включает в себя подбор значения, которое, при прохождении через хеш-функцию вместе с данными предыдущего блока и сети транзакций, даст хеш, соответствующий определенным критериям сложности. Таким образом, создание нового блока требует значительных вычислительных усилий, что делает атаку на сеть экономически нецелесообразной.
Сложность задачи в PoW регулируется автоматически, чтобы среднее время создания нового блока оставалось постоянным, например, 10 минут для Bitcoin. Когда общая вычислительная мощность сети увеличивается, сложность задачи соответственно повышается, и наоборот.
Условно реализуем на питоне
Представим, что мы создаем систему, в которой необходимо выполнить "работу", чтобы добавить каждый новый блок в цепочку. Эта "работа" сводится к поиску числа nonce
, которое, будучи добавленным к данным блока, дает хеш, начинающийся с определенного количества нулей.
Основные компоненты:
Данные блока: информация, которую мы хотим сохранить в блоке.
Nonce: число, которое мы будем изменять, чтобы изменить хеш блока.
Целевое условие: колво начальных нулей в хеше, которое мы хотим получить.
Псевдо-код:
import hashlib
def proof_of_work(header, difficulty_bits):
# вычисляем целевое значение на основе сложности
target = 2 ** (256-difficulty_bits)
for nonce in range(100000000000):
# создаем хеш из данных блока и nonce
input = f'{header}{nonce}'.encode()
hash_result = hashlib.sha256(input).hexdigest()
# проверяем, удовлетворяет ли хеш условию сложности
if int(hash_result, 16) < target:
print(f"Успех с nonce {nonce}")
print(f"Хеш: {hash_result}")
return (hash_result, nonce)
print("Не удалось найти новый блок")
return nonce
# юзаем
header = 'Пример блока'
difficulty_bits = 20 # сложность
proof_of_work(header, difficulty_bits)
difficulty_bits
определяет сложность задачи (чем выше значение, тем сложнее найти подходящий хеш). В данном случае, система ищет nonce
, который, будучи добавленным к header
, дает хеш, соответствующий заданной сложности.
Майнинговые фермы, использующие огромное количество оборудования, потребляют большое количество электроэнергии, что вызывает обеспокоенность по поводу экологического воздействия. В ответ на это в последнее время появляются альтернативные механизмы консенсуса, такие как Proof of Stake, предлагающие более энергоэффективные решения.
Proof of Stake
Первое упоминание о PoS можно отследить до 2011 года на форумах BitcoinTalk, где он был предложен как более альтернатива для проверки транзакций и обеспечения безопасности сети. Peercoin, запущенный в 2012 году Санни Кингом и Скоттом Наделом, стал первой криптовалютой, реализовавшей PoS, представив гибридную модель, которая также включала PoW для упрощения начального распределения монет.
Основная идея PoS заключается в выборе валидаторов на основе их доли в сети для проверки блоков транзакций. В отличие от PoW, где майнеры тратят огромные объемы вычислительной мощности (и, соответственно, энергии) для решения сложных задач, валидаторы PoS выбираются на основе количества криптовалюты, которую они держат и готовы "заложить" в качестве гарантии. Этот механизм значительно снижает потребление энергии.
Были определены и решены несколько проблем в дизайне систем PoS, включая начальное распределение монет, потенциал монополизации крупными держателями стейков, уязвимость к 51% атакам и проблему "Ничего на кону". Итерации в дизайне PoS стремились устранить эти проблемы различными способами, такими как использование возраста монет для распределения, реализация делегированного PoS для более демократичного выбора валидаторов и внедрение PoS на основе византийской устойчивости к ошибкам для повышения безопасности.
Одним из самых значительных событий в истории PoS стал переход Ethereum с PoW на PoS в сентябре 2022 года. Этот апгрейд, известный как "The Merge", представлял собой крупный шаг к более устойчивой структуре одной из крупнейших блокчейн-сетей, сократив энергопотребление Ethereum на предполагаемые 99%.
Shipped!
The Merge was executed on September 15, 2022. This completed Ethereum's transition to proof-of-stake consensus, officially deprecating proof-of-work and reducing energy consumption by ~99.95%.
Написано на сайте etherium
Принцип работы
В то время как PoW требует вычислительной работы для проверки и добавления новых блоков в цепочку, PoS оперирует на основе участия владельцев криптовалюты, используя их долю (стейк) в сети для принятия решений.
Вместо майнеров, как в PoW, в PoS блоки создаются валидаторами, которые выбираются на основе их доли в сети. Чем больше у вас криптовалюты, тем больше вероятность, что вы будете выбраны для создания нового блока.
Для участия в процессе создания блоков владельцы криптовалюты должны заложить (застейкать) свои монеты в сети в качестве гарантии их участия и надежности. Это называется стейкингом.
Процесс выбора валидаторов может зависеть от различных факторов, таких как размер и продолжительность стейка, случайность, использование специальных алгоритмов выбора и других параметров, цель которых обеспечить децентрализацию и безопасность сети.
Валидаторы, успешно создающие блоки, получают награды в виде транзакционных сборов или выпуска новых монет. Однако, если валидаторы неправильно действуют или не соблюдают правила сети, они могут быть подвергнуты штрафам, включая потерю стейка.
Вариации PoS
Chain-based PoS: в этой модификации сложность задачи зависит от доли участника. Меньшее количество вычислений для владельцев большой доли помогает избежать чрезмерных требований к оборудованию.
DPoS: системы, использующие DPoS, вводят двухэтапный процесс: сначала держатели токенов выбирают комитет валидаторов, а затем эти валидаторы поочерёдно предлагают новые блоки, которые затем одобряются валидаторами.
LPoS: в LPoS любой держатель токенов может объявить себя валидатором, но мелким держателям выгоднее делегировать свои голосовые права крупным игрокам в обмен на некоторые выгоды, например, периодические выплаты.
Пример реализации
Cardano - это блокчейн-платформа с открытым исходным кодом, которая разработана с целью предоставить более устойчивый и устойчивый экосистеме криптовалют. Основанная на исследованиях и академической науке, Cardano внедряет принципы PoS в свою сеть для обеспечения консенсуса.
Cardano использует протокол консенсуса Ouroboros, который основан на Proof of Stake.
Владельцы ADA имеют возможность участвовать в процессе стейкинга, залагая свои монеты в сеть в качестве гарантии своего участия. Они также могут делегировать свои монеты другим участникам сети, чтобы те могли выступать в роли валидаторов.
Также в Cardano используется протокол Shelley, который внедряет полную децентрализацию в сети, позволяя участникам создавать свои собственные стейк пулы и участвовать в процессе стейкинга более активно.
Cardano имеет трехслойную архитектуру, состоящую из слоя расчета, слоя соглашений и слоя вычислений.
Сравним
Характеристика | PoW | PoS |
---|---|---|
Принцип консенсуса | Требует выполнения сложных вычислений для создания нового блока | Основан на доле владения криптовалютой; владельцы монет используют свою долю для создания новых блоков |
Энергопотребление | Высокое энергопотребление из-за сложных вычислений | Энергоэффективен, поскольку не требует вычислительной работы |
Децентрализация | Майнинг может стать централизованным из-за концентрации мощности | Может обеспечить более широкое распределение власти и контроля |
Безопасность | Высокий уровень безопасности благодаря доказательству работы | При правильной реализации также может обеспечить высокий уровень безопасности |
Масштабируемость | Масштабируемость ограничена из-за сложностей майнинга | Может обладать большей масштабируемостью, поскольку не требует сложных вычислений |
Начальное распределение | Новые монеты создаются через майнинг, что может привести к неравномерному распределению | Распределение монет может быть более равномерным из-за использования доли владения |
Примеры блокчейнов | Bitcoin, Ethereum | Cardano, Tezos, |
В итоге, выбор между PoW и PoS зависит от конкретны блокчейн-проекта.
В завершение хочу порекомендовать бесплатный вебинар, в рамках которого вы узнаете, как эффективно разделять приложения на микросервисы, уделяя особое внимание функциональной декомпозиции.