Двойная трата: задача, с которой всё началось
Допустим, у Вадима есть одна монета, и в одну и ту же секунду он отправляет её Ане и Борису. Будь это банковский счёт, всё решилось бы просто: банк видит оба платежа, проверяет баланс и второй отклоняет. В сети без банка тысячи компьютеров получают сообщения в разном порядке. Часть сети услышала про перевод Ане, часть про перевод Борису, и у каждой своя правда.
Это и есть задача двойной траты. Чтобы цифровые деньги работали без посредника, всем участникам нужно договориться об одном порядке записей, причём так, чтобы договорённость нельзя было подделать или купить задёшево.
Почему нельзя просто проголосовать
Первая мысль: пусть компьютеры голосуют, какой перевод был раньше. Но голоса в интернете ничего не стоят. Один человек может запустить миллион виртуальных участников и выиграть любое голосование. Такая уловка называется атакой Сивиллы.
Значит, голос должен стоить чего-то из реального мира, что нельзя размножить копированием. Proof of Work привязывает его к вычислениям: право предложить следующий блок получает тот, кто потратил электричество и время железа. Сожжённое электричество подделать невозможно.
Как работа становится голосом
Майнер берёт заготовку блока, меняет в ней специальное поле и считает хеш. Результат должен оказаться ниже порога, который задаёт сеть. Попадание предсказать нельзя, поэтому майнер пробует снова и снова. Если подходит один хеш из триллиона, искать его придётся в среднем триллион попыток, а проверить найденное можно одной. Вся схема держится на этой асимметрии: искать трудно, проверять легко.
Порог сеть подстраивает сама. Сложность растёт вместе с мощностью сети, поэтому блоки выходят с нужной частотой, сколько бы железа ни работало.
Дальше действует простое правило: при расхождении верной считается цепочка, в которую вложено больше всего работы. Вернёмся к Вадиму. Оба его перевода могут разойтись по сети, но в блок попадёт только один, а второй станет недействительным. Если два майнера нашли блоки почти одновременно, сеть ненадолго раздвоится, и следующий найденный блок решит спор. Поэтому продавцы и биржи ждут несколько подтверждений, прежде чем считать перевод окончательным.
Идея старше биткоина. В 1997 году криптограф Адам Бэк предложил Hashcash, защиту от спама: отправитель тратит на расчёт для письма долю секунды, а спамеру миллионы таких расчётов обходятся дорого. В 2008 году Сатоши Накамото соединил тот же приём с цепочкой блоков.
Почему историю дорого переписать
Каждый блок содержит отпечаток предыдущего. Чтобы изменить запись 100 блоков назад, нужно заново найти ответ для этого блока и всех последующих, да ещё и догнать сеть, которая тем временем уходит вперёд. В биткоине 100 блоков занимают примерно 17 часов работы всех майнеров мира, и атакующий должен повторить её быстрее них.
Защита здесь экономическая: переписать историю математически возможно, но обойдётся это слишком дорого. На тех же мощностях можно честно зарабатывать награды, а успешная атака обрушила бы цену монеты, которую атакующий сам добывает. Сеть устроена так, что честность выгоднее обмана, и в этом главная идея всего подхода.
Жульничать невыгодно и в мелочах. Майнер может вписать себе награду больше положенной, но такой блок не пройдёт проверку узлов, и вся работа над ним пропадёт вместе с потраченным электричеством. Перебор нельзя вернуть обратно, поэтому ошибка сразу стоит денег.
Отсюда понятен и смысл награды. Сеть платит майнерам за охрану: чем дороже стоит монета, тем больше железа она привлекает и тем дороже обходится нападение.
Атака 51%: что она может, а что нет
Если один участник контролирует больше половины хешрейта сети, он в среднем находит блоки быстрее всех остальных вместе и может навязать свою цепочку. Вот что ему доступно:
- отменить собственные недавние переводы и потратить те же монеты дважды;
- не пускать в блоки чужие транзакции;
- забирать большинство наград, вытесняя других майнеров.
Украсть монеты с чужого адреса он не сможет: для этого нужен ключ. Выпустить монеты сверх правил тоже не выйдет, потому что узлы отвергнут такой блок, сколько бы хешрейта за ним ни стояло. Переписывание глубокой истории дорожает с каждым блоком.
Для биткоина такая атака потребовала бы гигантских денег и железа, которое ещё надо где-то взять. Маленьким сетям приходится хуже: мощность для нападения там иногда можно просто арендовать. От таких атак пострадали Bitcoin Gold в 2018 году и Ethereum Classic в 2019 и 2020 годах: злоумышленники откатывали блоки и тратили монеты повторно. Поэтому для небольшой монеты биржа может требовать намного больше подтверждений, чем для биткоина.
Какую работу требуют разные сети
Proof of Work задаёт общий принцип, а сама задача у каждой сети своя. В биткоине это алгоритм SHA-256, простая операция, которую специальные чипы выполняют очень быстро, поэтому сеть давно принадлежит устройствам ASIC. Litecoin использует Scrypt, и под него тоже есть свои устройства. Monero выбрала RandomX, который запускает случайные программы и нагружает кэш и память, поэтому там хорошо чувствуют себя обычные процессоры.
От выбора алгоритма зависит, кто сможет участвовать. Чем дороже и специальнее железо, тем уже круг майнеров и выше порог входа. Поэтому часть сетей намеренно подбирает работу под массовое оборудование, чтобы майнинг не оказался в руках нескольких производителей чипов.
Proof of Stake: другой способ договориться
В Proof of Stake право создать блок зависит от монет, которые участник заморозил в залог. Перебора хешей нет, а место майнеров занимают валидаторы. Обманщик теряет часть залога, поэтому атака бьёт по его собственному карману.
| Что сравниваем | Proof of Work | Proof of Stake |
|---|---|---|
| Чем подкреплён блок | Электричеством и железом | Замороженными монетами |
| Кто создаёт блоки | Майнеры | Валидаторы |
| Цена обмана | Потраченная впустую энергия | Потеря части залога |
| Потребление энергии | Большое | Намного меньше |
| Частая критика | Расход энергии, концентрация в пулах | Влияние крупных держателей, сложные правила |
| Примеры сетей | Bitcoin, Litecoin, Monero | Ethereum с 2022 года |
Самый громкий переход случился в сентябре 2022 года, когда Ethereum отказался от майнинга, и потребление энергии сетью снизилось более чем на 99%. Что стало с видеокартами, рассказано в статье про Ethereum.
У обоих лагерей есть доводы. Сторонники Proof of Work ценят привязку безопасности к физическому миру: для захвата сети нужны реальное железо и энергия, а новый участник входит без разрешения держателей. Сторонники Proof of Stake указывают на экономию энергии и отсутствие гонки оборудования. Работают оба подхода, и у каждого есть свои крупные сети.
Кто платит за безопасность
Перебор хешей стоит электричества, и немалого. По оценкам Кембриджского центра альтернативных финансов, сеть биткоина потребляет больше сотни тераватт-часов в год, это сравнимо с потреблением отдельных стран. Эти расходы покрывает награда за блок: новые монеты размывают долю всех держателей, а комиссии платят те, кто отправляет переводы.
Критика понятна: сам перебор ничего полезного, кроме защиты, не создаёт. Поэтому появляются проекты, которые пытаются сделать работу полезной. В материалах Pearl, например, звучит идея proof of useful work. Приживутся ли такие схемы, покажет время.
Домашний компьютер занимает в этой системе скромное место, но играет по тем же правилам. В FlowHash видеокарта и процессор майнят монеты на доказательстве работы, Pearl и Monero, так что всё описанное выше относится и к ним. Как это выглядит на практике, рассказано в статье что такое майнинг.
Что считает ваше железо
Калькулятор покажет хешрейт и прогноз для вашей видеокарты и процессора в сетях на Proof of Work.