Что такое Proof of Work (PoW)?
Proof of Work (PoW) – это метод, используемый для предотвращения двойного расходования в цифровых платежных системах. Биткоин и множество других криптовалют применяют PoW для защиты своих блокчейн-сетей и данных. Этот метод также называют механизмом или алгоритмом консенсуса, так как он позволяет различным сторонам достигать соглашения без необходимости взаимного доверия.
PoW стал первым алгоритмом консенсуса и до сих пор остается одним из самых важных наряду с Proof of Stake (PoS). Впервые он был предложен Сатоши Накамото в технической документации Биткоина в 2008 году, хотя сама концепция существовала уже давно.

Примером раннего использования PoW является система HashCash от Адама Бэка, которая существовала до появления криптовалют. Для отправки электронной почты требовалось выполнить небольшие вычисления, что существенно уменьшало объем спама. Хотя такие вычисления были практически незаметны для обычного отправителя, они значительно затрудняли массовую рассылку.
Что такое двойное расходование?
Двойное расходование – это ситуация, когда одни и те же средства расходуются более одного раза. Этот термин чаще всего используется в отношении цифровой валюты, так как в реальной жизни сложно представить, чтобы одни и те же деньги тратились дважды.
Например, при покупке кофе вы передаете деньги кассиру, и эти деньги не могут быть использованы повторно для другой покупки. Однако в системах цифровых денег такая возможность существует.
Представьте, что вы можете копировать файлы на компьютере. Один и тот же файл можно отправить десяткам людей. Поскольку цифровые деньги – это тоже данные, необходимо предотвратить возможность их двойного расходования, то есть копирования и отправки одних и тех же единиц в разных местах. Если цифровая платежная система не способна предотвратить двойные траты, она быстро выйдет из строя.
Зачем нужен Proof of Work?
Если вы уже знакомы с блокчейном, то знаете, что пользователи криптовалюты транслируют транзакции в сеть. Однако транзакции становятся действительными только после проверки и добавления в блокчейн.
Блокчейн Биткоина работает как публичная база транзакций (реестр), доступная для любого пользователя. Например, представьте, что у вас и трех друзей есть блокнот, в который записываются транзакции с биткоинами. Если кто-то хочет перевести средства, он записывает это в блокнот:
-
Алиса платит Бобу 5 BTC.
-
Боб платит Кэрол 2 BTC и так далее.
Каждый перевод должен ссылаться на прошлую транзакцию, откуда поступили средства. То есть, когда Боб переводит Кэрол 2 BTC, запись будет выглядеть так:
-
Боб переводит Кэрол 2 BTC, полученные из предыдущей транзакции с Алисой.
Так можно отслеживать все переводы BTC. Если Боб попытается повторно использовать те же 2 BTC, которые он отправил Кэрол, это сразу станет очевидным. Группа не позволит ему записать такую транзакцию в блокнот, так как он уже потратил эти 2 BTC.
Такая система хорошо работает в небольшой группе людей, где все участники хорошо знают друг друга. Но если группа состоит из 10 000 участников, возникает проблема доверия к незнакомцу, управляющему финансовым регистром.
Proof of Work решает эту проблему, гарантируя, что пользователи не смогут потратить средства, которые им не принадлежат. Сочетая теорию игр и криптографию, PoW позволяет любому пользователю обновлять блокчейн в соответствии с правилами системы.
Как работает PoW?
Представьте, что блокнот из примера выше – это блокчейн. Транзакции объединяются в блоки, а пользователи, создающие блок, включают транзакции в блок-кандидат. Транзакции становятся действительными только после подтверждения блока-кандидата и его добавления в блокчейн.
Процесс подтверждения транзакций и добавления новых блоков называется майнингом. Он требует значительных затрат, но может приносить прибыль в виде вознаграждения за блок, состоящего из комиссий за транзакции и новых биткоинов, созданных протоколом.
Proof of Work требует, чтобы майнер вложил ресурсы (электроэнергию и вычислительную мощность) в хеширование данных блока-кандидата до тех пор, пока не будет найдено решение.
Хеширование блока подразумевает пропуск его данных через хеш-функцию для генерации уникального хеша. Этот хеш служит «отпечатком пальца» блока и идентификатором его данных.
Майнер должен собрать незавершенные транзакции, объединить их в блок-кандидат и пропустить данные через хеш-функцию, чтобы получить правильный хеш. Найдя правильный хеш, майнер передает его в сеть, добавляет блок в блокчейн и получает вознаграждение.
Когда майнер передает блок-кандидат и хеш в сеть, другие участники сети проверяют результат хеширования.
Поиск правильного хеша требует множества попыток, но проверка готового хеша проста – достаточно пропустить те же данные через хеш-функцию и сравнить результат.
В Proof of Work необходимо найти данные, хеш которых соответствует определенным правилам протокола. Это возможно только путем проб и ошибок, поскольку даже малейшее изменение данных приводит к совершенно другому хешу.
Для создания блока пользователь хеширует информацию обо всех транзакциях, которые нужно добавить в блок, вместе с переменной частью данных, называемой nonce. Меняя nonce, майнер генерирует новые хеши, пока не найдет подходящий.
Майнинг – это процесс сбора данных блокчейна и хеширования их вместе с nonce до нахождения правильного хеша. Найдя правильный хеш, майнер транслирует новый блок в сеть, а остальные участники обновляют свои блокчейны, чтобы включить новый блок.
Условия для нахождения правильного хеша у крупных криптовалют очень сложны, и чем выше хешрейт сети, тем сложнее найти правильный хеш. Это предотвращает слишком быстрое создание блоков.
Постоянные попытки угадать хеш требуют больших вычислительных ресурсов и электричества, но удачливые майнеры получают вознаграждение за свои усилия.
Заключение
Proof of Work – это надежное решение для предотвращения двойного расходования. Биткоин доказал, что централизованные организации не нужны для этого. Сочетая криптографию, хеш-функции и теорию игр, участники децентрализованных систем могут сами следить за корректностью финансовой базы данных.