Как работает Proof-of-Work (PoW)

Как работает Proof-of-Work (PoW)

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

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

Какую математическую задачу решает PoW

Это одна из проблем, требующих значительной вычислительной мощности. Таких проблем много:

  • Хеш-функция, или попытка найти входные данные, зная выходные;
  • Разложение целого числа на множители;
  • «Головоломка для экскурсанта»: если сервер подозревает DoS-атаку, он требует от клиента вычисления хеш-функций, иногда в определенном порядке, тогда это проблема вычисления значений цепочки хэш-функций.

В случае с PoW используется хэширование.

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

Почему PoW столь важен

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

  1. Какая версия истории правильная?В сети, где вам нужно знать, кто располагает деньгами, кто тратил деньги и кто их получал, история — это всё. Раньше считалось, что участникам децентрализованной сети, которой никто не руководит, невозможно достичь полного консенсуса и согласиться друг с другом.
  2. Тайминг сетиВремя в сети имеет значение, так как биткоин создаёт новые монеты каждые десять минут. В традиционной системе вы просто скажете: «Посмотри на часы», но в децентрализованной глобальной системе встаёт вопрос, на чьи часы смотреть.Представим, что новый компьютер присоединяется к сети сегодня. «Старожил» может сказать: «Эй, вот деньги, которые я отчеканил шесть месяцев назад, и деньги, которые я отчеканил ещё через десять минут». Как новый участник сети сможет подтвердить действия, которые были совершены в прошлом?

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

Анализ Proof-of-Work

Когда Стивен Хокинг писал свой шедевр «Краткая история времени», коллега сказал ему, что каждая научная формула, которую он включит в книгу, уменьшит количество читателей на 50%. Так что в итоге Хокинг оставил только знаменитую Эйнштейновскую E=mc2. Книгу Хокинга в итоге прочли миллионы, многие из которых весьма далеки от физики.

Так что, если говорить просто, хеш-функция представляет собой уникальный цифровой отпечаток части данных. Например, уникальный хеш для имени Мэтт — это длинный фрагмент текста:

4f31fa50e5bd5ff45684e560fc24aeee527a43739ab611c49c51098a33e2b469

Если кто-то видит этот хеш, он не знает, что за ним стоит, но мы можем сказать: «Если вы напечатаете текст matt с помощью компьютерной программы, то сможете доказать, что мы знаем, что представляет собой этот хеш. Дело в том, что ваша программа будет генерировать один и тот же хеш, следовательно, мы знаем, к чему относится этот хеш».

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

Скажем, если вместо matt хешировать matt0, мы получим такой хеш:

c5163e81b6dff231b46b584384718ffb734da51d51009399b4b5c73aaa55a811

Если сравнить его с хешем matt, легко заметить, что хеши разные:

Hash(matt) =

4f31fa50e5bd5ff45684e560fc24aeee527a43739ab611c49c51098a33e2b469

Hash(matt+0) =

c5163e81b6dff231b46b584384718ffb734da51d51009399b4b5c73aaa55a811

Криптографические хеш-функции всегда возвращают одинаковое значение для заданной части данных.

Теперь хешируем, например, matt14 и получим:

Hash(matt + 14) =

0ec48972291a05f8b137468c709bf798dbd8b84bc113b5352e81d2bb20d43120

Но зачем это делать? Представьте, что компьютер поставил перед нами задачу: «Дайте мне первое число, добавленное в конце имени Мэтт, в результате чего хеш будет начинаться с нуля».

С помощью своего компьютера мы начинаем генерировать хеши до первого совпадения:

Hash(matt + 0) =

c5163e81b6dff231b46b584384718ffb734da51d51009399b4b5c73aaa55a811

Hash(matt + 1) =

4755a40d3769d7614fb31229fedea4d5e247b3ab8cdc223c4b4f5e3cf9910b4c

Hash(matt + 2) =

3f8aad849c3ac625d61ae58929ac1bbf5626592a28dc5368b19b2ef40f514f59

И так далее.

В конце концов, дойдя до matt14, мы получили бы хеш, который начинается с нуля:

0ec48972291a05f8b137468c709bf798dbd8b84bc113b5352e81d2bb20d43120

