Что такое Proof of Work (PoW)?
Главная
Статьи
Что такое Proof of Work (PoW)?

Что такое Proof of Work (PoW)?

Продвинутый
Опубликовано Dec 6, 2018Обновлено Apr 18, 2024
10m

Ключевые моменты

  • Proof of Work (PoW) — это механизм консенсуса, созданный для предотвращения двойного расходования в цифровых платежных системах.

  • PoW — это ключевая часть майнинга, который включает добавление блоков с транзакциями в блокчейн и создание новых единиц криптовалюты.

  • Биткоин и многие другие криптовалюты используют механизм PoW для защиты своих блокчейн-сетей и данных.

Введение

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

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

В качестве раннего примера использования алгоритма Proof of Work можно привести систему HashCash от Адама Бэка, которая появилась еще до криптовалют. Необходимость выполнения небольшого количества вычислений перед отправкой электронной почты позволила уменьшить количество спама. Такие вычисления практически ничего не стоят для обычного отправителя, но существенно усложняют процесс массовой рассылки.

Что такое двойное расходование?

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

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

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

Чтобы узнать больше о двойном расходовании, ознакомьтесь со статьей Что такое двойное расходование.

Для чего нужен Proof of Work?

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

Например, блокчейн Биткоина работает как публичная база транзакций (реестр), которую может просмотреть любой пользователь. Предположим, у вас и трех ваших друзей есть блокнот, в который вы записываете транзакции с биткоинами. Если кто-то из вас захочет перевести средства, он сделает в блокнот запись:

Алиса платит Бобу 5 BTC. Боб платит Кэрол 2 BTC и так далее.

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

Боб переводит Кэрол 2 BTC, полученные из предыдущей транзакции с Алисой.

Таким образом мы можем отслеживать все переводы BTC. Если Боб попытается совершить другую транзакцию, используя те же 2 BTC, которые он только что отправил Кэрол, всем сразу станет об этом известно. Группа не позволит ему записать такую транзакцию в блокнот, так как он уже потратил те 2 BTC.

Такая система может хорошо работать в небольшой группе людей где все участники хорошо знают друг друга, ведь им будет проще договориться о том, кто из них станет ответственным за добавление транзакций в общий список. Но что если мы хотим собрать группу из 10 000 участников? Суть использования блокнота плохо масштабируется, поскольку никто не станет доверять незнакомцу управление подобным финансовым регистром.

Для этого и нужен алгоритм Proof of Work. Он гарантирует, что пользователи не потратят деньги, которые не могут тратить. Используя теорию игр вместе с криптографией, алгоритм позволяет любому пользователю обновить блокчейн в соответствии с правилами системы.

Как работает PoW?

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

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

Механизм Proof of Work требует, чтобы майнер (пользователь, создающий блок) вкладывал ресурсы (электроэнергию и вычислительную мощность) в хеширование данных блока-кандидата до тех пор, пока не будет найдено решение.

Хеширование блока подразумевает проведение его через хеш-функцию для генерации хеша. Хеш блока выполняет роль «отпечатка пальца» и служит идентификатором входных данных, уникальных для каждого блока.

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

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

На поиск правильного хеша уходит огромное количество попыток, а вот проверить правильность готового хеша довольно легко. Для этого необходимо просто пропустить те же входные данные (данные блока) через хеш-функцию и проверить, совпадает ли результат.

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

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

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

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

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

Давайте повторим пройденный материал:

  • Майнинг — это сложный и затратный процесс, который обеспечивает безопасность сети.

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

  • Генерация правильного хеша занимает некоторое время, но его достоверность легко и быстро проверить, повторив процесс хеширования.

Но что, если вы попытаетесь обмануть систему? Что мешает вам поместить в блок кучу мошеннических транзакций и создать действительный хеш?

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

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

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

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

Proof of Work (PoW) или Proof of Stake (PoS)

Существует множество других алгоритмов консенсуса помимо PoW, но одним из самых популярных стал Proof of Stake (PoS). Его концепция зародилась еще в 2011 году и была реализована в Ethereum и нескольких других протоколах.

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

Протокол выбирает нового валидатора на основе нескольких факторов. Чтобы получить шанс быть выбранным, необходимо заблокировать часть токенов, добавив их в стейкинг. Эта сумма выступает в качестве своеобразного залога: валидаторы блокируют в системе определенное количество монет, которые будут утеряны, если валидатор попытается обмануть систему. Добавленные в стейкинг монеты будут изъяты, если валидатор попытается подтвердить недействительный блок.

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

Однако у PoS не такой большой послужной список, как у PoW. Хотя PoW может восприниматься как расточительство, на текущий момент майнинг — это единственный алгоритм консенсуса, хорошо работающий более десяти лет. За это время механизм PoW Биткоина безопасно обработал транзакций на триллионы долларов. Протоколу PoS еще предстоит доказать свою эффективность и конкурентоспособность в долгосрочной перспективе.

В заключение

Proof of Work — надежное и безопасное решение проблемы двойного расходования. Биткоин доказал, что для этого не нужны централизованные организации. При грамотном использовании криптографии, хеш-функций и теории игр участники децентрализованной среды могут сами отслеживать правильность работы всей финансовой базы данных.

Рекомендуемая литература

Отказ от ответственности: следующие материалы предоставляются на условиях «как есть» без каких-либо гарантий исключительно для общих справочных и образовательных целей. Эта информация не должна рассматриваться как финансовая, юридическая консультация или рекомендация по приобретению какого-либо конкретного продукта или услуги. Вам следует самостоятельно обратиться за советом к соответствующим профессиональным консультантам. Поскольку статья написана сторонним автором, обратите внимание, что высказанные мнения принадлежат стороннему автору и необязательно отражают точку зрения Binance Academy. Для получения более подробной информации перейдите по ссылке. Стоимость цифровых активов может быть волатильной. Стоимость инвестированных средств может увеличиваться и уменьшаться. Вы можете не вернуть инвестированные средства. Вы несете полную ответственность за свои инвестиционные решения. Binance Academy не несет ответственность за ваши возможные убытки. Данная информация не является финансовой, юридической или профессиональной рекомендацией. Чтобы узнать больше, ознакомьтесь с нашими Условиями использования и Предупреждением о рисках.