Глава 8: Кто устанавливает правила?

Теперь у нас есть функциональная распределенная система для отслеживания и передачи стоимости. Давайте рассмотрим, что мы создали на данный момент:

1. Распределенный реестр, копия которого хранится у каждого участника.

2. Система лотереи, основанная на Proof of Work и корректировках сложности для обеспечения безопасности сети от несанкционированного доступа и поддерживающая утвержденный график выпуска.

3. Консенсусная система, которая гарантирует, что каждый участник может лично проверить всю историю цепочки блокчейн, используя программное обеспечение с открытым исходным кодом, под названием Биткоин-клиент.

4. Система идентификации, использующая цифровые подписи, которые позволяют произвольно создавать учетные записи, подобные почтовым ящикам. Они, в свою очередь, могут получать монеты, не нуждаясь в центральном органе управления.

Теперь пришло время заняться одной из самых интересных и нелогичных вещей в сети Биткоин: разберемся откуда берутся правила, как они применяются и как они могут меняться со временем?

Программное обеспечение сети Биткоин

В предыдущих главах мы предположили, что все участники сети обеспечивают соблюдение одних и тех же правил. Помимо множества других вещей, с которыми участники согласились ранее, они отвергают двойное расходование, гарантируя, что каждый блок содержит соответствующее количество Proof of Work, следят за тем, чтобы каждый блок указывал на предыдущий блок в конце текущей цепочки и чтобы каждая транзакция в каждом блоке была правильно подписана владельцем соответствующего адреса.

Мы также установили, что Биткоин является программным обеспечением с открытым исходным кодом. Открытый исходный код означает, что любой может прочитать его, а также, что любой может обновить свою собственную копию любым желаемым кодом. Как реализуются изменения в сети Биткоин?

Биткоин — это протокол. В компьютерном программном обеспечении этот термин относится к набору правил, которым следует программное обеспечение. Однако, вы можете изменять ПО по своему усмотрению, и при этом продолжать следовать правилам, которых придерживаются все остальные. Когда мы говорим, что люди “запускают Биткоин-ноды”, мы имеем в виду, что они запускают программное обеспечение, которое понимает Биткоин-протокол. Это программное обеспечение может связываться с другими Биткоин-нодами, передавать им транзакции и блоки, обнаруживать другие ноды для взаимодействия и т.д.

Фактические детали того, как нода реализует Биткоин-протокол, зависят от выбора ее владельца. Существует много реализаций Биткоин-протокола. Самый популярный из них называется Bitcoin Core и является продолжением работы, начатой Сатоши Накамото.

Существуют и другие реализации, написанные на других компьютерных языках и поддерживаемые разными участниками. Поскольку консенсус в Биткоине имеет решающее значение, то есть, все ноды должны договориться о том, какие блоки являются или не являются валидными, подавляющее большинство нод используют одно и то же программное обеспечение — Bitcoin Core. Это делается во избежание случайных ошибок, которые могут привести к тому, что некоторые ноды не согласятся с тем, что валидно. На самом деле, не существует абсолютно полной письменной спецификации протокола Биткоин. Поэтому лучшим вариантом для реализации нового клиентского программного обеспечения Биткоин является чтение исходного кода и следование правилам протокола, даже если в нем есть ошибки.

Кто устанавливает правила?

Основополагающие правила сети Биткоин, запрограммированы в клиент Bitcoin Core. Но кто устанавливает эти правила? Почему мы говорим, что у Биткоина ограниченное предложение, если кто-то может взять и внести изменения в программное обеспечение и изменить лимит в 21 миллион биткоинов на 42 миллиона, например?

Учитывая, что система распределенная, все ноды должны следовать правилам. Если вы майнер и решили изменить параметры своего программного обеспечения с целью предоставить себе двойное вознаграждение, что в настоящий момент возможно благодаря изменению параметров Block Reward, то при попытке транслировать такой блок по сети все остальные ноды в сети будут его отклонять. Внести изменения в общие правила сети Биткоин чрезвычайно сложно, потому что тысячи нод, распределенных по всему миру, хранят свою копию и следят за соблюдением этих правил.

Модель управления сетью Биткоин нелогична, особенно для тех из нас, кто живет в западных демократических странах. Мы привыкли к управлению путем голосования — большинство людей могут решить что-то сделать, принять закон и навязать свою волю меньшинству. Но система управления сети Биткоин гораздо ближе к анархии, чем к демократии.