Наш компьютер отвечает текстом matt14 и включает хеш; принимающий компьютер смотрит, соответствует ли полученный хеш тому, который был запрошен.

Это доказывает, что наш компьютер провёл расчёты, добавляя цифры от 0 до 14, чтобы найти этот хеш. Это эффективно, поскольку наш компьютер выполнил 15 действий, а принимающий компьютер смог проверить это с помощью одного действия.

Фактически мы предоставили доказательства своей работы, то есть выполнили доказательство работы.

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

Изначальная команда поступит в обработку мгновенно:

BlockHash = Hash(‘All of the transactions in the current block’)

Компьютер приступит к вычислениям:

Hash(BlockHash + 0)

Hash(BlockHash + 1)

Hash(BlockHash + 2)

И так далее.

Чтобы найти хеш с 15 нулями в начале, потребуются многие триллионы попыток. Медленный компьютер потратил бы на это сотни лет, а несколько мощных компьютеров справились бы за 20-40 минут.

Эти компьютеры, очевидно, будут съедать много электричества. Из-за затрат на электроэнергию майнеру невыгодно находить допустимый хеш для недопустимого блока транзакций. То есть майнеру глупо подтверждать «неправильный» блок, утверждая, что все транзакции действительны, и просто переходить к хешированию. Остальные компьютеры в сети отклонят недействительный блок, и майнер не получит своё вознаграждение.

Одна из вещей, которая помогает поддерживать децентрализацию майнинга, заключается в том, что двое майнеров не могут хешировать одинаковые блоки. При хешировании «a + b» получается не тот же результат, что при хешировании «b + a». Майнеры получают транзакции по сети в разном порядке; из-за этого, а также из-за собственных предпочтений в вопросах комиссии каждый майнер обрабатывает блок немного иначе.

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

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

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

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

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

Майнинг на протоколах PoW и PoS: в чем отличия

В глобальном плане ПоВ майнинг отличается от ПоС добычи критерием, определяющим прибыльность.

  1. На протоколе Proof-of-Work доходность напрямую зависит от мощности вычислительного оборудования.
  2. При использовании протокола Proof-of-Stake прибыль будет зависеть от количества монет, хранящихся в кошельке конкретного пользователя.

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

  1. Для начала PoW майнинга нужно тратиться на дорогую аппаратуру, обустраивать для неё помещение. Вход в PoS майнинг более доступный. На данном протоколе сегодня работают валюты, которые только развиваются и стоят не очень дорого. Поэтому человеку нужно выделять гораздо меньше денег для инвестирования.
  2. Круглосуточная работа оборудования приводит к наматыванию драгоценных киловатт энергии, за которые надо ежемесячно платить. Такие издержки заметно уменьшают итоговую прибыль PoW добычи. При майнинге на PoS достаточно просто держать компьютер включенным, при этом он будет работать на минимальной мощности, так что затрат на электричество как таковых здесь нет.
  3. Майнинг по протоколу Proof-of-Work несет в себе куда большие финансовые риски. Вы можете вложить деньги в оборудование, а добываемая криптовалюта обесценится. В случае с видеокартами все ещё не так страшно; если платы в хорошем состоянии, их можно перепродать. А вот асики уже никуда не денешь, поэтому ваши тысячи долларов просто пропадут. Майнинг на Proof-of-Stake изначально требует меньших финансовых затрат, поэтому даже если актив рухнет, последствия для «шахтера» будут не настолько плачевными.

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

  1. Мошенники запускают ICO и обещают выгодные условия сотрудничества.
  2. Проводят первичную продажу монет.
  3. Получают доход от реализации эмитированных коинов.
  4. После получения необходимой прибыли прекращают поддержку платформы или вовсе не запускают её.

Как следствие, инвесторы оказываются с никому ненужными монетами и деньги улетают на ветер.

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

Криптовалюты, которые работают на алгоритме PoW

