В последнее время о биткоине и технологии блокчейна снова говорят очень много: после выборов в США и победы Дональда Трампа, который поддерживает развитие криптоэкономики, знаменитая валюта рванула вверх. Теперь вопрос «закупаться ли битком» уже не стоит — слишком дорого. Зато другие криптовалюты все еще доступны. Инвестор Крис Диксон в своей книге «Читай, пиши, управляй: блокчейн как новая эра интернета», которая вышла в издательстве «Миф», объясняет, как вообще устроен блокчейн. Публикуем отрывок из нее.
Блокчейны — новый вид компьютера
В опубликованной в 2008 году статье Сатоши Накамото — это псевдоним изобретателя или коллектива изобретателей (точно до сих пор никому не известно) — представил миру первый блокчейн. Накамото не называл свое изобретение так — он использовал термины block (блок) и chain (цепочка) отдельно, — но сообщество, сложившееся вокруг его идей, со временем «склеило» два слова в одно. В той статье новый вид цифровых денег, биткойн, описывался как «электронная платежная система, основанная на криптографическом доказательстве, а не доверии, что позволяет любым двум сторонам заключать сделки напрямую друг с другом без потребности в доверенной третьей стороне». Чтобы удалить из процесса доверенную третью сторону, Накамото нужен был инструмент, позволяющий системе выполнять вычисления независимо. Для этого он и предлагал использовать новый тип компьютера, блокчейн.
Компьютер — концепция абстрактная, определяемая скорее тем, что он делает, чем тем, из чего он сделан. Первоначально так называли людей, занимавшихся вычислениями. В XIX и XX столетиях это слово стало относиться к машинам, способным производить вычисления. В знаменитой работе, написанной в 1936 году и посвященной математической логике, британский математик Алан Тьюринг исследует природу и пределы применения алгоритмов и предлагает более четкое обоснование этого явления. Автор дал определение того, что сегодня ученые-компьютерщики называют конечным автоматом, а все остальные — просто компьютером.
Конечный автомат состоит из двух частей: 1) места для хранения информации и 2) средств изменения этой информации. Хранящаяся в автомате информация — эквивалент компьютерной памяти. Наборы инструкций, называемые программами, определяют, как принять начальное состояние, входные данные, и вывести новое состояние, результат. Поскольку в мире гораздо больше людей, которые умеют читать и писать, чем тех, кто умеет программировать, я люблю описывать вычисления с использованием лингвистической терминологии. Представьте, что существительные представляют собой состояние или память — то, чем мы можем манипулировать, глаголы — код или программы: действия, посредством которых осуществляется это манипулирование. Я еще не раз повторю: все, что вы способны нарисовать в своем воображении, можно закодировать. Именно поэтому я сравниваю кодирование с творческой деятельностью, та- кой, например, как написание художественной литературы. В этом смысле компьютеры крайне разнообразны и разносторонни.
Конечный автомат — самый четкий способ представления о компьютере. Блокчейн Накамото — не физический компьютер, такой как ПК, ноутбук, телефон или сервер, а виртуальный: компьютер по функциям, а не материальному воплощению. Блокчейны — программная абстракция, которая накладывается поверх физических устройств. Это конечные автоматы. Когда-то слово «компьютер» стало вместо людей обозначать машины; теперь этот термин охватывает не только аппаратное обеспечение, но и программное.
Компьютеры на базе ПО, или «виртуальные машины», существуют с тех пор, как IBM в конце 1960-х разработала пер- вый компьютер и в начале 1970-х вывела его на рынок. Позже, в конце 1990-х, ИТ-гигант VMware сделал эту технологию массовой и популярной. Сегодня любой может запустить виртуальную машину, загрузив на свой ПК так называемую программу-гипервизор. Компании обычно используют такие машины для оптимизации управления корпоративными центрами обработки данных, и они играют ключевую роль в работе провайдеров облачных услуг. Блокчейны расширяют модель программных вычислений на новый контекст. Компьютеры могут быть построены разными способами; они определяются своими функциональными свойствами, а не внешним видом.
Как работают блокчейны
Блокчейны изначально, по своей конструкции, устойчивы к манипуляциям. Они строятся на базе сети физических компьютеров, к которой может подключиться каждый, но которую чрезвычайно трудно контролировать кому-то одному. Эти физические компьютеры поддерживают нужное состояние компьютера виртуального и контролируют его переходы в новые состояния. В сети Bitcoin эти физические компьютеры называют майнерами, но сегодня больше распространен другой термин, «валидаторы»: они и правда выполняют именно функцию валидации (переходов, или смены) состояния.
Если концепция перехода состояния кажется вам излишне абстрактной, попробуйте воспользоваться аналогией. Думайте о биткойне как о странной электронной таблице или бухгалтерской книге с двумя столбцами. (Все, конечно, гораздо сложнее, но уж потерпите.) Каждая строка первого столбца имеет уникальный адрес. В каждой строке второго столбца указано количество биткойнов, хранящихся по этому адресу. Переходы состояния обновляют строки во втором столбце, отражая все переводы биткойнов, выполненные в последнем блоке транзакций. В этом вся суть.
Но как же виртуальный компьютер обеспечивает единый источник истины о его состоянии, если к сети может присоединиться любой желающий? Проще говоря, если электронная таблица открыта и доступна всем, как можно доверять числам, которые видишь в ее ячейках? Ответ: посредством математических гарантий, в частности криптографии (наука о безопасности коммуникаций) и теории игр (наука о принятии стратегических решений).
Рассмотрим, как некое предложенное состояние становится следующим состоянием компьютера. Во время каждого перехода состояния валидаторы запускают процесс для достижения консенсуса по следующему состоянию сети. Во-первых, они делают то, что следует из их названия: осуществляют валидацию, проверяя, что каждая транзакция подтверждена надежной цифровой подписью. Затем сеть случайным образом выбирает одного валидатора, который объединяет проверенные транзакции вместе для перехода к следующему состоянию сети. Другие валидаторы проверяют, что новое состояние отвечает требованиям сети, как и все транзакции в блоке, и что главные обязательства блокчейн-компьютера выполнены (например, если говорить конкретно о биткойнах, что их число никогда не будет превышать 21 млн). Валидаторы фактически «голосуют» за новое состояние, опираясь на него при переходе в следующие состояния.
Этот процесс по определению гарантирует, что все работают на базе одной и той же проверенной версии истории — чтобы достичь консенсуса. Если какой-либо валидатор (или некое их подмножество) попытается смошенничать, остальные имеют все возможности уличить его во лжи и проголосовать против него. Правила этого процесса установлены так, что он не сработает, кроме только того случая, когда большинство валидаторов вступит в преступный сговор.
Если вернуться к нашему упрощенному примеру с электронной таблицей, новой мастер-копией будет таблица, предложенная выигравшим валидатором. Конечно, в реальности никакой таблицы нет. Есть только переходы состояний — суть вычислений. Каждый переход состояния называется блоком, и все блоки соединены в цепочку, в результате чего каждый может, просмотрев их, верифицировать полную историю данного компьютера. Отсюда и название: блокчейн — цепочка блоков.
Переходы состояний могут содержать не только числа, отображающие простые балансы счетов, но и наборы вложенных компьютерных программ. Биткойн идет в паре с языком Bitcoin Script, который можно использовать для написания программ, модифицирующих переходы состояний. Однако этот язык изначально ограничен, по задумке. Он в основном позволяет людям переводить средства с одной учетной записи на другую или создавать учетные записи, контролируемые многочисленными пользователями. Более новые блокчейны — например, Ethereum, первый блокчейн общего назначения, дебютировавший в 2015 году, — позволяют программировать, используя гораздо более экспрессивные языки.
Добавление в блокчейны продвинутых языков программирования — прорыв поистине революционный. В итоге мы получили что-то вроде магазина приложений Apple для iPhone (только они модерируются, а блокчейны доступны всем и не требуют разрешений). Любой разработчик в мире может написать и запустить на базе блокчейнов вроде Ethereum приложение, начиная от торговых площадок и заканчивая метавселенными. Это чрезвычайно мощное свойство. Оно делает блокчейны неизмеримо более экспрессивными и универсальными, чем вышеупомянутая бухгалтерская книга из нашего примера. Конечно, блокчейны — не просто гроссбухи для табулирования данных. Это не базы данных, а полноценные компьютеры.
Однако, как известно, для запуска приложений на компьютерах нужны ресурсы. И блокчейны, созданные под конкретные приложения, такие как Bitcoin, и универсальные, например Ethereum, нуждаются в людях, которые платят за вычислительные мощности, расходуемые на валидацию переходов состояний, а значит, они должны давать людям повод для инвестирования в них. Накамото предложил для этого отличный прием: цифровая валюта системы — в блокчейне Bitcoin это биткойн — сама по себе становится источником финансирования компьютеров, которые ее используют. Впоследствии эту схему скопировали другие блокчейны.
У каждого блокчейна есть собственный набор внутренних стимулов для привлечения людей. В большинстве систем валидатор получает небольшое вознаграждение за каждый новый блок или переход состояния. (Заметьте, что термин «валидатор» может относиться к компьютерам, которые голосуют за переходы состояний, или к физическим лицам либо группам людей, этими компьютерами управляющим.) Вознаграждаются только честные валидаторы — те, которые добросовестно проверяют цифровые подписи и предлагают только проверенные изменения в блокчейне. Этот финансовый стимул побуждает валидаторов продолжать поддерживать сеть и вести себя честно. (А еще деньги в блокчейны поступают за счет платы, взимаемой с пользователей; подробнее о том, как это работает, и о токенах мы поговорим в главе 10.)
Как уже говорилось, блокчейны не требуют разрешений; использовать эту сеть может каждый, у кого есть подключение к интернету. Накамото создал первый блокчейн, Bitcoin, именно таким потому, что считал все существовавшие на тот момент финансовые системы элитарными, отдающими явное предпочтение привилегированным посредникам, например банкам. А он хотел поставить всех в равные условия. Включение в схему требования подачи заявки или проверки кандидатов привело бы к появлению новых привилегированных посредников и непременно воссоздало бы проблемы существовавшей тогда системы, которые Накамото хотел решить. Но и эта схема была чревата одной весьма серьезной проблемой: если любой компьютер сможет голосовать без ограничений, сеть наверняка наводнят спам и злоумышленники.
Решение этой проблемы, предложенное Накамото, заключалось в том, чтобы взимать «плату» за участие. Чтобы проголосовать за следующее состояние, майнеру нужно выполнить вычислительную работу, требующую затрат энергии, и представить доказательства того, что она проделана. Эта система, остроумно названная «доказательством работы» (PoW — proof of work), сделала возможным открытое голосование без разрешений, обеспечив при этом фильтрацию спама и других нечестных схем. Другие блокчейны, в том числе Ethereum, используют более новую систему, которую назвали «доказательством доли (владения)» (PoS — proof of stake). Вместо того чтобы требовать от валидаторов тратиться на электроэнергию, согласно этому механизму, они должны вносить залог, рискуя своими деньгами (так называемый стейкинг). Если валидатор работает честно, он получает небольшое денежное вознаграждение. Если же его поймают на лжи — например, на голосовании за неправильное состояние или одновременном предложении нескольких конфликтующих переходов состояний, — залог «урезается» либо конфискуется вовсе.
Одно из основных критических замечаний в адрес сети Bitcoin заключается в том, что ее работа требует потребления огромных объемов энергии, а это может нанести вред окружающей среде. Безусловно, негативные экологические последствия системы PoW помог бы смягчить переход на «чистые» источники энергии, скажем, на возобновляемую энергию плотин и ветряных турбин, но, думаю, более эффективным подходом была бы ее полная замена менее энергоемкими системами, такими как PoS, которые полностью сняли бы возражения экологического характера против блокчейнов.
Доказательство доли не менее, а то и более надежно, чем доказательство работы, а также дешевле, быстрее и гораздо энергоэффективнее. Ethereum завершила переход на эту систему осенью 2022 года, и с весьма, надо признать, впечатляющими результатами. Ниже представлен график, отображающий энергопотребление Ethereum, которая использует доказательство доли, по сравнению с другими популярными системами.
Многие блокчейны, упомянутые в этой книге, — за одним существенным исключением, Bitcoin, — используют доказательство доли. По моим ожиданиям, в будущем все популярнейшие блокчейны будут использовать эту систему. Так что тревоги по поводу чрезмерного потребления энергии ни в коем случае не должны удерживать нас от принятия этой мощной новой технологии.
Как и весьма распространенное ныне заблуждение: что блокчейны изначально сопутствуют секретности и анонимности. Слово «крипто» несет в себе коннотацию приемов политического управления и интриг, но буквально оно означает «закодированный» или «скрытый». Из-за того, что это слово используется для обозначения криптоиндустрии, многие ошибочно полагают, что блокчейны скрывают информацию и, следовательно, идеально подходят для неправомерных и мошеннических действий. Подобная трактовка часто встречается, например, в теле- и кинофильмах, где преступники постоянно используют криптовалюту для тайных переводов незаконно заработанных денег. Это тоже не имеет ни малейшего отношения к действительности.
Фактически все, что происходит в популярных блокчейнах, таких как Bitcoin и Ethereum, напротив, общедоступно и может быть отслежено. Как и в случае с электронной почтой, в них можно создать фейковую учетную запись, но сегодня существуют компании, специализирующиеся на де- анонимизации, и правоохранительные органы без особого труда распознают подлог. Блокчейны настолько открыты и общедоступны по умолчанию, что их врожденная прозрачность, возможно, препятствует их принятию. Вам может показаться, что это противоречит здравому смыслу, особенно учитывая ошибочное восприятие обществом криптовалюты как своего рода «черного ящика», но это действительно так. Люди могут не захотеть использовать блокчейны для определенных действий, опасаясь, что это приведет к раскрытию конфиденциальной информации: данных о зарплате и банковских счетах, медицинских сведений и т. д. Сегодня реализуется ряд проектов, призванных решить эту проблему; в их рамках пользователям напрямую предоставляют возможность сделать транзакции конфиденциальными. В самых передовых проектах подобного рода используется новейшая продвинутая криптография, — в частности, такие инновации, как «доказательства с нулевым разглашением», — что позволяет проводить аудит зашифрованных данных, соответственно, снижает риск неправомерной деятельности и удовлетворяет потребность общества в четком соблюдении требований закона.
Блокчейны «крипто» не потому, что они обеспечивают анонимность (они ее вовсе не обеспечивают), а потому, что они основаны на революционном математическом открытии 1970-х, криптографии с открытым ключом. Главное, что нужно знать об этой технологии: она позволяет нескольким сторонам, которые никогда раньше не общались, выполнять криптографические операции друг с другом. Две самые распространенные операции такого типа: 1) шифрование (кодирование информации, которую сможет расшифровать только конкретный получатель) и 2) аутентификация (позволяет человеку или компьютеру подписывать информацию, подтверждая ее подлинность и то, что она гарантированно исходит из конкретного источника). Так вот, когда блокчйны описывают как криптотехнологию, этот термин используется во втором смысле: они не «зашифрованные», а «аутентифицированные».
Фундамент безопасности блокчейна — пары открытых (публичных) и закрытых (секретных) криптографических ключей. Люди используют закрытые ключи — числа, которые хранятся в секрете, — для создания транзакций в сети. А открытые ключи, напротив, идентифицируют публичные адреса, по которым проводятся транзакции. Характер математической связи, соединяющей пару ключей, таков, что извлечь открытый ключ из закрытого не составляет труда, но извлечение закрытого ключа из открытого потребует неимоверных усилий и огромных объемов вычислительной мощности. Это позволяет пользователю блокчейна отправить деньги другому человеку, зафиксировав подписью транзакцию, которая, по сути, означает следующее: «Я даю тебе эти деньги». Эта подпись, по существу, аналогична таковой на банковском чеке или юридическом документе в офлайн-мире, просто для предотвращения подделок в ней вместо уникального почерка используется математика.
Цифровые подписи широко, но негласно используются в сфере компьютерных вычислений для верификации подлинности и достоверности данных. Браузеры проверяют их, чтобы убедиться в законности сайтов. Серверы и клиенты электронной почты используют такие подписи в качестве гарантии, что сообщения не подделываются и ими не манипулируют при передаче. Большинство компьютерных систем путем верификации подписей проверяют, что ПО загружается из нужного источника и оно не подделано.
Блокчейны тоже используют цифровые подписи — для обеспечения функционирования децентрализованных сетей «без доверия». Согласен, фраза «без доверия» может сбивать с толку своей двусмысленностью, но в контексте блокчейна она всегда означает только одно: что для надзора над транзакциями ему не нужны никакие высшие авторитеты, ни посредники, ни центральные корпорации. Благодаря процессам достижения консенсуса блокчейны способны самостоятельно и весьма надежно верифицировать отправляющую сторону транзакции, и никакой компьютер не обладает властью изменять эти правила.
Грамотно спроектированные блокчейны используют стимулы, побуждающие валидаторов к честности. А некоторые, например Ethereum, еще и наказывают их за неправомерное поведение. Основой гарантий безопасности блокчейнов, опять же, становятся системы консенсуса. Если затраты на атаку на блокчейн достаточно высоки, а большинство валидаторов действуют честно, в соответствии со своими материальными интересами (и именно так обстоят дела в большинстве популярных блокчейнов), система безопасна. Но в случае крайне маловероятной успешной атаки участники сети могут «расщепить» ее, сделав «хардфорк» (блокчейн «расщепляется» на два отдельных блокчейна, работающих параллельно), и откатить блокчейн к предыдущей верной точке. Это создает для злоумышленников дополнительные препятствия.
Даже если некоторые нечестные и особо азартные пользователи пытаются использовать блокчейн ради наживы, эта система обеспечивает честность всех и каждого. В этом ее гениальность — в наборе структур стимулов, позволяющем ей контролировать себя. Благодаря тщательно продуманным материальным вознаграждениям блокчейны побуждают пользователей к взаимному контролю. В результате, даже если пользователи не верят друг другу, они могут полностью доверять децентрализованному виртуальному компьютеру, безопасность и защищенность которого они сами коллективно обеспечивают.