Каждый, кто принимает платежи в Биткоине, сам решает что ему считать Биткоином. Если кто-то запускает программное обеспечение, в правилах которого прописано, что существует 21 миллион биткоинов, а вы пытаетесь отправить ему биткоины, произведенные вашим мошенническим программным обеспечением, которое не соблюдает это правило, ваши монеты будут считаться поддельными и будут отклонены.

Давайте посмотрим на участников Биткоин-сети, которые действуют как сдержки и противовесы по отношению друг к другу.

Ноды: каждый участник сети Биткоин запускает ноду. Он выбирает, какое программное обеспечение запускать на своей ноде. Примерами нод является все то программное обеспечение, используемое участниками, которые принимают Биткоин: продавцы, биржи, провайдеры кошельков и обычные люди, использующие Биткоин для любых целей. Большинство людей используют Bitcoin Core — основную реализацию протокола Bitcoin, которая была создана самим Сатоши и сейчас разрабатывается сотнями независимых разработчиков и компаний по всему миру. Если бы это программное обеспечение стало вредоносным и попыталось ввести что-то вроде повышенной инфляции, то никто бы не стал его запускать.

Майнеры: некоторые ноды также майнят биткоины, документируют транзакции и значительно повышают стоимость вмешательства в реестр. Если майнеры — единственные, кто обновляет записи реестра, может показаться логичным думать о них, как о создателях правил, но это не так. Они просто следуют правилам, установленным нодами, которые принимают биткоины. Если майнеры начнут производить блоки, содержащие дополнительное вознаграждение, эти блоки не будут приняты другими нодами. Соответственно, вознаграждение, ожидаемое майнерами, обесценится. Таким образом, каждый пользователь, управляющий нодой, участвует в анархическом управлении: он выбирает каким правилам должны следовать монеты, которые он считает Биткоином, и любое нарушение этих правил категорически отвергается.

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

Разработчики: программное обеспечение Bitcoin Core является самым популярным Биткоин-клиентом. Вокруг него сформировалась богатая экосистема из сотен лучших крипто-разработчиков и компаний. Проект Bitcoin Core проект очень консервативен, поскольку данное программное обеспечение поддерживает работу сети, которая в настоящее время обеспечивает безопасность более 100 миллиардов долларов. Каждая идея изменения проходит через процесс под названием “Предложение по улучшению сети Биткоин (BIP)”*, и каждое изменение тщательно рецензируется. Процесс подачи предложений и проверки кода осуществляется полностью в открытом виде. Любой может присоединиться, прокомментировать или представить собственный код. Даже если разработчики Core-клиента станут злоумышленниками или предложат обновление, которое не устроит большинство участников, то пользователи просто запустят другое программное обеспечение. Возможно, они останутся на старых версиях или начнут разрабатывать что-то новое. Из-за этого разработчики основного протокола должны предлагать изменения, которые были бы интересны и полезны участникам сети.  В противном случае они рискуют потерять свой статус.

Форки, меняющие правила

Надеюсь, что к настоящему времени у вас есть хорошее представление о том, как программное обеспечение Биткоин гарантирует соблюдение одобренных участниками правил, и о том, как участники решают, какое программное обеспечение запускать, чтобы гарантировать соблюдение данных правил.

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

Мы также знаем, что программное обеспечение Биткоин примет самую тяжелую по совокупности Proof of Work цепочку, называемую единственной истинной цепочкой. Кроме того, разветвления иногда возникают естественным образом, из-за возможности одновременного производства нескольких блоков.

Из-за огромного разнообразия участников в сети, большая часть правил сети Биткоин была заложена в самом начале. Единственные обновления, произведенные в сети Биткоин до сих пор, были сделаны обратно совместимым способом, сохраняя основные согласованные правила для нод, не обновивших программное обеспечение.

Теперь давайте поговорим о том, как правила могут измениться. Преднамеренное разветвление или форк — это когда некоторые пользователи и/или майнеры решают, что они не согласны с текущими правилами сети Биткоин и что им необходимо изменить эти правила. Было продемонстрировано два типа форков, изменяющих правила: софт-форки – разделение сети с обратной совместимостью, и хард-форк– без обратной совместимости. Давайте рассмотрим, как это происходит в теории, а затем посмотрим на исторические примеры**.

Софт-форк — это обратно совместимое изменение в правилах консенсуса Биткоин, которое приводит к появлению нового правила. Это означает, что если вы запустите старую ноду, которая не обновлена до новых правил, ваша нода все равно будет считать блоки, созданные в соответствии с новыми правилами, валидными. Давайте рассмотрим  пример, чтобы это пояснить.

