Цифровое золото: невероятная история Биткойна | страница 121
Но инцидент, произошедший в марте 2013 года – самый значительный отказ сети на тот момент, – стал напоминанием, что встроенные в Биткойн экономические стимулы работают именно так, как задумал Сатоши.
Гэвин Андресен, теперь носивший звучный титул Главного ученого Bitcoin Foundation, как обычно, работал у себя дома в штате Массачусетс, когда вдруг заметил разногласие между узлами сети: компьютеры не могли определиться, какой блок они добывали – 225 430 или 225 431?
Гэвин быстро понял, что это было тем, что все знали как крупнейшую потенциальную опасность для Биткойна: раскол сети, или “хард форк”. Этот термин был придуман для описания ситуации, когда компьютеры сети расходятся во мнении, какой именно добытый блок считать “правильным”. Часть майнеров признавала победителем конкурса один узел, а другая часть – другой, в результате возникали две цепочки блоков, которые начинали быстро расходиться. Это могло стать катастрофой, поскольку означало разногласия в том, какие биткойны кому принадлежат. В данный момент различие возникло только в последней паре блоков – не во всей истории блокчейна, – но если несоответствие не будет исправлено, могут появиться две конфликтующие сети Биткойна, что приведет к подрыву доверия к Биткойну в целом.
“У нас ЧП!” – написал один из пользователей через несколько минут после возникновения ошибки.
“И это мягко говоря”, – добавил другой.
“У нас произошел хард форк”, – объявил один из самых авторитетных разработчиков, бельгийский программист Питер Вуилле, спустя пару минут.
Цена биткойна за полчаса упала с 49 до 45 долларов, нивелировав все достижения прошлой недели.
Марк Карпелес присоединился к обсуждению спустя полчаса, после чего быстро приостановил все транзакции на Mt.Gox; спустя несколько минут Эрик Вурхис сообщил, что его онлайн-казино SatoshiDice также приостановит транзакции.
К тому времени, когда Гэвин вступил в разговор, уже было очевидно, что проблема была вызвана не чьими-либо злонамеренными действиями, а расхождением между версиями программного обеспечения Биткойна. Компьютеры, которые загрузили последнее обновление ПО, создавали блоки, которые отвергались старой версией программного обеспечения, все еще установленной на некоторых компьютерах. Обычно, если блок принимался большинством узлов, он принимался всей сетью, но в старом ПО (версия 0.7) было правило, которое запрещало тот особый тип блока, разрешенный новой версией 0.8.
Решение проблемы было очевидным: все узлы сети должны были договориться перейти на одну из двух версий и принять признанный ею блокчейн. Однако на тот момент не существовало правил принятия решения, какую версию выбрать, и никто не знал, сколько времени понадобится всем узлам для того, чтобы перейти на новую версию, как только таковая будет выбрана.