Proof-of-Work применяется в большинстве известных криптовалют, среди которых:

  1. Bitcoin. Это самая первая и востребованная криптовалюта, которая использует алгоритм PoW с самого начала (с 2008 года).
  2. Litecoin – известный форк Биткоина, который позволяет в два раза увеличить скорость обработки блоков, чем в сети BTC.
  3. Ethereum – криптовалюта, которая первая предложила сообществу смарт-контракты для автоматизации различных процессов и создания приложений. Сегодня Ethereum использует гибридный алгоритм Casper, а в дальнейшем разработчики хотят полностью отказаться от алгоритма PoW. Подобное вызвано тем, что Виталик Бутерин изначально хотел использовать PoS, но алгоритм имел проблемы, которые вынудили разработчиков обратиться к более проверенным механизмам. Сейчас Бутерин надеется, что созданный им протокол Casper решит актуальные проблемы алгоритма PoS и сможет полностью предотвратить вероятность форков, что в дальнейшем позволит оказаться от Proof-of-Work.
  4. DASH – перспективная криптовалюта, которая обеспечивает полностью анонимные платежи. Сегодня количество транзакций DASH превышает 1 % от общего объема. Майнинг DASH основан на алгоритме хеширования Х11. Это модернизированная разновидность PoW, которая привела к повышению уровня загрузки системы. Случился рост популярности сети, увеличилась сложность майнинга и курса криптовалюты.
  5. Quark – экспериментальная криптовалюта, которую можно добывать на CPU-процессорах. Изначально транзакции в сети подтверждались каждые 30 минут. Бесконтрольный выпуск монет привлек внимание пользователей, из-за чего количество майнеров увеличилось. Легкий майнинг привел к тому, что в первые 6 месяцев существования проекта пользователи добыли практически 200 миллионов монет. Разработчикам пришлось сократить эмиссию до 1 млн Quark в год.
  6. Monero – платформа с анонимной платежной системой. Разработчики перевели криптовалюту на новый алгоритм консенсуса PoW CryptoNight. Это произошло, поскольку 85 % общего хешрейта сети генерируется FPGA и ASIC устройствами. Хешрейт одного из них составляет около 128 Kh/s, тогда как майнинг ферма из 6 видеокарт еле дотягивает до 6-12 Kh/s. Это ставит под сомнение децентрализацию сети и противоречит принципам, которые заложены в основе Monero.

Системные проблемы PoW-майнинга

Главным изъяном рассматриваемого протокола является вероятность «Атаки 51 %». Суть в том, что если один человек или группа пользователей сконцентрируют у себя больше половины хешрейта сети, они смогут подтверждать только свои блоки, полностью игнорируя элементы, создаваемые другими участниками. Таким образом, держатели контрольной мощности будут забирать себе все эмитированные коины и получат возможность блокировать транзакции. Более того, злоумышленники могут переписать историю создания элементов блокчейна. Как следствие, их цепочка догонит иперегонит изначальный блокчейн и станет валидной. Это приведет к потере монет, хранящихся в кошельках тысяч людей.

Нельзя не сказать о том, что в сетях, функционирующих на PoW, велика вероятность проведения двойного расходования — повторной передачи одних и тех же коинов. Этот тип атаки имеет 2 типа:

  1. Гонка. Злоумышленник совершает перевод X, оплачивая приобретение товара. Одновременно он переводит эти же монеты на другой свой счет (транзакция Y). Если реализатор отгружает товар до подтверждения перевода, он идёт на огромный риск, так как с вероятностью в 50 % подтверждение получит транзакция Y.
  2. Атака Финни — ещё более интересный вариант жульничества. Злоумышленник находит блок со своей транзакцией Y. После нахождения нужного элемента он сразу отправляет перевод X, и покупает товар. Реализатор дожидается подтверждения перевода X, а потом отгружает купленный у него продукт. Если в данный момент появляется 2 блока (с переводами X и Y), создаётся развилка. «Шахтерам» приходится выбирать, какой элемент сети брать для продолжения цепи блокчейн. Если атакующий имеет достаточно вычислительной мощности, он может повысить вероятность выбора блока с транзакцией Y. Как следствие, изначально подтвержденный перевод не будет стопроцентно валидным.

Из всех изъянов наиболее вероятным является проведение атаки 51 % (с учетом того, сколько мощностей сегодня сосредоточено в Китае). Хитрости с двойным расходованием, по сути, может осуществить 1 человек, но вряд ли тот, у кого хватает денег на дорогую аппаратуру, будет размениваться на данные жульнические схемы (тем более не имея стопроцентной гарантии успеха).

