Привет, Хабр!
На старте блокчейн-технологий стояла задача создания системы, которая могла бы функционировать надежно и без централизованного контроля. Здесь помогают консенсусные алгоритмы. Консенсус в блокчейне — это согласие всех участников сети относительно ее текущего состояния, т.е это механизм, который позволяет децентрализованным сетям достигать общего согласия о том, какие транзакции считаются действительными и добавляются в блокчейн.
Для достижения консенсуса в блокчейне существуют механизмы 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 зависит от конкретны блокчейн-проекта.
В завершение хочу порекомендовать бесплатный вебинар, в рамках которого вы узнаете, как эффективно разделять приложения на микросервисы, уделяя особое внимание функциональной декомпозиции.
Комментарии (10)
iddi
16.03.2024 07:11+4В итоге, выбор между PoW и PoS зависит от конкретны блокчейн-проекта
а что такое "конкретна" блокчейн проекта? (а то нагородили терминов, вот и думаешь - опечатка-не опечатка)
mefepe
16.03.2024 07:11Заметьте, все виды блокчейна рано или поздно приходят к идее "у кого больше монет, тот и прав". О, что это, неужели поборники децентрализации и независимости пришли в итоге к тому, что действует в реальном мире?))
vassabi
16.03.2024 07:11насколько я помню - блокчейн вообще-то был сделан не для "справедливости" и равномерного распределения монет всем людям.
Он был сделан для децентрализации обмена и для того, чтобы нельзя было просто переписать "монеты" (понятно, что можно угрожать "жизнь или кошелек". Но с трупа крипту просто так не снять, как портмоне), для прогнозируемой эмисии монет и для использования криптогиками ...
PS: И да, если у кого-то единолично "51%" мощностей/монет и тд - то тоже технологии будут пасовать, увы, и уже там никакие красивые лозунги про "ну где же поборники децентрализации и независимости? почему они нас не спасут?" не помогут - все дело в бездушной математике.0pauc0
16.03.2024 07:11Я лично не знаю для чего блокчейн был задуман (для майнинга достаточно одного удостоверяющего центра), но то, что он может быть основой для постдолларового валютного мира (или нескольких валютных систем), это уже видно.
PoS это уже ограничение эмиссии и взятие его под контроль эмиссионными центрами.
0pauc0
Следующим будет PoID - Proof of Issue Distribution.
Это как сейчас. ФРС эмитирует $ и распределяет выпуски туда, куда надо - контролирующим эту самую ФРС финансистам и банкирам. И все. Дальше ваши крипты уже не совсем ваши.