Биткоин — это время
“Часы ночные объявили мне : "Ни верно время, ни неверно. Время – вне…”
– Роберт Фрост, Знакомство с ночью (1928)
Время – деньги; по крайней мере так гласит поговорка. Соответственно, можно предположить, что деньги – это также время: представление совокупной экономической энергии, накопленной человечеством. Однако связь между временем и деньгами более запутанна, чем может показаться на первый взгляд. Если создание денег не требует времени, они не будут работать в качестве денег ни хорошо, ни достаточно долго. Более того, как мы вскоре убедимся, учет вещей в информационной сфере всегда подразумевает учет времени.
Как только деньги становятся цифровыми, нам приходится договариваться о самом определении времени, и в этом кроется вся проблема. Вы можете сказать, что определить время так же просто, как взглянуть на неподалеку висящие часы, и в случае с повседневными задачами вы будете правы. Но когда дело доходит до синхронизации состояния глобальной, состязательной, распределенной сети, определение времени становится почти неразрешимой проблемой. Как определить время, если часам нельзя доверять? Как создать концепцию единого времени, если ваша система охватывает всю галактику? Как измерить время в безвременном царстве? И что вообще такое время?
Чтобы ответить на эти вопросы, нам придется подробнее рассмотреть саму концепцию времени и то, как Биткоин создает свое собственное время: время блока, более известное как высота блока. Мы рассмотрим, почему проблема учета времени тесно связана с ведением записей, почему в децентрализованной системе не существует абсолютного времени, и как Биткоин использует причинность и непредсказуемость для создания собственного восприятия настоящего.
“Время по-прежнему остается для нас великой загадкой. Оно не более чем концепция; мы не знаем, существует ли оно вообще…”
– Клиффорд Д. Саймак, Планета Шекспира (1976)
Приборы учета времени не раз преображали цивилизации. Как отметил Льюис Мамфорд в 1934 году: "Часы, а не паровой двигатель, являются ключевой машиной современной индустриальной эпохи". И вновь хронометрический прибор преобразует нашу цивилизацию: часы, а не компьютер, являются ключевым прибором современной информационной эпохи. И эти часы – Биткоин.
Ведя учет
“Пусть ребенок учится считать предметы, получая таким образом представление о числе. Для целей счета эти вещи считаются одинаковыми, и это могут быть как отдельные предметы, так и их группы”
– Дэвид Юджин Смит, Преподавание элементарной математики (1900)
В широком смысле существует два способа вести учет вещей: физические токены и бухгалтерские книги / реестры. Вы можете либо напрямую использовать артефакты реального мира, например, дать кому-то морскую ракушку, монету или какой-то другой осязаемый предмет, либо воспроизвести текущее состояние, записав произошедшее на листе бумаги.
Представьте, что вы пастух и хотите убедиться, что все ваше стадо овец вернулось домой. Вы можете надеть на каждую овцу ошейник, и как только овца вернется домой, вы просто снимете ошейник и повесите его в сарае. Если у вас есть по вешалке для каждого ошейника, вы будете знать, что все овцы благополучно вернулись, как только все вешалки окажутся заняты. Конечно, вы также можете пересчитать их и вести список. Однако вам придется составлять новый список каждый раз, когда вы начинаете считать, а также следить за тем, чтобы не пересчитать одну овцу дважды (или не посчитать одну из них вообще).
Деньги – это, по сути, инструмент для отслеживания того, кто кому сколько должен. В широком смысле, все, что мы до сих пор использовали в качестве денег, относится к двум категориям: физические артефакты и информационные списки. Или, говоря более общепринятым языком, токены и реестры.
Важно осознавать разницу, присущую этим категориям, поэтому позвольте мне на нее указать: Первый способ – физический токен – непосредственно представляет состояние вещей. Второй – реестр – косвенно отражает состояние вещей. Каждый из них имеет свои преимущества и недостатки. Например, токены являются физическими и распределенными; реестры – информационными и централизованными. Токены по своей природе не требуют доверия, а реестры без него были невозможны.
В цифровой сфере – как бы интенсивно маркетинговые гуру ни пытались убедить вас в обратном – мы можем использовать только реестры. Это информационная сфера, не физическая. Даже если вы называете определенный вид информации "токеном", это все равно податливая часть информации, записанная на жестком диске или другом носителе, который может хранить информацию, фактически превращая ее в информационную запись.
“Реестрообразная” природа всей цифровой информации является первопричиной проблемы двойного расходования. Информация никогда не отражает состояние окружающего мира напрямую. Кроме того, перемещение информации подразумевает копирование. Информация хранится в определенном месте, и чтобы "переместить" ее, нужно скопировать ее в другое место и стереть в месте ее возникновения. В физической сфере эта проблема отсутствует. В физической сфере мы можем физически перемещать вещи из точки А в точку Б. Информационная сфера не обладает этим свойством. Если вы хотите "переместить" информацию из списка А в список Б, вы должны скопировать ее из А в Б. Другого способа нет.
Другой подход к пониманию данной проблемы лежит в понимании уникальности. Физические токены – это уникальные наборы атомов, совокупность которых не может быть легко воспроизведена. Информация не обладает таким свойством. Если вы можете прочитать информацию, вы также можете в точности ее скопировать. Практически говоря, из этого следует, что физические токены уникальны, а цифровые – нет. Я бы даже утверждал, что "цифровой токен" – это неверный термин. Токен может представлять собой секретную информацию, но он никогда не будет представлять уникальную, единственную, некопируемую информацию.
Это различие в свойствах показывает, что на самом деле не существует способа "переместить" информацию. Невозможно передать цифровой токен так же, как вы передали бы физический, поскольку вы никогда не можете быть уверены, что первоначальный владелец уничтожил переданную информацию со своей стороны. Цифровые токены, как и любая информация, могут только распространяться, подобно идее.
“Если у вас есть яблоко и у меня есть яблоко, и мы обменяемся яблоками - в итоге у каждого из нас будет только по одному яблоку. Но если у каждого из нас есть идея, и мы обменяемся идеями – в итоге у каждого из нас будет по две идеи".
– Чарльз Ф. Брэннан (1949)
Физические токены – то, что мы называем физическими активами на предъявителя или "наличными" – свободны от этой дилеммы. В реальном мире, если вы передадите мне монету, вы перестанете ею обладать. Не существует магического дублирования монеты, и единственный способ отдать ее кому-либо – это физически передать ее. Законы физики не позволяют вам потратить монету дважды.
Хотя двойные траты и существуют в нецифровой сфере – вспоминается Джордж Паркер, мошенник, прославившийся "двойными тратами" на Бруклинском мосту и других достопримечательностях, – для этого требуется не только изощренный обман, но и доверчивые покупатели. В цифровой сфере дело обстоит иначе.
В цифровой сфере, поскольку мы всегда имеем дело с информацией, двойная трата средств является насущной проблемой. Как знает каждый, кто когда-либо копировал файл или использовал связку копировать-вставить, информация – это то, что можно прекрасно скопировать, и она не привязана к носителю, на котором хранится. Например, если у вас есть цифровая фотография, вы можете скопировать ее миллион раз, сохранить несколько копий на USB-накопителе и отправить тысячам разных людей. Идеальные копии возможны, потому что информация позволяет безупречно исправлять ошибки, что исключает деградацию. И в довершение всего, дублирование практически не требует затрат и оригинал (чаще всего) невозможно определить.
Еще раз: когда речь идет об информации, все что у нас есть – это копирование. Просто не существует способа перемещения цифровой информации из точки А в точку Б. Информация всегда копируется из точки А в точку Б, и если процесс копирования прошел успешно, оригинальная копия точки А удаляется. Вот почему решение проблемы двойной траты так сложно. В отсутствие центрального органа власти нет способа переместить что-либо из А в Б, не нуждаясь в доверии. Вы всегда должны верить, что оригинал будет удален. Естественным побочным эффектом является то, что, когда речь идет о цифровой информации, невозможно определить, сколько копий существует и где эти копии могут находиться.
Поэтому использование цифровых "токенов" в качестве денег не может и никогда не будет работать. Поскольку надежность токенов обусловлена тем, что их трудно воспроизвести в силу их уникальной физической конструкции, в цифровой сфере это преимущество исчезает. В цифровой сфере токенам нельзя доверять. В результате присущих информации свойств единственным жизнеспособным форматом цифровых денег является не токен, а реестр, что подводит нас к проблеме времени.
Токены, в отличие от реестров, не подвластны времени
“Ибо видимое временно, а невидимое вечно”
– Апостол Павел, Послание Коринфянам 4:18б
Когда речь идет о физических токенах, время, затрачиваемое на транзакцию не имеет значения. В вашем кармане либо есть монеты, либо нет; вы либо можете их потратить, либо не можете. Сам акт обладания является единственным условием для траты. Об остальном позаботятся законы природы. В этом смысле физические токены не требуют доверия и неподвластны времени.
Когда речь идет о реестрах, физическое владение отходит на второй план. Тот, кто контролирует реестр, должен следить за тем, чтобы все соответствовало действительности. То, что в иных случаях обеспечивается законами физики (а именно: нельзя тратить деньги, которых у вас нет, и нельзя тратить деньги, которые вы уже потратили ранее), теперь должно быть обеспечено созданными человеком правилами. Именно эти правила, а не законы физики, определяют порядок функционирования и ведения реестра.
Переход от физических законов к прописанным человеком правилам – вот в чем вся суть. Рукотворные правила можно менять и нарушать, а законы физики не особо. Например, вы не можете просто "придумать" физическую золотую монету. Вы должны добыть ее из недр земли. Однако вы можете без проблем “создать” золотую монету на бумаге (точнее, создать видимость ее существования). Для этого вы просто добавляете запись в реестр и пополняете собственный баланс на пару монет. Или, в случае центральных банков, просто добавляете пару триллионов несколькими нажатиями клавиш компьютера. Модные финансисты называют это "перезакладыванием", "фракционным резервированием" или "количественным смягчением", но пусть эти термины не вводят вас в заблуждение, это все означает одно и то же: “создание денег”.
Для того, чтобы быть уверенным в честности реестров и тех, кто ими манипулирует, необходимы регулярные независимые аудиты. Возможность отчитаться за каждую запись в реестре – не роскошь. Аудиторы должны иметь возможность просматривать реестры для того, чтобы убедиться, что записи правдивы и исправно функционируют. Без надежных временны́х меток проверка внутренней согласованности реестра невозможна. Механизм установления однозначного порядка необходим.
Без абсолютного ощущения времени невозможно установить определенный порядок транзакций. А без определенного порядка транзакций невозможно следовать правилам реестра. Как еще можно убедиться сколько у вас на самом деле денег? Как еще можно убедиться, что все в порядке?
Различие между токенами и реестрами подчеркивает необходимость учета времени. В физической сфере монеты – это неподвластные времени артефакты, которые можно обменивать без необходимости тщательной проверки. В цифровой сфере чеканка монет требует использования временны́х меток.
Централизованная чеканка монет
“Время – великий гравер или ластик”
– Яхья Лабабиди (р. 1973)
Общий способ решения проблемы двойной траты – проблемы обеспечения того, чтобы цифровой перевод происходил только один раз – состоит в наличии централизованного списка транзакций. Когда у вас есть централизованный список транзакций, у вас есть единый реестр, который может выступать в качестве единственного источника истины. Решить проблему двойных трат так же просто, как просмотреть список и убедиться, что все сходится. Именно так PayPal, Venmo, Alipay и все банки мира, включая центральные банки, решают проблему двойной траты: через центральный орган.
“Проблема, разумеется, в том, что получатель не может определить, сколько раз бывший владелец потратил эту монету. Традиционное решение заключается в проверке центральным доверенным лицом (монетным двором или эмитентом) каждой транзакции. [...] Недостаток этого подхода в том, что от компании-эмитента зависит судьба всей денежной системы, так как она подобно банку контролирует каждую проходящую через нее транзакцию”
– Сатоши Накамото (2009)
Стоит отметить, что Сатоши не удалось сделать информацию некопируемой. Каждая составляющая Биткоина – его исходный код, реестр, ваш приватный ключ – может быть скопирована. Все это может быть продублировано и подделано. Однако Сатоши удалось создать систему, которая делает копии, не следующие правилам, совершенно бесполезными. Сеть Биткоин безостановочно кружится в замысловатом танце, чтобы определить, какие копии полезны, а какие нет, и именно этот танец привносит редкость в цифровую сферу. И как в случае с любым танцем, для определения ритма необходим прибор, измеряющий время.
Даже централизованный реестр может решить проблему двойного расходования средств только в том случае, если он обладает последовательным способом отслеживания времени. Всегда нужно знать, кто кому сколько дал и, самое главное, когда. В сфере информации не существует чеканки монет без использования временны́х меток.
“Следует подчеркнуть, что невозможность связать события с точками во времени в распределенных системах была нерешенной проблемой, которая исключала возможность создания децентрализованного реестра до тех пор, пока Сатоши Накамото не придумал решение”
– Григорий Трубецкой (2018)
Децентрализованное время
“Время приводит все в движение”
– Эсхил (525 г. до н. э. - 456 г. до н. э.)
Время и порядок имеют очень тесную взаимосвязь. Как отметил Лесли Лэмпорт в своей работе "Время, часы и упорядочение событий в распределенной системе" от 1978 года, "Понятие времени является фундаментальным для нашего образа мышления. Оно вытекает из более базового понятия порядка, в котором происходят события". В отсутствие центральной точки координации, кажущиеся интуитивными понятия "до", "после" и "одновременно" разрушаются. По словам Лэмпорта: "понятие ‘происходит раньше’ определяет неизменное частичное упорядочивание событий в распределенной многопроцессной системе".
Сформулируем иначе: Кто должен отвечать за время, если никого нельзя назначить ответственным? Как можно убедиться в надежности часов, если нет центральной системы отсчета?
Вы можете подумать, что решить эту проблему легко, потому что каждый может просто использовать свои собственные часы. Это работает только в том случае, если часы каждого точны, и, что более важно, каждый играет по правилам. В состязательной системе полагаться на индивидуальные часы сродни катастрофе. И, в силу относительности, этот подход не отличается стабильностью в пространстве.
В качестве мысленного эксперимента представьте, какими способами можно обмануть систему, если каждый будет сам следить за временем. Вы могли бы сделать вид, что транзакция, которую вы отправляете сейчас, на самом деле вчерашняя – она просто задержалась по какой-то причине – таким образом, у вас останутся все деньги, которые вы потратили сегодня. Из-за асинхронной связи, присущей каждой децентрализованной системе, этот сценарий – не просто теоретический эксперимент. Сообщения действительно задерживаются, временны́е метки неточны, а благодаря релятивистским эффектам и естественному ограничению скорости нашей Вселенной, в отсутствие центрального органа или наблюдателя определить порядок вещей не так-то просто.
“Кто там? Тук-тук”
– Асинхронная шутка
Чтобы лучше проиллюстрировать сложность этой проблемы, давайте рассмотрим конкретный пример. Представьте, что у вас и вашего делового партнера есть доступ к банковскому счету вашей компании. Вы ведете бизнес по всему миру, поэтому ваш банковский счет находится в Швейцарии, вы – в Нью-Йорке, а ваш деловой партнер – в Сиднее. Для вас сегодня третье января, и вы наслаждаетесь прекрасным воскресным вечером в своем отеле. Для вашего партнера уже утро понедельника, поэтому он решает купить завтрак, используя дебетовую карту вашего общего банковского счета. Стоимость – $27. Доступный баланс – $615. Местное время – 8:21 утра.
В это же время вы собираетесь оплатить свое пребывание в отеле с помощью другой дебетовой карты, привязанной к тому же банковскому счету. Стоимость составляет $599. Доступный баланс – $615. Местное время – 5:21 вечера.
И вот случается так, что в один и тот же момент вы оба проводите оплату картой. Что произойдет? (Уважаемые физики, прошу извинить меня за использование слова "в один и тот же момент" – мы пока проигнорируем релятивистские эффекты и тот факт, что в нашей Вселенной абсолютного времени не существует. Мы также будем игнорировать тот факт, что концепции синхронных событий на самом деле не существует. Биткоин и без того достаточно сложен!).
Центральный реестр в вашем банке, вероятно, получит одну транзакцию раньше, чем другую, так что одному из вас повезет, а другому – не очень. Если транзакции придут в одно и то же время – скажем, в одну и ту же миллисекунду – банк должен будет решить, кто потратит деньги.
А что бы произошло, если бы не было банка? Кто решит, кому первым потратить деньги? Что если бы это были не только вы двое, а сотни или даже тысячи человек? Что если бы вы не доверяли этим людям? Что если некоторые из этих людей пытаются жульничать, например, переводят часы назад, чтобы казалось, что они потратили деньги на пару минут раньше?
“Для установления канонического порядка и обеспечения уникальной истории в отсутствие какого-либо центрального координатора необходим инструмент, связанный со временем".
– Джакомо Зукко, Становление Биткоина (2019)
Именно из-за этой проблемы все предыдущие попытки создания цифровых денег требовали централизованного реестра. Вы всегда должны были доверять кому-то, чтобы правильно определить порядок вещей. Требовался централизованный орган для ведения учета времени.
Биткоин решает эту проблему, заново изобретая само время. Он говорит секундам "нет", а блокам "да".
Сохраняя время, блок за блоком
"О Время, ты наставник всех людей,
Учи меня злодея проклинать;
Пускай страшится тени он своей
И сам, сам алчет жизнь свою прервать;
Рукам порочным должно проливать”
– Уильям Шекспир, "Обесчещенная Лукреция" (1594)
Все часы зависят от периодических процессов, которые мы иногда называем "тиканьем". Привычное "тик-так" дедушкиных часов, по сути, то же самое, что и молекулярно-атомное жужжание наших современных кварцевых и цезиевых часов. Что-то колеблется или осциллирует, и мы просто считаем эти колебания до тех пор, пока они не превратятся в минуту или секунду.
В больших маятниковых часах эти колебания длинные и их легко заметить. Для маленьких и более специализированных часов требуется специальное оборудование. Частота часов (как часто они тикают) зависит от сферы их использования.
Частота большинства часов фиксирована. В конце концов, мы хотим знать точное время. Однако есть часы с переменной частотой. Например, метроном имеет переменную частоту, которую можно установить перед тем, как заставить его тикать. В то время как после установления темпа, метроном сохраняет его постоянным, время Биткоина меняется с каждым тиком, потому что его внутренний механизм вероятностный. Цель, однако, неизменна: поддерживать музыку, чтобы танец продолжался.
Тот факт, что Биткоин – это часы, скрывается на виду у каждого. Сатоши и вправду указывал, что сама сеть Биткоин в целом действует как часы, или, по его словам, как распределенный сервер временны́х меток.
В данной работе мы предлагаем решение проблемы двойной траты, основанное на распределенном одноранговом сервере меток времени, который своей вычислительной мощностью подтверждает хронологический порядок транзакций.
– Сатоши Накамото (2009)
То, что проблема временнóй метки была основной проблемой, подлежащей решению, становится очевидным при просмотре ссылок, следующих за техническим описанием Биткоина. Из восьми ссылок три касаются временны́х меток:
Как отметили Хабер и Сторнетта в 1991 году, цифровая временнáя метка – это вычислительно-практические процедуры, которые делают невозможным для пользователя (или противника, если на то пошло) ни обратную, ни прямую датировку цифрового документа. В отличие от физических документов, цифровые документы легко подделать, причем изменения не обязательно оставляют какие-либо следы на самом физическом носителе. В цифровой сфере подделки и манипуляции могут достичь совершенства.
Податливая природа информации делает проставление временны́х меток на цифровых документах сложным и изощренным процессом. Наивные решения не работают. Возьмем, к примеру, текстовый документ. Вы не можете просто добавить дату в конец документа, поскольку каждый, включая вас самих, может просто изменить дату в будущем. Вы также можете выдумать любую дату.
Время – это причинно-следственная цепь
“В крайнем случае, мир можно рассматривать сугубо как связи и ничего более”.
– Тим Бернерс-Ли, Weaving the Web (1999)
Придумывание дат – глобальная проблема, даже в нецифровой сфере. То, что в мире похищений известно как "аутентификация по газете", является общим решением проблемы произвольных временны́х меток.
Это работает, потому что газету трудно подделать, а ее подлинность легко проверить. Ее трудно подделать, потому что сегодняшняя первая полоса относится к вчерашним событиям, событиям, которые похититель не смог бы предсказать, если бы фотография была недельной давности. По косвенным признакам этих событий фотография является доказательством того, что заложник был жив в день выхода газеты.
Этот метод подчеркивает одно из ключевых понятий, когда речь идет о времени: причинность. Стрела времени описывает причинно-следственную связь событий. Нет причинности – нет времени. Именно в силу причинности криптографические хеш-функции так важны, когда речь идет о временнóй маркировке документов в киберпространстве: они вводят причинно-следственную связь. Поскольку практически невозможно создать правильный криптографический хеш, не имея документа, между документом и хешем возникает причинно-следственная связь: сначала существовали данные, а хеш был создан позже. Другими словами: без вычислительной необратимости односторонних функций в киберпространстве не было бы причинно-следственной связи.
Имея в распоряжении этот причинно-следственный строительный блок, можно придумывать схемы, создающие цепь событий, причинно связывая А с Б с В и так далее. В этом смысле безопасная цифровая временнáя метка переносит нас из безвременного пространства в царство цифровой череды событий.
“Причинность фиксирует события во времени. Если событие было обусловлено определенными предшествующими событиями и определяет конкретные последующие события, то событие надежно закрепляется в истории”.
– Байер, Хабер, Сторнетта (1992)
Само собой разумеется, что причинно-следственная связь имеет огромное значение, когда речь идет об экономических расчетах. А поскольку реестр – это не что иное, как воплощение экономических расчетов множества сотрудничающих участников, причинно-следственная связь необходима для каждого реестра.
“Чтобы избавить схему от посредника, участникам необходимо открыто публиковать транзакции, а также уметь приходить к согласию относительно единого порядка их следования [...] Предлагаемое нами решение начинается с сервера меток времени".
– Сатоши Накамото (2009)
Многие удивятся, узнав, что все части головоломки, обеспечивающие работу Биткоина, уже существовали. Еще в 1991 году Хабер и Сторнетта представили две схемы, которые делают "создание ложных временны́х меток сложным или невозможным". Первая схема основана на доверенной третьей стороне; вторая, более сложная схема "распределенного доверия" – нет. Авторы даже определили проблемы, присущие доверию к причинно-следственной цепи событий, и то, что потребуется для переписывания истории. По их словам, "единственный возможный способ фальсификации – подготовить поддельную цепочку временны́х меток, достаточно длинную, чтобы измотать самого дотошного участника сети". Аналогичный вектор атаки существует сегодня в Биткоине в виде атаки 51%.
Год спустя Байер, Хабер и Сторнетта развили свою предшествующую работу и предложили использовать деревья вместо простых связанных списков для сопоставления событий. То, что нам сегодня знакомо как деревья Меркла, является ничем иным, как эффективными структурами данных для детерминированного создания хеша из нескольких хешей. Для временнóй метки это означает, что вы можете эффективно объединить несколько событий в один "тик". В той же статье авторы предполагают, что модель распределенного доверия, представленная в 1991 году, может быть улучшена путем проведения повторяющегося "всемирного турнира" для определения одного "победителя", который широко публикует полученный хеш где-нибудь в открытом доступе, например, в газете. Ничего не напоминает?
Как мы вскоре сможем убедиться, газеты – это еще и отличный способ задуматься о второй составляющей времени – непредсказуемости.
Причинность и непредсказуемость
“Время – это не реальность [hupostasis], а понятие [noêma] или мера [metron]”.
– Антифон Софист, "Об истине" (III век н.э.)
Хотя причинность необходима, одной ее недостаточно. Течение времени невозможно без непредсказуемости. В физической сфере мы наблюдаем естественные процессы, описывающие течение времени. Мы наблюдаем общее увеличение энтропии и называем это стрелой времени. Несмотря на то, что законы природы в большинстве случаев не обращают внимания на направление этой стрелы, некоторые вещи практически невозможно отменить. Как говорится, нельзя засунуть зубную пасту обратно в тюбик.
Точно так же для установления стрелы времени в цифровой сфере необходимы функции, увеличивающие энтропию. Подобно тому, как практически невозможно засунуть зубную пасту обратно в тюбик, так практически невозможно обратить хеш SHA256 или криптографическую подпись.
Без этого увеличения энтропии мы бы болтались туда-сюда во времени. Последовательность чисел Фибоначчи, например, является причинно-следственной, но не обладает энтропией. Каждое число в этой последовательности обусловлено двумя предшествующими числами. В этом смысле это причинно-следственная цепь. Однако она не пригодна для определения времени, поскольку полностью предсказуема. Точно так же, как похититель не может просто сфотографировать жертву на фоне календаря, показывающего текущую дату, мы не можем использовать предсказуемые процессы в качестве доказательства времени. Нам всегда приходится полагаться на что-то, что нельзя предсказать заранее, например, на первую полосу сегодняшней газеты.
Биткоин опирается на два источника непредсказуемости: транзакции и доказательство проделанной работы (Proof of Work). Аналогично тому как никто не может с точностью предсказать содержание завтрашней газеты, никто не может предсказать, как будет выглядеть следующий блок Биткоина. Вы не можете предугадать, какие транзакции будут включены, потому что вы не можете предсказать, какие транзакции будут транслироваться в будущем. И, что еще более важно, вы не можете предсказать, кто найдет решение текущей головоломки Proof of Work и каким будет это решение.
Однако, в отличие от газеты похитителя, Proof of Work физически связан с произошедшим. Это не просто запись события, это само событие. Именно вероятностная непосредственность доказательства работы устраняет доверие из уравнения. Единственный способ найти достоверное доказательство работы – это путем многочисленных догадок, где на каждую догадку уходит немного времени. Вероятностная сумма этих догадок и составляет временнýю цепочку Биткоина.
Используя причинность хеш-цепочек и непредсказуемость Proof of Work, сеть Биткоин обеспечивает механизм для создания неоспоримой истории событий, свидетелем которых она стала. Без причинно-следственной связи невозможно определить, что было до и что произошло после. Без непредсказуемости причинность бессмысленна.
На то, что интуитивно понимает каждый похититель, с точностью указали Байер, Хабер и Сторнетта в 1992 году: "Чтобы установить, что документ был создан после определенного момента времени, необходимо сообщить о событиях, которые невозможно было предсказать до того, как они произошли".
Именно сочетание причинности и непредсказуемости позволяет создать искусственное "сейчас" в цифровом пространстве, которое в остальном неподвластно времени. Как отмечают Байер, Хабер и Сторнетта в своей работе 1991 года: "последовательность клиентов, запрашивающих временны́е метки, а также хеши, которые они предоставляют, не могут быть известны заранее. Поэтому если мы включаем в подписанный сертификат биты из предыдущей последовательности клиентских запросов, то мы знаем, что временнáя метка появилась после этих запросов. [...] Но требование включения в сертификат битов из предыдущих документов также может быть использовано для решения проблемы ограничения времени в другом направлении, поскольку компания, устанавливающая временнýю метку, не может выпустить более поздние сертификаты в случае отсутствия текущего запроса".
Все части головоломки уже имели место быть. Сатоши сумел собрать их вместе таким образом, что "централизованный орган по штамповке временны́х меток" был исключен из уравнения.
Доказательство времени
“Causa latet: vis est notissima.
Причина скрыта, но результат известен”.
– Овидий, Метаморфозы, IV. 287 (8 г. н.э.)
Подведем итог: чтобы использовать деньги в цифровой сфере, мы должны полагаться на реестры. Для того чтобы сделать реестры надежными, необходим однозначный порядок. Для установления порядка необходимы временны́е метки. Таким образом, если мы хотим иметь в цифровой сфере деньги, не требующие доверия, мы должны устранить любую структуру, которая создает и управляет временны́ми метками, а также любую структуру, которая отвечает за само время.
Нахождение решения потребовало такого гения, как Сатоши Накамото: "Чтобы реализовать распределенный одноранговый сервер меток времени, мы используем схему ‘доказательства работы’, подобную системе Hashcash Адама Бэка".
Нам нужно использовать систему доказательства проделанной работы, потому что нам нужно что-то, что является родным для цифровой сферы. Как только вы поймете, что цифровая сфера имеет информационную природу, очевидным выводом станет то, что вычисления – это все, чем мы располагаем. Если ваш мир состоит из данных, то манипуляции с данными – это ваше все.
Proof of Work работает в одноранговой среде, потому что он не требует доверия; он не требует доверия, потому что не нуждается во взаимодействии с внешними входными данными, такими как показания часов (или газет, если уж на то пошло). Proof of Work полагается на единственную истину: вычисления требуют работы, а в нашей вселенной работа требует энергии и времени.
Объединяя времена
Я точно знаю – мне это подходит.
Пересекая этот мост – горящий мост –
И пламя остается позади нас,
Огонь назад дорогу прегородит.
Лишь мы с тобой, и весь мир против нас.
– Кейт Буш, Burning Bridge (1985)
Без доказательств проделанной работы всегда можно столкнуться с проблемой Оракула, потому что физическая и информационная сферы, как правило, не связаны друг с другом. Отметки в вашем списке контроля овец – это не ваши овцы, карта – не территория, а то, что было освещено во вчерашней газете, не обязательно является тем, что произошло в реальном мире. Точно так же, если вы используете часы реального мира, чтобы записать метку времени, это не значит, что это действительно верное время.
Проще говоря, просто нет возможности довериться тому, что заявленные данные реальны, за исключением случаев, когда реальность, о которой идет речь, заложена в самих данных. Замечательная особенность корректировки сложности алгоритма Proof of Work, лежащего в основе Биткоина, заключается в том, что этот алгоритм создает свою собственную реальность, а также свое собственное пространство и время.
Proof of Work обеспечивает прямую связь между цифровой и физической реальностью. Более того, это единственная не требующая доверия связь, которая только может быть установлена. Все остальное всегда будет зависеть от внешних факторов.
Сложность добычи нового блока Биткоина регулируется для того, чтобы тонкая нить между временем Биткоина и нашим временем оставалась нетронутой. Как часы, сложность добычи корректируется каждые 2016 тиков. Цель этой корректировки – поддерживать среднее время между тиками на уровне десяти минут. Именно эти десять минут поддерживают стабильную связь между физическим и информационным миром. Следовательно, для корректировки тиков часов Биткоина требуется ощущение привычного нам времени. Сугубо корректировка блоков не сработает, поскольку она будет полностью оторвана от человеческого мира, а вся цель корректировки заключается в том, чтобы не дать нам, столь находчивым людям, найти блоки слишком быстро (или слишком медленно).
Как показал Эйнштейн, время не статично. Не существует такого понятия, как универсальное время, от которого мы могли бы отталкиваться. Время относительно, и одновременности не существует. Один этот факт делает все временны́е метки – особенно на больших расстояниях – ненадежными по своей сути, даже в отсутствие противоборствующих сторон. (Кстати, именно поэтому временны́е метки спутников GPS должны постоянно корректироваться).
Для Биткоина тот факт, что наши человеческие временны́е метки неточны, не имеет большого значения. Также не имеет значения, что у нас вообще нет абсолютной системы отсчета. Они должны быть достаточно точными для того, чтобы вычислить достоверное среднее значение на протяжении 2016 блоков. Чтобы гарантировать это, временнáя метка блока принимается только в том случае, если она соответствует двум критериям:
- Временнáя метка должна быть больше, чем медианная временнáя метка предыдущих 11 блоков.
- Временнáя метка должна быть меньше, чем скорректированное по сети время плюс два часа. ("Время с поправкой на сеть" – это медиана временны́х меток, полученных от всех подключенных к вам узлов).
Другими словами, корректировка сложности заключается в поддержании постоянного времени, а не постоянного уровня безопасности, сложности или энергозатрат. Это гениально, потому что хорошие деньги должны быть ценными во временном контексте, а не в энергетическом. Одной только связи денег с энергией недостаточно для создания абсолютной редкости, поскольку каждое улучшение в производстве энергии позволит нам создавать больше денег. Время – единственная вещь, предложение которой мы никогда не сможем увеличить. По словам Джулиана Саймона оно является конечным ресурсом. Это делает биткоин конечной формой денег, поскольку его эмиссия напрямую связана с конечным ресурсом нашей вселенной – временем.
Корректировка сложности необходима, потому что без нее внутренние часы Биткоина будут ускорять свой ход по мере того, как все больше майнеров присоединяются к сети или по мере повышения эффективности устройств для майнинга. Мы бы быстро столкнулись с проблемой координации, которую Биткоин стремится решить. Как только время блока упадет ниже определенного порога, скажем, 50 миллисекунд, договориться об общем состоянии будет невозможно даже в теории. Свету требуется около 66 миллисекунд, чтобы пройти от одного края Земли до другого. Таким образом, даже если бы наши компьютеры и маршрутизаторы были совершенны, мы бы вернулись к исходной точке: в случае происхождения двух событий бесполезно говорить, какое событие произошло раньше, а какое позже. Без периодической корректировки тиков Биткоина мы бы столкнулись с безнадежной проблемой координации на скорости, превышающей скорость света. Время также лежит в основе проблемы нестабильности криптографии. Криптография работает благодаря асимметрии времени: на возведение криптографической стены уходит мало времени, а на ее разрушение – много, разве что у вас есть ключ.
Таким образом, в некотором смысле Proof of Work (и сопутствующая ему корректировка сложности) искусственно замедляет время, по крайней мере, с точки зрения сети Биткоин. Другими словами: Биткоин навязывает внутренний ритм, низкая частота которого обеспечивает достаточный буфер для задержки связи между участниками. Каждые 2016 блоков внутренние часы Биткоина перенастраиваются, так что (в среднем) каждые 10 минут будет найден только один валидный блок.
При взгляде извне, Биткоин направляет хаотический беспорядок глобально транслируемых асинхронных сообщений в параллельную вселенную, ограниченную собственными правилами и собственным ощущением пространства и времени. Транзакции в мемпуле являются вневременными с точки зрения сети Биткоин. Только когда транзакция включается в действующий блок, ей присваивается время – номер блока, в который она включена.
Трудно переоценить элегантность этого решения. Как только вам удастся создать свое собственное определение времени, расшифровка того, что было до и что стало после, становится тривиальной. В свою очередь, согласование того, что произошло, в каком порядке, и, следовательно, кто кому сколько должен, также становится тривиальным.
Корректировка сложности обеспечивает определенное постоянство тактов внутреннего метронома Биткоина. Она – дирижер Биткоин-оркестра. Она – то, благодаря чему музыка продолжается.
Но по какой причине мы вообще можем полагаться на работу? Ответ на этот вопрос состоит из трех частей: Мы можем полагаться на нее, потому что вычисления требуют работы, работа требует времени и работа в данном контексте (угадывание случайных чисел) не может быть выполнена ни одним участником более эффективно, чем другим.
Вероятностное время
“Вечно разветвляясь, время ведет к неисчислимым вариантам будущего”.
– Хорхе Луис Борхес, Сад расходящихся тропок (1941)
Поиск валидного нонса для Биткоин-блока – это игра в угадайку. Это очень похоже на бросание кубика, подбрасывание монеты или вращение колеса рулетки. По сути, вы пытаетесь найти случайное число астрономических размеров. Никакого прогресса в поиске решения не наблюдается. Вы либо попадаете в яблочко, либо нет.
Каждый раз, когда вы бросаете монету, вероятность того, что она выпадет орлом или решкой равна 50% – даже если вы уже подбросили ее двадцать раз до этого, и каждый раз выпадал орел. Точно так же каждый раз, когда вы ждете появления блока Биткоина, вероятность того, что он будет найден в эту секунду, составляет ~0.16%. Не имеет значения, когда был найден последний блок. Приблизительное время ожидания следующего блока всегда приблизительно равно 10 минутам.
Из этого следует, что каждый отдельный тик этих часов непредсказуем. По сравнению с нашими человеческими часами, эти часы кажутся спонтанными и неточными. Тем не менее, это не имеет значения, как отмечает Григорий Трубецкой: "Неважно, что эти часы неточные. Важно, что это одни и те же часы для всех и что состояние цепочки можно однозначно привязать к тиканью этих часов". Часы Биткоина могут быть вероятностными, но они не иллюзорны.
“Время – это иллюзия,
а обеденное время – отнюдь”.
– Дуглас Адамс (1979)
Однако настоящий момент (сейчас) в Биткоине вполне может быть иллюзорным. Поскольку в сети нет центрального органа власти, могут возникать довольно странные ситуации. Хотя это и маловероятно, но возможно, что одновременно будет найдено несколько валидных блоков (еще раз: прошу прощения у всех физиков), что заставит часы идти вперед сразу в двух разных направлениях. Однако, поскольку эти два разных блока, скорее всего, будут отличаться по своему содержанию, они будут содержать две разные истории, обе одинаково достоверные.
Это называется разделением цепи и является естественным процессом консенсуса Накамото. Подобно стае птиц, которая ненадолго разделяется на две части, чтобы затем снова слиться, узлы сети Биткоин через некоторое время придут к общей истории, благодаря вероятностной природе угадывания.
Консенсус Накамото просто утверждает, что правильная история должна быть найдена в самой тяжелой цепи, т.е. в цепи с наибольшим количеством проделанной работы (Proof of Work). Таким образом, если у нас есть две истории A и Б, одни майнеры будут пытаться строить историю на основе истории A, другие – на основе истории Б. Как только один из них найдет следующий валидный блок, другая группа будет запрограммирована признать, что они были на неверной стороне истории, и переключиться на самую тяжелую цепь – цепь, которая по определению отражает то, что произошло на самом деле. В Биткоине история пишется победителями.
“Получателю нужно доказательство того, что для каждой транзакции из цепочки большинство пользователей согласны считать ее первой. [...] В случае существования нескольких версий одной и той же транзакции, действительной в итоге окажется одна и только одна. Получатель платежа должен подождать час или около того, прежде чем поверить, что платеж действителен. К этому времени сеть устранит все возможные двойные траты".
– Сатоши Накамото (2009)
В этом простом утверждении кроется секрет проблемы распределенной координации. Именно так Сатоши решил проблему "одновременной оплаты", с которой ранее столкнулись наши выдуманные деловые партнеры из примера выше. Он решил ее раз и навсегда; будь прокляты релятивистские эффекты!
Из-за этой вероятностной природы Биткоин-часов, настоящий момент (то, что мы называем вершиной цепи) всегда неопределен. Прошлое же (блоки, погребенные под вершиной цепи) всегда более определенно.
“Чем более глубокое требуется понимание, тем дальше нужно вернуться в прошлое”
– Гордон Кларк, Христианский взгляд на людей и вещи (1951)
Следовательно, Биткоин-часы могут время от времени перематываться назад для некоторых пользователей на тик или два. Если ваша вершина цепочки (текущий момент) проиграет конкурирующей цепочке, ваши часы сначала отмотаются назад, а затем перескочат вперед, отменив последние несколько тиков, которые вы уже сочли историей. Если ваши часы вероятностны, таковым должно быть и ваше понимание прошлого.
Тик-ток, тик-ток, метки времени сняты?
Тик-ток, тик-ток... в c619.
А точно все в норме? Это не неполадка?
Абсолюты – ничто; за восьмеркой – девятка.
Те часы необычны; порой ходят назад.
Но лишь так мы минуем централизации ад
И часы продолжают: тик-ток и тик-ток,
И никто не обманет – тик-ток – следующий блок.
– Забавный стишок о Биткоине и времени (2020)
Заключение
“Время по-прежнему остается одной из величайших загадок физики, которая ставит под сомнение само определение того, что такое физика”
– Хорхе Чам и Дэниел Уайтсон: Мы даже не догадываемся: Путеводитель по неизвестной Вселенной (2017)
Учет вещей в информационной сфере подразумевает учет последовательности событий, что, в свою очередь, требует учета времени. Учет времени требует согласования и определения самого понятия "сейчас" – момента во времени, который постоянно связывает устоявшееся прошлое с неопределенным будущим. В Биткоине это "сейчас" является вершиной самой тяжелой цепочки Proof of Work.
Для самой структуры времени необходимы два строительных блока: причинно-следственные связи и непредсказуемые события. Причинно-следственные связи необходимы для определения прошлого, а непредсказуемые события – для построения будущего. Если бы последовательность событий была предсказуемой, то можно было бы перескочить их. Если бы отдельные шаги последовательности не были связаны между собой, то изменить прошлое было бы достаточно тривиально. Из-за внутреннего ощущения времени Биткоином обмануть его безумно сложно. Для этого нужно либо переписать прошлое, либо предсказать будущее. Временнáя цепочка Биткоина предотвращает и то, и другое.
Взгляд на Биткоин через призму времени должен прояснить, что "цепочка блоков" – структура данных, которая причинно связывает множество событий вместе – не является главной инновацией. Это даже не новая идея, как показывает литература, посвященная временны́м меткам.
“Блокчейн – это цепочка блоков”
– Питер Тодд
Новая идея (открытие Сатоши) заключается в том, как независимо согласовать историю событий в отсутствие центральной координации. Он нашел способ реализовать децентрализованную схему хронометража, которая (а) не требует компании или сервера, (б) не требует газеты или любого другого физического носителя в качестве доказательства и (в) может поддерживать тики более или менее постоянными даже при функционировании в среде со все более производительными вычислительными машинами.
Хронометраж требует причинности, непредсказуемости и координации. В Биткоине причинность обеспечивается односторонними функциями – криптографическими хеш-функциями и цифровыми подписями, которые лежат в основе протокола. Непредсказуемость обеспечивается как головоломкой Proof of Work, так и взаимодействием с другими участниками сети: вы не можете заранее знать, что сделают другие, и не можете заранее знать, каким будет решение головоломки Proof of Work. Координация становится возможной благодаря корректировке сложности – волшебному мосту, который связывает время Биткоина с нашим. Без этого моста между физической и информационной сферами было бы невозможно договориться о времени, полагаясь только на данные.
Биткоин – это время в нескольких смыслах. Его единицы хранят время, потому что это деньги, а его сеть является временем, потому что она – децентрализованные часы. Неустанное биение этих часов и порождает все магические свойства Биткоина. Без него замысловатый танец Биткоина был бы обречен на провал. Но с ним каждый человек на Земле имеет доступ к чему-то поистине чудесному – волшебным интернет-деньгам.
Материал оказался полезным? Поддержи проект: