Биткоин — это цепочка решений, а не одна дата · 15 августа 2010

184 миллиарда BTC, которых не должно было быть

В блоке 74638 появилась транзакция, создавшая больше 184 миллиардов BTC. Ошибочную цепочку остановили, программу исправили, а невозможные монеты исчезли из действующей истории сети.

Странный блок

15 августа 2010 года Джефф Гарзик обратил внимание на блок 74638. Два выхода одной транзакции содержали примерно по 92,2 миллиарда BTC. Это не было ошибкой отображения: ранняя версия программы действительно приняла транзакцию и включила её в цепочку.

Личность создателя транзакции достоверно не установлена. Известно лишь, что неизвестный участник нашёл слабое место в проверке и использовал его.

Как невозможное стало допустимым

Количество BTC внутри программы учитывалось целыми числами в сатоши. Каждый выход проверялся отдельно, но при сложении двух чрезвычайно больших значений число переполнилось. Сумма вышла за предел типа данных и превратилась для программы в другое значение.

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

Сеть не исправляет себя сама

Сначала человек заметил необычные данные. Другие участники независимо проверили блок. Затем разработчики нашли причину, подготовили исправление и предупредили пользователей не доверять транзакциям после блока 74638. Владельцам узлов пришлось установить новую версию, а майнерам — строить цепочку по исправленным правилам.

Децентрализация не означает отсутствие решений. Она означает, что решение нельзя просто объявить действующим: его должны принять и применить участники сети.

Несколько часов на исправление

Первое публичное сообщение появилось примерно через полтора часа после события. В течение нескольких часов было подготовлено исправление, а затем опубликована версия Bitcoin 0.3.10. Она отклоняла транзакции с переполнением суммы и выходы выше допустимого предела.

На короткое время возникли две цепочки: старая принимала блок 74638, новая считала его недействительным. Когда исправленная цепочка накопила больше вычислительной работы, узлы сошлись вокруг неё. Невозможная транзакция перестала быть частью действующей истории.

Это было похоже на откат, но не было ручным удалением

Никто не открыл центральную базу и не стёр запись. Участники установили программу с более строгим правилом и начали строить другую цепочку. Результат зависел от их совместимых действий.

В 2010 году сеть была небольшой, Сатоши активно участвовал в разработке, а пользователей и майнеров было значительно меньше. Провести такое исправление тогда было проще, чем было бы в зрелой глобальной сети.

Лимит не живёт отдельно от проверки

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

Что осталось после блока 74638

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

Надёжность — это не отсутствие ошибок. Это способность увидеть ошибку, понять её и не позволить ей стать новым правилом.

Проверить первоисточники

  1. Первое обсуждение странного блока 74638 на BitcoinTalk
  2. Сообщение о выпуске исправления Bitcoin 0.3.10
  3. Предупреждение Сатоши участникам сети
  4. Хронология инцидента в Bitcoin Wiki

Исторический и образовательный материал. Не является финансовой рекомендацией.

Вернуться к рубрике