Средний Урок 3 4 мин чтения

Вилки: мягкие, жесткие и война блоков

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

В мае 2017 года в отеле в Нью-Йорке представители 58 компаний подписали соглашение об изменении Bitcoin. Среди них были майнеры, обладающие более чем 80% вычислительной мощности сети, и биржи, на долю которых приходилась большая часть мирового объема торгов. Соглашение полностью провалилось через шесть месяцев. Понять, почему это произошло, значит понять, где на самом деле находится власть.

Прежде всего, техническое различие, которое все организует. Изменение правила может ужесточить или ослабить. Ужесточение — это запретить что-то, что раньше было разрешено: старые узлы продолжают принимать новые блоки, потому что все, что действительно по новому правилу, также было действительно по старому. Это называется soft fork, и он не обязывает никого обновляться.

Новое правило — это более узкие ворота внутри старых: кто проходит через них, проходит через оба.

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

Спор, который это проверил, длился с 2015 по 2017 год и стал известен как война блоков. Лимит в один мегабайт на блок был установлен Сатоши в 2010 году как защита от злоупотреблений, почти импровизированно. По мере роста использования этот лимит стал сжиматься, и комиссии выросли. Одна сторона хотела его увеличить: дешевые платежи в самой blockchain, доступные уже сейчас, без зависимости от слоев, которые еще не существовали. Другая сторона хотела сохранить его маленьким: большие блоки удорожают запуск узла, и сеть, которую могут проверять только крупные компании, перестает быть той сетью, которую описывал предыдущий урок.

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

Соглашение имело большинство компаний и большинство майнеров. Этого было недостаточно.

Техническое решение, которое победило, было SegWit, изобретательный soft fork: вместо увеличения лимита он убрал подписи из тела транзакции и поместил их в отдельную область, которая стала считаться по-другому. Практический эффект — больше возможностей без ослабления правил. Вдобавок, он исправил старый дефект, который позволял изменять идентификатор транзакции, не делая ее недействительной — дефект, который мешал существованию сети Lightning.

Однако активация зависела от сигнализации майнеров, и они не сигнализировали. Тупик был преодолен движением пользователей: предложение BIP-148 заявляло, что с 1 августа 2017 года узлы, которые его примут, будут отвергать блоки, не сигнализирующие SegWit. Это не была просьба. Это было предупреждение, что блоки тех майнеров будут игнорироваться теми, кто принимает платежи. За несколько недель до срока майнеры начали сигнализировать.

Маленькая лодка может остановить корабль, если она знает канал.

Другая сторона пошла своим путем, как это было их правом. 1 августа 2017 года появился Bitcoin Cash, hard fork с блоками в восемь мегабайт; все, у кого был bitcoin, также получили новую валюту. А вторая часть соглашения в отеле, hard fork, запланированный на ноябрь, который удвоил бы размер блока, была отменена за несколько дней до этого из-за недостаточной поддержки среди узлов. В ноябре 2018 года сам Bitcoin Cash снова разделился.

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

Blockchain является публичной, и эта публичность была ценой за отсутствие необходимости доверять кому-либо. Осталось измерить эту цену. В следующем уроке, что именно она раскрывает о вас.