Proof of Work (PoW): как майнеры защищают блокчейн

Proof of Work (PoW): как майнеры защищают блокчейн

Proof of work (PoW, «доказательство работы») — это механизм консенсуса, то есть правило, позволяющее множеству компьютеров договориться об одной общей записи без участия центральной стороны. Участники демонстрируют затратные вычислительные усилия, которые любой может быстро проверить. В Bitcoin такое усилие заключается в поиске хеша блока, значение которого равно установленной цели или ниже нее.

Proof of Work зародился как защита от спама

Идея proof of work была предложена для борьбы со спамом задолго до появления Bitcoin. В статье под названием «Pricing via Processing or Combatting Junk Mail», представленной в 1992 году и опубликованной в 1993-м, Синтия Дворк и Мони Наор предложили, что пользователь должен выполнять умеренно сложные вычисления, чтобы получить доступ к общему ресурсу. Эта «плата» была призвана отбить желание злоупотреблять ресурсом, и авторы в первую очередь имели в виду именно спам-рассылки.

В общем смысле proof of work — это данные, которые дорого и долго производить, но легко проверить другим. Hashcash, система, созданная Адамом Беком, прикрепляла к каждому письму хеш-доказательство такого рода, чтобы сдерживать спам и атаки типа «отказ в обслуживании». Отказ в обслуживании означает, что сервис заваливают запросами так, что другие не могут им пользоваться.

Белая книга Bitcoin, датированная 31 октября 2008 года и опубликованная под именем Сатоси Накамото, описывает конструкцию proof of work, похожую на Hashcash. Bitcoin использует её, чтобы сеть компьютеров могла договориться об одной цепочке блоков без центральной стороны.

Как работает proof of work в Bitcoin?

Майнинг биткоина — это процесс создания действительных блоков, а для создания действительного блока требуется предъявить proof of work. Майнер — это участник, который пытается найти действительный блок. Майнер начинает с того, что собирает ожидающие транзакции в блок-кандидат — пакет транзакций, предлагаемых для добавления в цепочку. Затем майнер заполняет заголовок блока — 80-байтовую сводку этого блока.

Bitcoin хеширует заголовок алгоритмом SHA-256 дважды — этот метод называется двойным SHA-256. SHA-256 — это криптографическая хеш-функция. Хеш-функция превращает данные любого размера в «отпечаток» фиксированной длины, называемый хешем. Proof of work задаёт одно условие: если прочитать хеш заголовка как число, оно должно быть равно цели или ниже неё.

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

Чтобы получить другой хеш, майнер меняет nonce — 32-битное число, хранящееся в заголовке. Затем майнер хеширует заголовок, сравнивает результат с целью и повторяет попытку. Этот поиск часто называют «хеш-головоломкой», но на самом деле никакой смекалкой её не решить: в среднем хеш, равный цели или ниже неё, можно найти лишь за счёт соответствующего объёма «грубой силы» — перебора значения за значением.

В таблице ниже приведён пример такого же поиска, но в уменьшенном масштабе. Правило придумано для примера, это не настоящее правило Bitcoin, и в нём SHA-256 применяется один раз, а не дважды. Дайджест SHA-256 от текста «hello» с добавленным nonce должен начинаться с заданного числа нулей. Дайджесты записаны в шестнадцатеричной системе — системе по основанию 16, использующей цифры 0-9 и буквы a-f. Дайджест, начинающийся с нулей, — это маленькое число, поэтому каждое такое правило работает как цель.

Правило

Вход (текст плюс nonce)

Дайджест SHA-256

Результат

Дайджест начинается с 000

hello0

5a936ee19a0cf3c70d8cb0006111b7a52f45ec01703e0af8cdc8c6d81ac5850c

Неудача (начинается с 5)

Дайджест начинается с 000

hello1

91e9240f415223982edc345532630710e94a7f52cd5f48f5ee1afc555078f0ab

Неудача (начинается с 9)

Дайджест начинается с 000

hello2

87298cc2f31fba73181ea2a9e6ef10dce21ed95e98bdac9c4e1504ea16f486e4

Неудача (начинается с 8)

Дайджест начинается с 000

hello10284

0006bc9ad4253c42e32b546dc17e5ea3fedaecdabef371b09906cea9387e8695

Успех на попытке 10 285

Дайджест начинается с 0000

hello60067

0000e49eab06aa7a6b3aef7708991b91a7e01451fd67f520b832b89b18f4e7de

Успех на попытке 60 068

В этом игрушечном примере каждый дополнительный ноль увеличивает среднее число попыток в 16 раз. Правило с тремя нулями требует в среднем около 4096 попыток, а с четырьмя нулями — около 65 536, но конкретный поиск может занять как больше, так и меньше, что видно по двум успешным строкам: 10 285 больше, чем 4096, а 60 068 меньше, чем 65 536. Проверка любого из этих результатов требует всего одного вычисления SHA-256.

Реальный поиск в Bitcoin гораздо масштабнее. Ожидаемое число хешей на блок примерно равно сетевой сложности, умноженной на 2 в степени 32. По состоянию на октябрь 2026 года это в среднем более 500 секстиллионов хешей на блок, и это число меняется при каждой корректировке сетевой сложности. Секстиллион — это единица с 21 нулём.

Проверить работу блока гораздо дешевле, чем её выполнить. Нода — это компьютер в сети Bitcoin, который проверяет блоки на соответствие правилам сети. Чтобы проверить работу блока, нода один раз заново вычисляет двойной хеш SHA-256 заголовка блока и сравнивает результат с целью. На создание блока ушло столько-то попыток, а на его проверку — одно вычисление хеша. Именно этот разрыв делает такую работу доказательством.