Преимущества PoW

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

  • избежание так называемой «Атаки Сибиллы», когда создается множество фейковых нод, чья совокупная вычислительная мощность выше таковой у «легальных» пользователей, соответственно, вычисления в сети злоумышленника имеют больший «вес». Сейчас такая атака почти неосуществима, поскольку требуются огромные мощности, а подделать или как-то эмулировать их невозможно.
  • Полученное через PoW доказательство нельзя перенести на другой блок цепочки или подделать.
  • Невозможно и «сделать» доказательство заранее – каждый блок ссылается на предыдущий.
  • Добыча монет происходит честно: награда за майнинг распределяется в зависимости от вклада пользователя в общий хешрейт. Чем больше вычислительной мощности задействовано, тем выше награда.
  • Майнеры имеют стимул не нарушать протокол работы, поскольку нелегальные действия лишат их заработка.

Кроме того, консенсус Накамото делает систему устойчивой к цензуре (сеть децентрализована, ее работу нельзя проконтролировать, невозможно модифицировать или заменить блок), а легкость проверки позволяет системе оставаться объективной: для контроля правильности доказательства работы нужно только вычислительное устройство и блокчейн.

Недостатки консенсуса

У доказательства выполнения работы есть и некоторые недостатки.

  • Огромные вычислительные мощности.Чтобы работать над хешированием, требуются значительные мощности: так, биткоин майнить на дешевых видеокартах не получится, требуются мощные майнеры, стоящие многие сотни тысяч рублей. Помимо затрат на дорогое оборудование, придется тратиться и на энергию, и эти затраты могут быть весьма велики. Например, крупнейшая русская майнинг-ферма тратит, по примерным подсчетам, около 6 миллионов в месяц «на свет».
  • Повышение централизации сети.Этот пункт вытекает из предыдущего. По мере роста сложности стоимость оборудования перестает быть доступной рядовым пользователям, добывать блоки и подтверждать транзакции могут только большие сообщества майнеров или состоятельные люди/компании с мощными майнинг-фермами. И это ведет к централизации, поскольку обладатели больших мощностей начинают диктовать правила сети. Одиночки с небольшими возможностями майнить уже не могут.
  • Высокое энергопотребление и бесполезность вычислений.Майнеры потребляют огромные объемы электричества, но производимые ими вычисления не идут никуда, кроме как на нужды самой сети, то есть мощности тратятся, по сути, практически впустую. Сегодня не существует решений по использованию результатов этих вычислений в каких-либо иных целях.
  • Экологический аспект.Энергозатраты вынуждают производителей энергии делать больше электричества, сжигая большие количества топлива, в том числе ископаемого и невозобновляемого. Это истощает ресурсы планеты и усиливает загрязнение окружающей среды.
  • Подверженность атаке «51%».В общих чертах она описывалась выше: атака возможна, если злоумышленник контролирует 51% хешрейта сети или более. Атакующий может вмешиваться в ход проведения транзакций, отменяя их и проводя другие манипуляции, поскольку его мощности выше, а значит, будет принята именно «его» цепочка, а не легальная. Сегодня такие атаки малоосуществимы из-за крайне высокого хешрейта.

Вывод и рекомендации

Сейчас некоторые блокчейны применяют обе технологии при формировании новых блоков (например, в криптовалютах PeerCoin и Reddcoin метод PoW используется для первоначального распределения, а PoS — для подтверждения транзакций). Это связано с тем, что количество монет каждой криптовалюты фиксировано и рано или поздно закончится. Тогда при разгадывании блока придется переходить на PoS технологию, при которой не происходит ввод новых монет в оборот.

Перспективы Proof of Stake

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

Существует большая вероятность, что количество PoS-проектов в криптовалютном мире будет увеличиваться, а доказательство выполнения работы станет постепенно устаревать и отходить на второй план, поскольку имеется ряд факторов:

  • энергоэффективность;
  • стоимость «входа» и работы;
  • безопасность;
  • децентрализация, не зависящая от вычислительных мощностей.