Как работает доказательство работы в биткоине?

Коротко

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

Михаил Савченко

Задачка против спама

В 1997 году британский криптограф Адам Бэк придумал Hashcash, способ бороться со спамом. Перед отправкой письма компьютер отправителя должен был несколько секунд решать бессмысленную математическую задачку и прикладывать решение к письму. Обычному человеку несколько секунд на письмо ничего не стоят, а рассыльщику, который шлёт миллионы писем, эта работа обошлась бы в целую ферму компьютеров. Проверить решение получатель мог мгновенно. Так появилось доказательство работы (глава «Призрак криптоанархии»).

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

От Hashcash к биткоину

Следующие детали шифропанки раскладывали по столу одну за другой. В 1998 году Вэй Дай описал b-money, деньги, которые ведут сразу все участники сети, а новые монеты получает тот, кто решит вычислительную задачу. Почти одновременно Ник Сабо придумал Bit Gold, где решение задачи само становилось ценностью, как добытое из земли золото, и каждое следующее решение цеплялось к предыдущему. В 2004 году Хэл Финни собрал из идеи Бэка сервер RPOW, где доказательства работы можно было передавать из рук в руки, только сервер принадлежал самому Финни (там же).

Ни одна из этих схем не взлетела. У b-money не было ответа на вопрос, как участники договорятся, кто прав, если записи расходятся, а Bit Gold так и осталась описанием (там же).

Как это устроено в биткоине

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

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

Что знали жители острова Яп

На острове Яп платили каменными колёсами, которые вырубали на Палау и везли через океан на каноэ. В 1870-х капитан Дэвид О’Киф стал возить островитян на своём корабле и давать им железные инструменты, и камней стало больше. Островитяне оценили их по-своему. Небольшой камень, добытый старыми орудиями, ценился выше огромного колеса из трюма иностранного судна, потому что цену камня определяли люди, утонувшие, пока его везли, шторма и потраченные годы (глава «Камень на дне океана»).

За сто тридцать лет до Сатоши жители Япа открыли то, что программисты потом назовут доказательством работы. Запись стоит столько, во сколько обходится её подделка, и когда добыча дешевеет, дешевеют и деньги. Биткоин решает эту проблему автоматически, пересчитывая сложность добычи каждые две недели, так что новое железо тут же съедается ростом сложности (там же). Передать камень другой семье и поставить на камни метки, которыми немецкая администрация заставляла вождей чинить дороги, можно в опыте «Камни Япа».

Ещё вопросы

Кто придумал доказательство работы?
Британский криптограф Адам Бэк, в 1997 году, в системе Hashcash против спама. Сатоши Накамото сослался на Hashcash в своём тексте о биткоине.
Зачем биткоин меняет сложность майнинга?
Чтобы решение находилось в среднем раз в десять минут, сколько бы мощности ни было в сети. Сложность пересчитывается каждые две недели, и более быстрое оборудование не удешевляет монеты.
Ни у кого нет денег

Книга

Ни у кого нет денег

Подлинная история крипты

Изобретение Сатоши было настоящим. Первыми его клиентами стали те, кому отказывали банки.