Доверие в долг. Криптовалюты как деньги и кредит: механизм, циклы, правила

- -
- 100%
- +
Посмотрим, как это работает на нашем пекаре. Теперь он не может тайно отправить одну строчку доярке, а другую лесорубу, потому что обе строчки объявляются всем дворам. Каждый двор видит, что пекарь пытается отдать одно право дважды, и дело сводится к тому, какая строчка была первой. Первую записывают в тетрадку, вторую отбрасывают.
Но какая из них была первой?
Посмотреть на время отправки не выйдет. Время в строчке ставит сам пекарь, и ничто не мешает ему пометить строчку для лесоруба более ранним часом, а часы на разных компьютерах к тому же расходятся. Поверить чужой отметке времени значит снова поверить тому, кто её поставил. Остаётся порядок, в котором строчки дошли до дворов, но и он у всех свой. Сообщения в сети идут с задержками, и до двора на одном краю посёлка первой дойдёт строчка для доярки, а до двора на другом краю — строчка для лесоруба. Если каждый двор запишет то, что увидел первым, копии тетрадки разойдутся, и мы вернёмся к b-money. Поэтому Накамото и говорит о единой истории порядка, в котором транзакции поступили169.

Рисунок 1.2. Пять правил посёлка по порядку
Первые две части правила не новы, b-money предлагала почти то же. Вся трудность в третьей, и именно её Накамото решил так, как до него не решал никто. По его собственным словам, он думал над замыслом с 2007 года и в какой-то момент убедился, что это можно сделать вообще без необходимости в доверии; больше всего работы, добавил он, ушло на проектирование, программирование заняло меньше170.171
Записи в биткоине собираются в страницы, их называют блоками. Первый блок новой тетрадки датирован 3 января 2009 года, и в него записан заголовок газеты The Times того дня, «Канцлер на грани второго спасения банков»172.173 Вписан он затем, чтобы доказать, что блок создан не раньше этой даты, ведь знать заранее, какой заголовок выйдет в газете в этот день, никто не мог. Обычно его читают ещё и как комментарий к спасению банков за счёт государства174. Прочтение правдоподобное, но сам Накамото его не подтверждал и не опровергал, так что для меня оно остаётся версией. (У первого блока есть и техническая странность. Вместе с каждым блоком в системе появляются новые монеты; с первым их появилось 50, но из-за особенности кода потратить их нельзя, и намеренно ли так сделано, неизвестно175.)
На этом месте аналогия с посёлком начинает ломаться, и полезно сказать, где именно. В посёлке тетрадка записывает долги (плотник должен пекарю, банк должен вам). В биткоине за строчкой нет должника. Никто не обещает отдать хлеб, крышу или доллары в обмен на вашу запись, строчка просто говорит, что столько-то единиц теперь принадлежит владельцу такого-то ключа, то есть тому, кто может подписать следующий перевод. Банк Англии ещё в 2014 году отметил, что биткоин тогда не использовался широко для расчётов и был популярен скорее как предмет вложений, и написал, что цифровые валюты вроде биткоина концептуально, возможно, ближе к товарам вроде золота, чем к деньгам176.177 Спор о том, деньги это или товар, начался почти одновременно с самим биткоином и не закончен до сих пор. Для этой главы важно, что долг из старой модели биткоин оставляет за бортом и забирает у неё только тетрадку, то есть общую запись о том, кому что принадлежит, и правило, по которому её нельзя тайно переписать.
Куда переходит доверие
Вернёмся к развилке, которую я обещал. Накамото и Банк международных расчётов исходят из одного факта: доверие к хранителям денег подводило много раз. Выводы у них противоположные. Банк международных расчётов пишет, что децентрализованная технология криптовалют, как бы изощрённа она ни была, — плохая замена прочной институциональной опоре денег, а проверенным способом обеспечить доверие к деньгам называет независимый центральный банк178.179 Сами деньги он определяет как незаменимую общественную договорённость, за которой стоит подотчётный государственный институт, пользующийся доверием публики180. Из этого следует, что хранителей нужно укреплять.
Накамото предлагает убрать нужду в хранителе. Заключение его статьи начинается словами о том, что предложена система электронных транзакций, не полагающаяся на доверие181.182
Кто из них прав, я в этой главе решать не стану. Ответ зависит от того, что держит систему без хранителя и насколько это прочно, а проверить это можно, только разобрав механизм по частям.
Одно я могу сказать уже сейчас. Формулировку Накамото я не считаю точной и дальше в книге буду исходить из более осторожной: доверие в биткоине остаётся, только переходит на другие опоры. В той же статье безопасность системы держится на условии, что честные участники вместе контролируют больше вычислительной мощности (проще говоря, больше компьютеров, занятых той самой работой в стиле Hashcash), чем любая группа нападающих183. Кроме того, пользователи доверяют математике подписей, коду, который пишут конкретные люди, и собственной способности не потерять ключ. Одни из этих опор прочнее привычных хранителей, другие слабее, и каждую мы проверим отдельно.
Зачем тогда вся эта конструкция, если доверие всё равно остаётся? Разница в том, кто может изменить запись в одиночку. В посёлке с хранителем для этого хватает одного человека, который допишет строчку, сотрёт чужую или остановит платежи (e-gold, как мы видели, пришлось перестроиться после одного уголовного дела против её хозяев184). В тетрадке без хранителя для того же нужно, чтобы сговорились те, у кого большая часть вычислительной мощности сети185. Доверие здесь похоже на нагрузку в конструкции. Убрать её нельзя, но можно разнести на много опор, и тогда отказ одной не роняет всё здание. Во что обходится такая распределённость и где она держится хуже, чем обещано, — отдельный вопрос, и до него мы дойдём.
Поэтому к любым деньгам, старым и новым, я в этой книге буду подходить с одним и тем же вопросом: кто ведёт запись и почему ему верят. У денег на вашем банковском счёте ответ двухэтажный (ваш банк и над ним центральный банк, которых ограничивают правила, надзор и денежная политика). У биткоина ответ другой, и из-за него весь спор. Запись ведут все участники сразу, и верить приходится условиям, на которых держится система. Криптовалюта — это попытка сделать тетрадку, которой не нужен хозяин.
Этот вопрос удобно разложить на несколько поменьше, и я советую задавать их себе всякий раз, когда вы читаете о новой монете, платёжной системе или «цифровых деньгах» какого-нибудь банка:
Кто ведёт запись?
Кто может дописать в неё новые строчки, и что его ограничивает?
Кто может стереть или заморозить чужую строчку?
Кто может остановить всю систему одним решением?
Кто выдаёт строчки в долг, и что будет, когда долги начнут вычёркивать?
Для денег на банковском счёте ответы уже есть в этой главе, хотя вы их, скорее всего, никогда не проговаривали. Запись ведёт ваш банк, а над ним центральный банк. Новые строчки пишут банки, выдавая кредиты, и держат их прибыльность, надзор и ставка центрального банка186. Стереть, заморозить или остановить может тот, кто ведёт тетрадку, а над ним государство, которое, как показала история e-gold, способно одним делом перестроить работу хранителя187. Строчки в долг выдают те же банки, и когда долги вычёркивают, вместе с ними исчезают деньги188. Для биткоина ответы другие, и дальше я постараюсь разобрать механизм так, чтобы вы могли дать их сами, не веря ни сторонникам, ни противникам. Пятый вопрос для этой книги самый важный, и возвращаться к нему я буду чаще, чем к остальным.
Прежде чем судить, стоит увидеть, как эта тетрадка устроена изнутри. В следующей главе мы разберём, почему её нельзя тайно переписать задним числом, что лежит в криптовалютном кошельке и что происходит, когда человек теряет свой ключ.
Глава 2. Реестр без хозяина: как работает блокчейн
Тетрадку без хранителя может прочитать каждый, а тайно переписать не может никто. Если эту фразу разобрать по частям, из неё получится почти всё устройство блокчейна, и в этой главе я хочу собрать его так, чтобы вы могли пересказать его другу без формул и без веры на слово.
В конце первой главы посёлок получил пятое правило: копия тетрадки лежит у каждого двора, каждая новая запись объявляется всем, и есть способ, которым дворы приходят к одной версии. Правило звучит просто, но работать оно начнёт, только когда найдутся ответы на несколько неудобных вопросов. Если копий сто, что мешает пекарю тихо исправить у себя строчку трёхмесячной давности и уверять соседей, что так и было записано? Хранитель знал пекаря в лицо и не принял бы строчку, написанную от его имени чужой рукой, но кто проверяет это теперь? И где лежит богатство пекаря, если у него нет ни счёта, ни хранителя, который этот счёт ведёт?
Из ответов на эти вопросы и складывается блокчейн. Это общая тетрадь, которую нельзя тайно переписать задним числом, а владеть строчкой в ней значит владеть ключом. Из второй половины определения следуют два свойства, которые многих удивляют. Такая тетрадка прозрачна, и анонимности в ней гораздо меньше, чем принято думать. А если ключ потерян, строчку не вернёт никто, потому что возвращать её некому. Детали я везде беру из биткоина, потому что он первый и лучше всего описан, хотя другие блокчейны во многом устроены иначе.
Отпечаток страницы
Представим, что у посёлка есть машинка. В неё кладут любую страницу тетрадки, а она выдаёт короткую строку из цифр и букв, всегда одной и той же длины. Назовём эту строку отпечатком страницы. От машинки нам нужно, чтобы 1) одна и та же страница всегда давала один и тот же отпечаток и любой двор мог проверить это сам; 2) по отпечатку нельзя было восстановить страницу или подобрать страницу под заранее заданный отпечаток иначе как перебором; 3) нельзя было найти две разные страницы с одинаковым отпечатком.
Такая машинка существует. Она называется криптографической хеш-функцией, а её результат — хешем. Наши требования совпадают с теми свойствами, которые справочник «Mastering Bitcoin» называет у неё главными: детерминированность, практическая необратимость и стойкость к коллизиям, то есть к совпадениям отпечатков189.190
Первое свойство позволяет любому двору проверить чужой отпечаток, ни у кого не спрашивая разрешения. Второе превращает поиск отпечатка нужного вида в лотерею, где выигрывают только числом попыток, и из этой лотереи чуть позже получится цена за новую страницу. Третье не даёт подменить страницу другой с тем же отпечатком191, а будь подмена возможна, отпечаток ничего бы не удостоверял. (Строго говоря, совпадения существуют, ведь страниц бесконечно много, а отпечатков конечное число. Но найти хотя бы одно такое совпадение вычислительно невозможно, и этого достаточно192.)
Биткоин использует функцию SHA-256. Её результат всегда имеет длину 256 бит, то есть 256 двоичных знаков, нулей и единиц, какой бы длины ни был вход, хоть одна буква, хоть целая книга193. На экране это 64 знака шестнадцатеричной записи, где кроме цифр от 0 до 9 используются буквы от a до f194.
Я пропустил через SHA-256 две строчки из нашего посёлка, которые отличаются одной цифрой:
«плотник должен пекарю 10» → 31f1c80ad71f0a47203c0ad31e883c64ae23440b0ee955fb159e3e9982109898
«плотник должен пекарю 11» → e0767f7e15e87062018598fbfc7bb8072327a49b17b995bfdc2ba9c632bb0a5e
Отпечатки не похожи друг на друга ни в одном месте, хотя строчки почти одинаковы. Любое изменение входа, даже одна буква или знак препинания, даёт другой хеш195.196 Насколько изменилась страница, по отпечатку понять нельзя, зато любая правка видна сразу.
Ради этого хеш-функции и придуманы. Американский стандарт, в котором описана SHA-256, прямо называет их назначение — обнаруживать, не изменилось ли сообщение с того момента, как для него посчитали отпечаток197.198 Стандарт выпустил Национальный институт стандартов и технологий США в августе 2002 года199, и эта дата полезна против распространённого мифа, будто Накамото изобрёл всю криптографию биткоина. Хеш-функцию он взял из готового правительственного стандарта шестилетней давности200. Сцеплять отпечатки в цепочку до него предлагали исследователи Хабер и Сторнетта, на чьи работы он сам ссылается201, а дерево отпечатков, о котором речь пойдёт ниже, описал Ральф Меркл ещё в конце 1970-х202. Сам Накамото соединил эти готовые детали в одну конструкцию, её мы и будем собирать.
С хешем связан и второй миф, будто блокчейн «зашифрован». Хеш — не шифр. Расшифровывать в нём нечего, страница из отпечатка не восстанавливается вовсе203. Сами записи в тетрадке биткоина тоже никто не шифрует. Они подписаны и лежат открыто, и к последствиям этого мы придём, когда будем говорить о следах204.
Проверить отпечаток легко (положил страницу, получил строку, сравнил). Подобрать страницу под нужный отпечаток трудно, потому что остаётся только перебирать варианты205. В «Mastering Bitcoin» есть учебный пример. К фразе «Hello, World!» дописывают число и перебирают его, пока хеш не начнётся с нуля, и подходит число 32206. Каждый знак отпечатка может быть любым из 16 символов, поэтому отпечаток с одним нулём в начале выпадает в среднем раз на 16 попыток, с двумя нулями — раз на 256, с тремя — раз на 4096 (это чистая арифметика вероятностей). Каждый новый ноль удлиняет перебор ещё в 16 раз, а проверку оставляет такой же мгновенной, и на этой разнице будет держаться цена, которую мы вскоре назначим каждой новой странице.
Страницы, сшитые отпечатками
Вернёмся к пекарю, который хочет тихо поправить старую строчку в своей копии. Добавим в посёлок шестое правило: записи собирают в страницы, и в начале каждой новой страницы пишут отпечаток предыдущей.
Пекарь исправляет строчку на странице 100. Отпечаток страницы 100 от этого меняется, а старый отпечаток записан в начале страницы 101 и больше с ней не сходится. Если пекарь перепишет и начало страницы 101, изменится уже её отпечаток, записанный на странице 102, и так до последней страницы. Любая правка задним числом тянет за собой всю тетрадку до конца. Соседям при этом не нужно перечитывать все страницы, чтобы заметить подлог, им достаточно сравнить отпечаток последней страницы у себя и у пекаря.
Такой двор, со своей копией и привычкой проверять каждую новую страницу, в сети биткоина называется узлом. Узел — это компьютер, на котором лежит полная копия тетрадки и работает программа, проверяющая всё, что в неё добавляют.
Накамото описал цепочку отпечатков в третьем разделе статьи 2008 года и описал её языком меток времени (так называют запись, которая удостоверяет, что документ существовал к определённому моменту). Каждая метка, пишет он, включает в свой хеш предыдущую, так образуется цепочка, и каждая новая метка укрепляет все, что были до неё207.208 Там же он предлагает широко публиковать хеш, например в газете209. Отпечаток, напечатанный в газете, уже нельзя тихо подменить, а вместе с ним нельзя подменить и страницу, которой он принадлежит.
Цепочка отпечатков доказывает порядок. Страница 101 не могла появиться раньше страницы 100, потому что несёт её отпечаток, а значит, страница 100 существовала к тому моменту, когда писали 101-ю. С другого конца цепочку закрывает первый блок биткоина. В нём, как мы видели в первой главе, записан заголовок The Times от 3 января 2009 года, и поэтому блок не мог появиться раньше этой даты210. Каждый следующий блок доказывает, что все предыдущие уже были, и между двумя концами лежит вся история тетрадки, в которой страницы нельзя переставить.
Страницы биткоина, как мы договорились в первой главе, называются блоками, а тетрадь из сшитых отпечатками блоков — цепочкой блоков, по-английски блокчейном. Собирает очередной блок и предлагает его сети майнер (так называют участника, который тратит на это вычислительную работу; в чём она состоит, покажет седьмое правило). У каждого блока есть заголовок, и он совсем маленький, 80 байт и шесть полей211:
версия правил;
хеш заголовка предыдущего блока, то есть отпечаток прошлой страницы;
корень дерева Меркла, общий отпечаток всех записей этой страницы (о нём чуть ниже);
время, которое указал сам майнер; узлы сверяют его только грубо, с допуском примерно в пару часов212;
закодированная цель сложности, то есть порог, под который должен попасть отпечаток страницы;
число nonce, которое майнеры перебирают.
Второе поле и есть шов между страницами. (Хеш заголовка в биткоине считают дважды, SHA-256 от результата SHA-256213, но механизма это не меняет.)
Четвёртое поле вызывает законный вопрос. Цепочку только что называли цепочкой меток времени, а время в заголовке ставит сам майнер и может ошибиться или слукавить. В первой главе мы видели, почему нельзя опираться на чужую отметку времени. Здесь опираться на неё и не приходится, потому что порядок страниц доказывают отпечатки. Страница, которая несёт отпечаток предыдущей, написана после неё, что бы ни стояло в поле времени. От поля времени требуется только не уходить далеко от настоящего, и на это хватает грубой сверки, которую делает каждый узел214.
Самих записей в заголовке нет, там только один отпечаток на все сразу, и получают его хитрее, чем простым хешем страницы. Записи (в биткоине их называют транзакциями) разбивают на пары, каждую пару хешируют, получившиеся хеши снова разбивают на пары и снова хешируют, пока не останется один215.216 Получается перевёрнутое дерево, у которого внизу листья-транзакции, наверху один корень, и в заголовок попадает только корень217.

