Proof of Work

Материал из Decimal Wiki
(перенаправлено с «PoW»)
Перейти к навигации Перейти к поиску

Proof of Work (PoW, англ. «доказательство выполнения работы») — механизм, используемый в блокчейне для достижения согласия и обеспечения безопасности сети. Он был впервые представлен в белой книге Биткойна Сатоши Накамото в 2008 году.

В консенсусе PoW майнеры решают сложные математические задачи, чтобы подтвердить транзакции и добавить новые блоки в блокчейн. Эти задачи требуют вычислительной мощности и времени. Когда майнер решает задачу, он предлагает новый блок, который должен быть проверен другими участниками сети.

Варианты консенсуса PoW могут различаться по алгоритму, используемому для решения задач и проверки блоков. Например, самым известным примером является алгоритм SHA-256, используемый в Биткойне. Другие известные алгоритмы включают Ethash в Ethereum и Equihash в Zcash.

Консенсус PoW обеспечивает безопасность блокчейна, так как атакующему нужно контролировать более 50 % вычислительной мощности сети, чтобы изменить уже существующие блоки. Однако он требует большого количества энергии и может быть медленным в масштабе всей сети.

В последние годы появились и другие алгоритмы консенсуса, такие как Proof of Stake (PoS) и Delegated Proof of Stake (DPoS), которые ориентированы на решение проблем энергопотребления и масштабируемости. Они используют различные механизмы для выбора участников, которые создают и подтверждают блоки.

История

Впервые описание доказательства выполнения работы было дано в статье, названной «Pricing via Processing or Combatting Junk Mail» 1993 года.

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

В 1997 году Адам Бек запустил проект Hashcash, посвященный защите от спама.

В 1999 году появился термин Proof of Work. Он использовался в статье «Proofs of Work and Bread Pudding Protocols».

16 августа 2004 года Хэл Финни в своем письме на форуме «cypherpunks» предложил использование многоразового доказательства выполнения работы для организации электронной валюты. Вскоре Сатоши Накамото предложил криптовалюту Bitcoin, в которой для значительного усложнения двойных трат используется протокол доказательства выполнения работы.

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

Добыча каждого блока представляет собой поиск решения функции. Сложность задачи изменяется для контроля частоты нахождения блоков. Система программируется таким образом, чтобы средняя частота нахождения составляла один блок в 10 минут. Каждый блок содержит хэш предыдущего блока, образуя цепочку. Изменить блок невозможно — можно только создать блок на том же уровне, который будет содержать хэш предыдущего блока. Для выполнения такого процесса необходимо выполнить работу по нахождению всех предыдущих блоков. Высокая сложность этого процесса защищает блокчейн (цепочку блоков) от несанкционированного доступа и атак двойных трат.

Уязвимости

За 11 лет существования сети Bitcoin никто не смог вскрыть систему и воспользоваться ее уязвимостями.

Атака 51 %

На ранних этапах своего существования Bitcoin, как и многие другие криптовалюты, уязвим для «атаки 51 %». Если более половины вычислительной мощности сконцентрировано в руках атакующего, то у него есть возможность подтверждать только свои собственные блоки, игнорируя остальные, что позволяет ему получить 100 % всех произведенных биткоинов, а также заблокировать любые транзакции.

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

Двойные траты

Двойные траты — это повторный перевод одних и тех же активов. Эта атака разделяется на несколько подтипов.

Атака типа гонки. Атакующий совершает транзакцию X, оплачивая покупку товаров, одновременно переводя те же деньги на другой счёт с транзакцией Y. Если продавец не дожидается подтверждения транзакции и отправляет товары, то он рискует: есть 50-процентный шанс того, что транзакция Y может попасть в правильную цепочку.

Атака Финни. Атакующий пытается найти блок, содержащий его транзакцию Y. Однако, как только блок обнаруживается, атакующий отправляет транзакцию X, после чего покупает товары. Продавец ожидает подтверждения транзакции X и отправляет товары. Если в этот момент появляется блок с транзакцией Y, то создается ситуация разделения цепочки (fork), в которой майнеры должны выбрать один из двух блоков для продолжения цепочки блокчейна. Концентрируя большое количество вычислительных ресурсов в руках атакующего, он может значительно увеличить вероятность выбора блока с операцией Y. Таким образом, подтвержденная транзакция не гарантирует ее действительность.

Недостатки PoW

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

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

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

Попытки избавиться от недостатков PoW привели к появлению PoS и многочисленным гибридным вариантам.

См. также