12 сентября 2010 года в программное обеспечение было введено новое правило: блоки должны иметь размер не более 1 МБ. Это правило было введено для борьбы со спамом в блокчейне. До утверждения этого правила блоки любого размера были валидны. С новым правилом валидными стали только меньшие блоки, то есть были приняты новые правила. Если вы работали со старой нодой и не обновляли ее, то новые блоки меньшего размера все еще являлись валидными в рамках ваших правил, поэтому на вас это не повлияло.

Софт-форк — это безупречный способ обновления системы, поскольку он позволяет операторам нод постепенно, с течением времени, обновляться до нового программного обеспечения и делать это добровольно. Если они не обновятся, они все равно смогут, как и раньше, обрабатывать все входящие блоки. Абсолютная необходимость обновить ПО есть только у майнеров, потому что они должны начать производить блоки, используя новые правила. После того как майнеры поддержали "софт-форк 1мб", перенастроив свое оборудование согласно новым правилам, объем данных в каждом блоке стал не выше 1 МБ. В тоже время пользователи, использующие старые версии программного обеспечения, ничего не заметили.

В случае с хард-форк вводятся обратно несовместимые изменения. Хард-форк — это расширение (или изменение) набора правил, при котором блоки, которые изначально были недействительными, теперь считаются действительными. Старые ноды, которые не были обновлены, не смогут обрабатывать блоки, созданные в соответствии с новыми правилами, поскольку они будут считать их недействительными. Таким образом, эти узлы останутся в старой цепочке пока не перейдут на новые правила.

Хард-форк, который поддерживает большинство нод в сети, не вызовет проблем. Каждая нода немедленно обновится до новых правил. Если бы некоторые ноды стали отставать и перестали получать обновления цепочки блоков, то теоретически должны были бы заметить, что их ПО перестало работать. Соответственно, ноды были бы вынуждены обновить программное обеспечение.

На практике, изменения, вносимые посредством хард-форка, не происходят так гладко. В действительно децентрализованной анархической системе вы не можете заставить абсолютно всех начать подчиняться новым правилам. В августе 2017 года некоторые участники были недовольны тем, как развивалась сеть Биткоин в отношении дешевых переводов. Они считали, что для снижения комиссий за перевод необходимо увеличить объем данных, записываемых в каждый блок. В то время Биткоин следовал правилу, введенному софт-форком в 2010, которое гласило, что блоки должны быть не более 1 Мб. С таким методом решения проблемы было согласно далеко не все сообщество, поэтому сторонники увеличения блоков были вынуждены провести хард-форк и создать новую цепочку с блоками большего размера. Этот форк стал известен как Bitcoin Cash.

Хард-форк, не согласованный с консенсусом (такой как Bitcoin Cash), за которым не следуют все майнеры и ноды, создает новый блокчейн. У этой цепочки общая история с исходной цепочкой, включая существующий набор UTXO (остатки на счетах) до точки разветвления. Однако, начиная с точки разветвления, монеты, созданные в следствие хард-форка, больше не являются биткоинами, поскольку они не следуют правилам сети и, соответственно, не принимаются Биткоин-нодами.

Вопрос о том, что является, а что не является истинным Биткоином, горячо обсуждался в течение года после форка Bitcoin Cash. На стороне Bitcoin Cash были люди, которые думали, что Биткоин должен определяться тем, что написано в оригинальной работе Сатоши, выпущенной десять лет назад. Они вырвали из контекста отдельные слова из его работы о Биткоине, чтобы доказать свою точку зрения. Но системы, основанные на консенсусе, не работают путем апелляции к центральной власти. Они работают благодаря коллективным действиями множества людей, включая выбор программного обеспечения для работы, а также монет, которые можно покупать или продавать на открытом рынке.

В случае с этим форком люди, управляющие подавляющим большинством нод — то есть кошельки, биржи, продавцы и многие другие, не хотели менять свое программное обеспечение на что-то, поддерживаемое гораздо меньшей и менее опытной командой разработчиков, с гораздо меньшей скоростью хеширования. Люди также не считали, что такое “обновление” стоило того, чтобы нарушать работу экосистемы. Проблема хард-форка заключается в том, что они успешны только тогда, когда все участники переходят на новую сеть. Если есть те, кто предпочитает старую версию, то появляется две монеты. Таким образом, Биткоин остался Биткоином, а Bitcoin Cash стал отдельной монетой. Поскольку каждый, кто хранил Биткоин до проведения хард-форка, бесплатно получил Bitcoin Cash, многие продавали монету вне зависимости от цены, так как по сути это были "бесплатные деньги", что еще больше снижало ее стоимость.