Рисунок 2.1. Дерево Меркла
Зачем такие сложности? Дерево позволяет доказать, что конкретная транзакция лежит в конкретном блоке, не показывая весь блок, потому что для этого хватает ветки хешей от её листа до корня. Каждый уровень дерева вдвое уже предыдущего, и в блоке из нескольких тысяч транзакций такая ветка состоит примерно из дюжины отпечатков (это прямо следует из того, как строится дерево218). Накамото извлёк из этого две выгоды. Старые, уже потраченные транзакции можно выбрасывать с диска, не ломая хеш блока219. А пользователь, которому не нужна вся тетрадка, может хранить одни заголовки. К таким «лёгким» проверяющим мы вернёмся, когда дойдём до кошелька.
Отпечаток каждого блока зависит от корня дерева, корень зависит от каждой транзакции внутри, а заголовок следующего блока хранит отпечаток предыдущего220. Поменяйте одну цифру в одной транзакции тысячу блоков назад, и по цепи изменятся лист, ветка, корень, заголовок, отпечаток блока, заголовок следующего блока и так далее до сегодняшнего дня.

Рисунок 2.2. Цепочка из трёх блоков
У этой защиты есть слабое место. Хешировать дёшево. Если пекарь готов переписать все страницы от сотой до последней, его домашний компьютер пересчитает отпечатки за секунды, и получится новая тетрадка, внутри себя совершенно согласованная. Отпечатки защищают от незаметной правки одной страницы, но того, кто переделал всю тетрадку заново, они не остановят.
Недостающая деталь знакома по первой главе. Это «цена за запись» из Hashcash Адама Бэка, на который Накамото прямо ссылается221. Добавим седьмое правило: страницу принимают, только если её отпечаток начинается с заданного числа нулей. Отпечаток нельзя подогнать иначе как перебором222, поэтому майнер меняет в заголовке число nonce и хеширует заголовок снова и снова, пока не выпадет отпечаток с нужным числом нулей223. (Точная формулировка правила — хеш, прочитанный как число, должен быть не больше порога из поля цели сложности, но «начинается с нулей» — слова самого Накамото224.) Эта работа и называется доказательством работы, а перебор ради неё — майнингом.
За труд майнер получает плату и записывает её себе сам. Первой в каждом блоке идёт его особая транзакция225, которая выдаёт ему награду за блок и все комиссии из транзакций блока226. Размер награды задают правила, и каждый узел его проверяет. В первые годы награда составляла 50 BTC227, а каждые 210 000 блоков она уменьшается вдвое228. Других путей для новых монет в тетрадке правила не оставляют. (Расходы майнеров и урезание награды оставим до следующей главы.)
На каждую страницу теперь потрачен труд, и проверить это любой может одним расчётом. Отсюда Накамото вывел главное следствие. Когда на блок затрачена работа, пишет он, его нельзя изменить, не переделав её, а поскольку после него в цепочку добавлены новые блоки, придётся переделать и все последующие229.230 Пересчитать отпечатки пекарю теперь мало. Ему нужно заново выполнить всю работу от сотой страницы до последней и успеть это быстрее, чем весь остальной посёлок добавляет новые страницы в честную тетрадку.
Чем глубже страница лежит в тетрадке, тем больше работы накоплено над ней и тем дороже её подделать. В разделе 11 статьи Накамото посчитал, что шанс отстающего атакующего догнать честную цепочку падает экспоненциально с числом блоков, которые ему нужно наверстать231. Для того, кто получает платёж, это значит, что свежая запись, над которой ещё нет ни одной страницы, защищена хуже всего, а запись, над которой выросли десятки страниц, почти так же прочна, как вся тетрадка под ней.
Хеш самого первого блока биткоина, от 3 января 2009 года, начинается с 10 нулей. Хеш блока номер 968 721, найденного 26 сентября 2026 года, начинается с 20 нулей232.233 Проверить это может любой, кто откроет обозреватель блоков, то есть сайт, который показывает тетрадку биткоина в читаемом виде. Нули показывают, что перебор подорожал, но меряют рост грубо. Для первой страницы правило требовало восьми нулей, и десять ей выпали случайно, а сегодня правило требует почти двадцати. Точную меру даёт показатель сложности, который вычисляется из цели сложности в заголовке. У первого блока он равен единице, у блока 968 721 — около 133 трлн234.235 Во столько же раз больше попыток в среднем нужно теперь на одну страницу и во столько же раз дороже её подделать.
Время на страницу задаёт само правило. Целевой интервал между блоками биткоина — 10 минут, и каждые 2016 блоков, то есть примерно раз в две недели, все узлы пересчитывают сложность, чтобы удержать этот темп236. Отдельные страницы приходят то через несколько секунд после предыдущей, то через полчаса, и десять минут получаются только в среднем237.238 Размер страницы тоже ограничен правилами239, и на момент работы над книгой страницы заполнялись почти до края. Примерно раз в десять минут в тетрадку вшивают страницу около полутора мегабайт и нескольких тысяч строчек240.241
Дворов в посёлке сто, все их знают наперечёт, и любой может обойти соседей и пересчитать. Точного числа узлов биткоина не знает никто. Независимые счётчики видят только узлы, которые принимают входящие соединения (в конце сентября 2026 года их насчитали около 25 тысяч242), а на деле узлов больше, и надёжной оценки, насколько больше, у меня нет.243 Разрешения стать узлом тоже никто не выдаёт. Поэтому правило, по которому участники приходят к одной версии тетрадки, не может опираться на подсчёт голосов по головам, ведь тот, кто считает головы, должен знать, сколько их. Накамото обошёл эту трудность другим способом, и к нему мы придём дальше.
По статье Накамото, сеть работает так: новые транзакции рассылаются всем узлам; майнеры собирают их в блок и ищут для него доказательство работы; найденный блок рассылается всем; узел принимает блок, только если все транзакции в нём действительны и не потрачены раньше, и выражает согласие тем, что начинает собирать следующий блок поверх отпечатка принятого244.245
Узлы не голосуют, каждый проверяет сам.
Блок с приписанными из воздуха монетами честный узел отбросит, сколько бы работы на него ни потратили, потому что сверяет с правилами каждую транзакцию в нём246. Этими же проверками ловится двойная трата, из-за которой в первой главе понадобился хранитель. Если строчка пекаря для доярки уже вшита в тетрадку, попытка отдать то же право лесорубу не пройдёт ни у одного честного узла247. Открытыми остаются вопросы о правиле согласия: что делать, если две честные страницы найдены почти одновременно и узлы разошлись в том, какая была первой, и можно ли переписать тетрадку, собрав больше половины всей вычислительной мощности сети.
Кто вправе потратить строчку
Половина устройства собрана. Страницы сшиты отпечатками, каждая новая страница стоит работы, и каждый узел сам проверяет каждую запись. Вместе это и делает тайную правку задним числом практически невозможной248.
Отпечатки защищают тетрадку от переписывания, но ничего не говорят о том, кому принадлежит строчка. В посёлке с хранителем это решал хранитель. Пекарь приходил сам, и хранитель узнавал его в лицо. В тетрадке без хранителя лица нет. Есть только числа.



