Proof of Work и Proof of Stake для чайников

0ab044fc2f29fc05a2a6a3576c731c6e.png

Привет, Хабр!

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

Для достижения консенсуса в блокчейне существуют механизмы Proof of Stake и 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

Картинки с сайта ethereum.org

Принцип работы

В то время как 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 зависит от конкретны блокчейн-проекта.

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

© Habrahabr.ru