Сегодня существуют десятки других ответвлений Биткоин, такие как Bitcoin SV (форк Bitcoin Cash), Bitcoin Gold, Bitcoin Diamond и Bitcoin Private. Все они имеют крошечную долю хешрейта оригинального Биткоина, низкую активность разработчиков и практически никакую активность в сети и рыночную ликвидность. Отсутствие ликвидности делает их главными целями для схем “pump and dump”***, что часто приводит к резкому скачку цен, за которым следует такое же впечатляющее и разрушительное падение. Многие из них подверглись взломам кошельков, атакам 51% и другим нападениям. Некоторые из них — чистой воды мошенничество или просто наживка для азартных игроков. Большинство из них имеют высокую степень централизации. На сайте forkdrop.io в настоящее время представлено 74 подражателя Биткоина.

Монеты из софт-форк могут быть обработаны более старыми нодами. Хард-форк создает новые обратно несовместимые UTXO, которые не будут приниматься старыми нодами.

Многие другие монеты используют подобный код, но начинают свои реестры с нуля, не наследуя набор UTXO Биткоина. Это такие монеты, как Litecoin или Dogecoin. Как правило, они не считаются форками Биткоина (не смотря на то, что они могут использовать тот же код), поскольку они не унаследовали историю балансов счетов Биткоин. Форк сети Биткоин не влияет на ограничение предложения биткоинов в 21 млн. монет. Представьте, что вы храните золото мира в супер надежно спроектированном Форт-Нокс, защищенном тяжеловооруженной охраной. Вы строите небольшую, плохо защищенную хижину и называете ее Форт-Нокс Лайт, защищая ее одним охранником. Вы красите несколько камней в золотой цвет и кладете их в лачугу. Затем вы объявляете миру, что “удвоили количество золота”, и безвозмездно раздали каждому держателю золота эквивалентное количество камней из своей лачуги.

На страже Биткоина стоит множество майнеров, что делает атаку 51 очень дорогостоящей. Форк Биткоина, у которого всего несколько майнеров, как и охранников у вашей плохо защищенной хижины, атаковать значительно легче. Также весьма вероятно, что и код такой сети будет иметь дефекты: он, как и ваша хижина, создан небольшой неопытной командой разработчиков, обладающих плохой экспертной оценкой.

Монеты-форки не принимаются никакими существующими нодами, потому что они нарушают правила Биткоин. Точно так же люди, имеющие доступ к химическим тестам золота, не принимают позолоченные камни. Стоимость изготовления монет-фоков и камней равна нулю, поскольку вы бесплатно раздавали их каждому держателю настоящего золота. Это ограничивает интерес рынка к форкам сети Биткоин.

Рассматривая тысячи созданных клонов Биткоина, ни один из которых не имеет существенной рыночной стоимости, подумайте над этим парадоксом: создать форк Биткоина легко и ничего не стоит. Однако изменить правила Биткоин или создать новые биткоины — совсем не просто. В следующий раз, когда вы услышите, что кто-то с ограниченными знаниями о Биткоине спросит, почему Биткоин особенный, ответьте следующим образом.

Децентрализованная природа экосистемы Биткоин создает сильное предпочтение в пользу своего статус-кво. Большим изменениям требуются месяцы или годы, обсуждения и проведения экспертной оценки для достижения консенсуса. Это — хорошо, и мы должны культивировать это в системе, которая стремится стать глобальным финансовым механизмом. Биткоин — это деликатный танец с тысячами участников, каждый из которых действует эгоистично, часто конкурируя. Это — действительно анархистская система свободного рынка, за которую никто конкретно не ответственен.


* Узнайте больше о том, как управлять процессом разработки Bitcoin Core в статье “Кто контролирует Bitcoin Core?” Джеймсона Лоппа: https://blog.lopp.net/who-controls-bitcoin-core-/

** Полная история форков Биткоин проанализирована здесь: https://blog.bitmex.com/bitcoins-consensus-forks/

*** Pump (“памп”, накачка) — создание искусственного ажиотажа вокруг актива, нацеленное на искусственное повышение цены и спроса даже на пиковых значениях. Является одним из видов мошенничества на бирже.Dump (“дамп”, слив) — массированная продажа на бирже, приводящая к сильному падению цены.