Proof of work позволяет нодам договориться об одной цепочке без центральной стороны

Два майнера могут найти действительные блоки практически одновременно, и тогда в сети появляются конкурирующие версии цепочки. Proof of work даёт каждой ноде правило выбора: нода следует той цепочке, за которой стоит больше всего работы, — той, которую труднее всего было бы воссоздать заново. Поскольку проверить работу может кто угодно, никакой центральной стороне не нужно решать, какая цепочка считается верной.

Каждый блок содержит хеш предыдущего блока, поэтому изменение блока из прошлого означает, что придётся заново проделать работу для этого блока и для всех последующих. Proof of work специально сделан так, чтобы переписывание истории было дорогостоящим, и стоимость изменения конкретного блока растёт с каждым новым блоком, добавленным после него.

Proof of work также играет роль в предотвращении двойного расходования — попытки потратить одни и те же BTC дважды. Отмена платежа, который уже включён в блок, означала бы необходимость заново проделать эту работу.

Майнеры получают субсидию и комиссии, а сетевая сложность задаёт темп

В Bitcoin майнер, чей действительный блок приняла сеть, получает вознаграждение за блок. Это вознаграждение состоит из двух частей: субсидии блока, то есть вновь созданных BTC, и комиссий за транзакции, которые платят пользователи, чьи транзакции попали в этот блок. По состоянию на октябрь 2026 года субсидия для майнеров составляет 3,125 BTC за блок — с момента последнего халвинга в апреле 2024 года.

Субсидия блока уменьшается вдвое каждые 210 000 блоков — это событие называется халвингом и происходит примерно раз в четыре года. Уменьшается вдвое только субсидия, комиссии это не затрагивает.

Каждые 2016 блоков протокол Bitcoin корректирует сетевую сложность. Он измеряет, сколько времени заняли эти блоки, используя метки времени из их заголовков, и сравнивает это значение с 1 209 600 секундами, то есть двумя неделями. Затем цель пропорционально пересчитывается так, чтобы блоки в среднем продолжали появляться примерно каждые 10 минут. За одну корректировку сетевая сложность может измениться не более чем в 4 раза в любую сторону.

Хешрейт — это суммарное число хешей в секунду, которое вычисляют машины сети. Когда хешрейт растёт, блоки обычно появляются быстрее, чем раз в 10 минут, и при следующей корректировке сетевая сложность повышается. Когда блоки появляются слишком медленно, корректировка снижает сетевую сложность. Корректировка учитывает только время появления блоков: она не считает число майнеров и не учитывает цену BTC.

10-минутное время блока в Bitcoin — это среднее значение, а не гарантия для каждого отдельного блока. По статистической модели поиска блоков, около 63% блоков появляются в пределах 10 минут после предыдущего.

Чем proof of work отличается от proof of stake?

Proof of work и proof of stake — это оба механизма консенсуса, определяющие, какой участник добавит следующий блок в блокчейн. Блокчейн — это общая запись, состоящая из блоков, связанных друг с другом по порядку. Proof of work привязывает это право к вычислительной работе: майнер хеширует данные, пока блок не достигнет цели.

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

Эти два механизма различаются тем, что именно вносит участник: в proof of work — вычислительную работу, в proof of stake — заблокированные монеты.

Почему proof of work потребляет электроэнергию?

Майнинг биткоина потребляет электроэнергию, потому что proof of work — это реальные вычисления, а вычисляющие машины потребляют энергию. Эта затрата заложена в само определение: proof of work требует метода проб и ошибок, а в Bitcoin этим перебором занимаются машины.

Каждый хеш, который вычисляет машина, расходует некоторое количество энергии, поэтому чем больше хешей в сумме, тем обычно больше потребляемая мощность. Если к сети подключается больше машин, блоки обычно начинают появляться быстрее, при следующей корректировке сетевая сложность растёт, и в среднем на каждый блок требуется больше хешей.

Некоторые политики и операторы энергосетей выражали обеспокоенность тем, как электроэнергия, которую потребляют майнеры криптовалют в США, влияет на стоимость, надёжность энергоснабжения и выбросы. Опубликованные оценки энергопотребления Bitcoin различаются в зависимости от методики подсчёта и рассматриваемого периода.

Действительный хеш подтверждает, что усилия были затрачены, а не то, что транзакция действительна

Хеш, равный цели или ниже неё, показывает, что кто-то проделал работу. Он ничего не говорит о том, действительны ли транзакции внутри блока. Полная нода принимает блок, только если каждая транзакция в нём действительна и ещё не была потрачена, а программное обеспечение нод, такое как Bitcoin Core, отклоняет блок, который претендует на сумму больше, чем субсидия плюс комиссии, — сколько бы работы за ним ни стояло.

Proof of work также не делает историю неизменной навечно. Он лишь делает переписывание истории затратным. Сторона, контролирующая большую часть хешрейта сети, может пересмотреть недавнюю историю транзакций и помешать подтверждению новых транзакций. Ожидание дополнительных подтверждений — то есть блоков, построенных поверх блока, фиксирующего транзакцию, — повышает стоимость пересмотра этой транзакции, но не устраняет саму возможность.

Proof of work также не оплачивает усилия сами по себе. На уровне протокола хеширование, не завершившееся принятым блоком, не получает вознаграждения за блок, сколько бы электроэнергии на него ни было потрачено.

27 ноября 2025 г.

Новости GoMining

Вам может быть интересно: