Читай, пиши, управляй: блокчейн как новая эра интернета - Крис Диксон
Как работают блокчейны
Блокчейны изначально, по своей конструкции, устойчивы к манипуляциям[125]. Они строятся на базе сети физических компьютеров, к которой может подключиться каждый, но которую чрезвычайно трудно контролировать кому-то одному. Эти физические компьютеры поддерживают нужное состояние компьютера виртуального и контролируют его переходы в новые состояния. В сети Bitcoin эти физические компьютеры называют майнерами, но сегодня больше распространен другой термин, «валидаторы»: они и правда выполняют именно функцию валидации (переходов, или смены) состояния.
Если концепция перехода состояния кажется вам излишне абстрактной, попробуйте воспользоваться аналогией. Думайте о биткойне как о странной электронной таблице или бухгалтерской книге с двумя столбцами. (Все, конечно, гораздо сложнее, но уж потерпите.) Каждая строка первого столбца имеет уникальный адрес. В каждой строке второго столбца указано количество биткойнов, хранящихся по этому адресу. Переходы состояния обновляют строки во втором столбце, отражая все переводы биткойнов, выполненные в последнем блоке транзакций. В этом вся суть.
Но как же виртуальный компьютер обеспечивает единый источник истины о его состоянии, если к сети может присоединиться любой желающий? Проще говоря, если электронная таблица открыта и доступна всем, как можно доверять числам, которые видишь в ее ячейках? Ответ: посредством математических гарантий, в частности криптографии (наука о безопасности коммуникаций) и теории игр (наука о принятии стратегических решений).
Рассмотрим, как некое предложенное состояние становится следующим состоянием компьютера. Во время каждого перехода состояния валидаторы запускают процесс для достижения консенсуса по следующему состоянию сети. Во-первых, они делают то, что следует из их названия: осуществляют валидацию, проверяя, что каждая транзакция подтверждена надежной цифровой подписью. Затем сеть случайным образом выбирает одного валидатора, который объединяет проверенные транзакции вместе для перехода к следующему состоянию сети. Другие валидаторы проверяют, что новое состояние отвечает требованиям сети, как и все транзакции в блоке, и что главные обязательства блокчейн-компьютера выполнены (например, если говорить конкретно о биткойнах, что их число никогда не будет превышать 21 млн). Валидаторы фактически «голосуют» за новое состояние, опираясь на него при переходе в следующие состояния.
Этот процесс по определению гарантирует, что все работают на базе одной и той же проверенной версии истории – чтобы достичь консенсуса. Если какой-либо валидатор (или некое их подмножество) попытается смошенничать, остальные имеют все возможности уличить его во лжи и проголосовать против него. Правила этого процесса установлены так, что он не сработает, кроме только того случая, когда большинство валидаторов вступит в преступный сговор.
Если вернуться к нашему упрощенному примеру с электронной таблицей, новой мастер-копией будет таблица, предложенная выигравшим валидатором. Конечно, в реальности никакой таблицы нет. Есть только переходы состояний – суть вычислений. Каждый переход состояния называется блоком, и все блоки соединены в цепочку, в результате чего каждый может, просмотрев их, верифицировать полную историю данного компьютера. Отсюда и название: блокчейн – цепочка блоков.
Переходы состояний могут содержать не только числа, отображающие простые балансы счетов, но и наборы вложенных компьютерных программ. Биткойн идет в паре с языком Bitcoin Script, который можно использовать для написания программ, модифицирующих переходы состояний. Однако этот язык изначально ограничен, по задумке. Он в основном позволяет людям переводить средства с одной учетной записи на другую или создавать учетные записи, контролируемые многочисленными пользователями. Более новые блокчейны – например, Ethereum, первый блокчейн общего назначения, дебютировавший в 2015 году, – позволяют программировать, используя гораздо более экспрессивные языки[126].
Добавление в блокчейны продвинутых языков программирования – прорыв поистине революционный. В итоге мы получили что-то вроде магазина приложений Apple для iPhone (только они модерируются, а блокчейны доступны всем и не требуют разрешений). Любой разработчик в мире может написать и запустить на базе блокчейнов вроде Ethereum приложение, начиная от торговых площадок и заканчивая метавселенными. Это чрезвычайно мощное свойство. Оно делает блокчейны неизмеримо более экспрессивными и универсальными, чем вышеупомянутая бухгалтерская книга из нашего примера. Конечно, блокчейны – не просто гроссбухи для табулирования данных. Это не базы данных, а полноценные компьютеры.
Однако, как известно, для запуска приложений на компьютерах нужны ресурсы. И блокчейны, созданные под конкретные приложения, такие как Bitcoin, и универсальные, например Ethereum, нуждаются в людях, которые платят за вычислительные мощности, расходуемые на валидацию переходов состояний, а значит, они должны давать людям повод для инвестирования в них. Накамото предложил для этого отличный прием: цифровая валюта системы – в блокчейне Bitcoin это биткойн – сама по себе становится источником финансирования компьютеров, которые ее используют. Впоследствии эту схему скопировали другие блокчейны.
У каждого блокчейна есть собственный набор внутренних стимулов для привлечения людей. В большинстве систем валидатор получает небольшое вознаграждение за каждый новый блок или переход состояния. (Заметьте, что термин «валидатор» может относиться к компьютерам, которые голосуют за переходы состояний, или к физическим лицам либо группам людей, этими компьютерами управляющим.) Вознаграждаются только честные валидаторы – те, которые добросовестно проверяют цифровые подписи и предлагают только проверенные изменения в блокчейне. Этот финансовый стимул побуждает валидаторов продолжать поддерживать сеть и вести себя честно. (А еще деньги в блокчейны поступают за счет платы, взимаемой с пользователей; подробнее о том, как это работает, и о токенах мы поговорим в главе 10.)
Как уже говорилось, блокчейны не требуют разрешений; использовать эту сеть может каждый, у кого есть подключение к интернету. Накамото создал первый блокчейн, Bitcoin, именно таким потому, что считал все существовавшие на тот момент финансовые системы элитарными, отдающими явное предпочтение привилегированным посредникам, например банкам. А он хотел поставить всех в равные условия. Включение в схему требования подачи заявки или проверки кандидатов привело бы к появлению новых привилегированных посредников и непременно воссоздало бы проблемы существовавшей тогда системы, которые Накамото хотел решить. Но и эта схема была чревата одной весьма серьезной проблемой: если любой компьютер сможет голосовать без ограничений, сеть наверняка наводнят спам и злоумышленники.
Решение этой проблемы, предложенное Накамото, заключалось в том, чтобы взимать «плату» за участие. Чтобы проголосовать за следующее состояние, майнеру нужно выполнить вычислительную работу, требующую затрат энергии, и представить доказательства того, что она проделана. Эта система, остроумно названная «доказательством работы» (PoW – proof of work), сделала возможным открытое голосование без разрешений, обеспечив при этом фильтрацию спама и других нечестных схем. Другие блокчейны, в том числе Ethereum, используют более новую систему, которую назвали «доказательством доли (владения)» (PoS – proof of stake). Вместо того чтобы требовать от валидаторов тратиться на электроэнергию, согласно этому механизму, они должны вносить залог, рискуя своими деньгами (так называемый стейкинг). Если валидатор работает честно, он получает небольшое денежное вознаграждение. Если же его поймают на лжи – например, на голосовании за неправильное состояние или одновременном предложении нескольких конфликтующих переходов состояний, – залог «урезается» либо конфискуется вовсе.
Одно из основных критических замечаний в адрес сети Bitcoin заключается в том, что ее работа требует потребления огромных объемов энергии, а это может нанести вред окружающей среде. Безусловно, негативные экологические последствия системы PoW помог бы смягчить переход на «чистые» источники энергии, скажем, на возобновляемую энергию плотин и ветряных турбин, но, думаю, более эффективным подходом была бы ее полная замена менее энергоемкими системами, такими как PoS, которые полностью сняли бы возражения экологического характера против блокчейнов[127].
Доказательство доли не менее, а то и более надежно, чем доказательство работы, а также дешевле, быстрее и гораздо энергоэффективнее. Ethereum завершила переход на эту систему осенью 2022 года, и с весьма, надо признать, впечатляющими результатами. Ниже представлен график, отображающий энергопотребление Ethereum, которая использует доказательство доли, по сравнению с другими популярными системами.
Сравнение годового потребления энергии (Твт/ч) разных компаний с потреблением PoS Ethereum[128]