Разбираемся в PoW и PoS методах

Proof-of-Work и Proof-of-Stake — наиболее известные методы достижения консенсуса сети. В статье они будут рассмотрены в контексте применения к криптовалютам. Для полного понимания желательно иметь представление о том, что такое блок транзакций, и каким образом он собирается. Об этом можно почитать в небольшом посте: принципы работы сети биткоин.


Метод Proof-of-Work был придуман в 1993 как метод защиты распределенных (децентрализованных) систем от Dos-атак и спама. Суть его заключается в следующем: необходимо создать такую работу (например вычислительную), которая будет сложна и потребует значительного времени на ее решение. Также должен быть метод, позволяющий легко и быстро проверить результат— в криптографии это реализуется при помощи односторонних функций.

В 2008 году некий Сатоси Накамото придумал незамысловатую схему, как при помощи POW-метода реализовать систему равноправных децентрализованных серверов меток времени(биткоин).

Схема была проста: узлы сети, так называемые майнеры, решая определенную математическую задачу, вычисляют последовательность символов — хеш и таким образом «голосуют» за свою версию истории транзакций, собранных в блок-транзакций. Исходя из условия задачи, решение легко проверить, и это может сделать каждый узел. Тот, кто находил решение для блока, отправлял результат в сеть, а другие узлы, получая хэш, проверяли его и записывали себе. Блок, который приняло большинство узлов, добавлялся в общую цепочку блоков, и хеш следующего блока вычислялся на основе хэша предыдущего и еще некоторых входных данных. Таким образом, “опоздавшие” блоки, которые содержали хеш, вычисленный без учета хеша последнего “принятого” блока, отбрасывались.

Важно отметить: для того, чтобы сеть была как можно более устойчивой к атакам и спаму, нужно чтобы суммарная сложность решения задач (хеш-рейт) была высокой, а узлов как можно больше. Это защищало сеть от так называемой “атаки 51”, когда злоумышленник завладевший 51% вычислительной сети, имел больше шансов находить верные решения(блоки) и, таким образом, мог заставить сеть принять свои “поддельные” транзакции, иными словами, безнаказанно совершить “двойную трату”. Поэтому для мотивации роста общего хеш-рейтинга майнерам выдается награда в виде валюты сети — биткоинами.

Однако это имело не только пололожительные последствия. С одной стороны это позволило биткоину вырасти в большую сеть, пережить несколько серьезных атак и остаться одной из самых надежных сетей в мире. С другой стороны — гонка за прибыльностью майнинга, превратила данную сеть в монстра, потребляющего электроэнергию в неимоверных количествах. Уже к 2012 году суммарная вычислительная мощность сети биткоин превосходила любой суперкомпьютер в мире и, как полагают многие критики, расходовалась чтобы делать “пустую работу”, даже аргументы по поводу защиты от “атаки 51” и энергоаппетитов банковских терминалов не спасают ситуацию. Благо еще в 2011 году на сайте bitcointalk.org был предложен альтернативный метод — Proof-of-Stake.


Метод Proof-of-Stake в различных криптовалютах реализован по-разному, но имеет общие, основополагающие черты. По сути процесс PoS-майнинга схож с PoW за исключением того, что подбор решения односторонней функции (т.е. генерация хеша) происходит на очень ограниченном пространстве собственных выходов и не зависит от скорости CPU. На шансы подобрать нужный хеш влияют лишь ваше общее число монет и текущая сложность сети.

В итоге это решает следующие проблемы:

  1. Экономим электроэнергию, так как узел сети теперь можно запустить на обычном сервере, главное чтобы монет, которые определяют долю узла, было много.
  2. Отсутствие бесконечной «гонки мощностей»: теперь общий хэшрейт сети ограничен общим числом монет в кошельках участников.
  3. “Атака 51” становится дороже и теряет экономический смысл, ведь нарушив устойчивость системы, в абсолютных числах владелец более чем половины монет, очевидно потеряет больше всего.

Однако не все так безоблачно. Проблема в том, что, так как теперь вычисление хеша не требует значительных ресурсов, узел сети может майнить несколько “возможных” веток сети одновременно, при этом получая награду! Более того, если злоумышленник похитит или выкупит приватные ключи кошельков (например, если предложат купить кошелек, с которого вы (владелец)предварительно выведете все монеты, большинство согласится).

Если злоумышленник начнет майнить альтернативную цепочку созданную с блока, который был вычислен, когда на этих ключах еще лежали монеты, то в его личной цепи, владея большим количеством ключей, он сможет обладать более чем 50% всей денежной массы! В итоге: его личная цепочка будет создавать “ неправильные” блоки транзакций пока не обгонит по количеству блоков “настоящую” цепь, и тогда вся сеть переключится на нее. Но разница будет в том, что в новой принятой цепочке половина монет будет по-прежнему принадлежать атакующему.

В PoS вам гораздо легче осуществить “двойную трату”. Достаточно всегда майнить две версии следующего блока: один с транзакцией, переводящей ваши деньги продавцу, а другой с транзакцией, переводящей их вам. Если случится так, что вы находите оба блока, то первый вы отправляете продавцу (и получаете свой товар), а второй — всем остальным. С большей вероятностью продолжена будет вторая версия цепочки — и деньги вернутся к вам.

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


В сухом остатке стоит упомянуть, что методы защиты сети постоянно совершенствуются, и сегодня толчок в развитии получили следующие методы:

  • Proof of Activity — гибридный PoW и PoS метод;
  • Delegated Proof of Stake (делегированное подтверждение доли) — общий термин, описывающий эволюцию PoS методов.

О них можно прочесть в других постах.


p.s. все свежее на нашем телеграм канале: https://t.me/foxi_bit