В середине ноября биткоину предстоит пройти через второе за год существенное обновление, Segwit2x. Первое — просто Segwit — было предложено в 2015 году, согласовано в 2016-м и активировано в августе 2017 года. Те, кто не настроен следить за техническими аспектами существования криптовалют, то обновление могли просто проморгать. На этот раз так же легко не отделаемся.
Ранее я обрисовал теоретическую картину распределения интересов внутри криптосообщества — с двумя условными лагерями, полными симпатичных людей. На одной стороне — трудолюбивые заслуженные майнеры, на другой — юные перспективные блокчейн-стартаперы. Эту картину стоит держать перед мысленным взором, потому что сейчас будет всё то же, но с грязной политикой, скрытыми интересами и макиавеллианским градусом интриг.
Сатоши Накамото проектировал биткоин довольно консервативно. Во-первых, это была первая криптовалюта, и учиться на чужих ошибках не было возможности. Во-вторых, кто десять лет назад мог предположить такие обороты транзакций и запросы на новые функции? Также понемногу накапливались выявленные ошибки и уязвимости. Все это решаемо, но есть две проблемы. Первая — большая, вторая — гораздо больше первой.
Проблема номер один: изменения придется вносить в работающую систему, которая а) связана с деньгами и их обращением, б) имеет многомиллиардную капитализацию. То есть мелкий недочет (или умелый саботаж) в обновлении может обернуться неработоспособной системой или дырами в безопасности, или воплями крупных игроков рынка о провале в эффективности майнинга, или непредумышленным форком, или всем этим вместе.
Проектированием и запуском Segwit занималась команда Bitcoin Core, максимально близкая к тому, чтобы считаться подобием центральной инстанции у такой децентрализованной сущности как криптовалюта. От первого изложения концепции до начала внедрения обновления прошло около полутора лет, но работа была проведена качественно и, я бы сказал, изящно.
Перед Segwit поставили две большие задачи. Во-первых, он должен был закрыть серьезную уязвимость «пластичности транзакций», которая позволяла подменять подпись транзакции способом, сложным для обнаружения. Во-вторых, срочно требовалось выкрутиться из ситуации с размером блоков блокчейна, который был близок к исчерпанию. Последнюю проблему можно было решить методом «в лоб», просто увеличив блок, — либо найдя менее радикальное и более технически элегантное решение. Как и сделали в Bitcoin Core, и как реализовали в Segwit при помощи механизма Segregated Witness, из которого и складывается название.
Обновление не меняло размеры блока и потому не нуждалось в хард-форке, а вместо этого начинало паковать одну из его областей отдельно, одновременно решая вопрос с доступным местом, к тому же повышая эффективность транзакций без особых жертв. Также Segwit должен послужить платформой для последующих обновлений — устраняющих другие проблемы либо вводящих новые возможности (например, умные контракты).
Segwit2x продолжает то, что начато Segwit, но более радикально: он переводит ветку блокчейна на увеличенный размер блоков, а потому требует хард-форка биткоина. Увеличенные блоки влекут за собой рост размера самого блокчейна (и так немаленького), тормозят работу сети, поднимают порог требуемых для ее поддержания ресурсов, и вместе с ними нижний лимит txfees, ради которого имело бы смысл заниматься обсчетом блокчейна.
К этому моменту из того, что я написал, должна была сформироваться примерно такая картина: оригинальный Segwit — простой, изящный и незаметный, Segwit2x — сложный, потенциально проблемный и непонятно, кому он такой нужен вообще. Но в самом начале я упоминал интриги и политику, вернемся же к ним. Обновление Segwit2x решает техническую задачу, но процедура его формирования и запуска скорее определена политическими требованиями определенной части сообщества.
Первый Segwit, при всем дружелюбии к пользователям, также встречал сопротивление в процессе планирования. Оппозиция в основном состояла из крупных майнеров, для которых любое изменение — это непрогнозированный риск. Кроме того, большие пулы, как минимум, экспериментировали с оптимизацией майнинга, известной под нарицательным именем ASICBoost. Теоретически она могла бы дать прирост скорости майнинга до 20%. Вводя новый механизм обращения с блоком, Segwit делал подобную оптимизацию неработоспособной.
В процессе обсуждения этого обновления стороны криптосообщества окончательно уяснили, что их интересы расходятся в противоположные стороны, и ради будущих перспектив (либо прибылей) нужно активизироваться и покончить с источником авторитаризма (либо здравого смысла). Конкретный эпитет предлагается выбрать сообразно приверженности тому или другому лагерю, но источник — это Bitcoin Core. В интернете несложно найти запись, в которой цитируют объяснение босса одного из крупнейших пулов о том, что это обновление нужно именно ради ухода разработчиков Core.
Судьбу Segwit2x утрясли и финализировали за закрытыми дверями в Нью-Йорке в мае 2017 г. Представители сообщества, которые на момент подписания Нью-йоркского соглашения контролировали более 83% мощностей, занятых обсчетом блокчейна, решили активировать Segwit по достижении уровня поддержки в 80%, и в течение полугода запустить хард-форк, в процессе которого размер блока биткоина вырастет до 2 Мб.
Напомню, если вдруг в этом есть нужда: сама суть биткоина требует консенсуса. У этой распределенной системы нет единого центра, который бы указом вводил обновление и перезапускал единое ядро. Вместо этого стороны должны договориться о сути и порядке перемен, а затем подтвердить свои декларации действием. И только тогда обновление состоится, — но все еще никто не даст гарантий, что расщепление не закончится двумя конкурирующими ветвями и сопутствующим ущербом для экосистемы.
Против Segwit2x выступила команда Bitcoin Core практически полным составом, и многие из евангелистов биткоина. Некоторые из майнинговых пулов, подписавших Нью-йоркское соглашение, отозвали подпись, либо не подкрепили ее действием. Форк ожидают около 18 ноября, и биткоин-сервисы начали запускать процедуры, которые бы помогли справиться с продолжающейся неопределенностью. Самый часто встречающийся способ — это принять победителя, самую крупную ветку, за новый BTC, а меньшей присвоить другой индикатор, BC1, если это окажется блокчейн с классическим блоком, или BC2 — если с новым 2-мегабайтным.
Одна из претензий Bitcoin Core к раскольникам касалась отсутствия мер по «защите от повторов», уязвимости, которая, если не принять меры, дает возможность использовать до-форковые токены в обеих ветвях после хард-форка одновременно. С тех пор в Segwit2x появилось хотя и половинчатое, но все же решение этой проблемы. Однако все это становится заботами старой ветви. Указанные в соглашении 80% консенсуса это условная цифра, на самом же деле достаточно простого большинства, а его лагерь майнеров вряд ли лишится.
Еще одной проблемой «классической» ветви после хард-форка станет наличие достаточного количества майнеров с хэшрейтом, необходимым для обработки транзакций. Выросшая к этому моменту сложность в сочетании с оттоком майнеров в лагерь Segwit2x может привести к дефициту ресурсов, и если он будет критичным, Bitcoin Core и компании придется принимать экстренные меры. Речь может идти об изменении параметров майнинга, что само по себе потребует еще одного хард-форка.
Активация Segwit2x, безусловно, скажется на сообществе биткоина, изменит расстановку сил и может низвергнуть старых героев (если в последний месяц ничего не поменяется, Bitcoin Core и их «официальный репозиторий» окажутся на обочине). Но влияние обновления на рядовых майнеров и инвесторов не будет столь же значительным. Их покачает волатильность, непосредственно перед форком следует чуть притормозить с транзакциями, чтобы не попасть в переходный период. Также стоит следить за новостями о мерах по предупреждению уязвимостей, характерных для форков (вроде «защиты от повторов»). Некоторые онлайн-кошельки и биржи предлагают специальные страховочные решения вроде «сплита токенов» на Bitfinex, но это говорит скорее об их находчивости в деле изобретения новых продуктов.
У сторон сообщества биткоина еще есть время согласовать компромисс. В противном случае оригинальная криптовалюта до конца года окажется разделенной, как минимум, на четыре ветки. Я ставлю на такой список: Bitcoin Cash, Bitcoin (с 2-мегабайтным блоком), сохраняемый усилиями небольшой горстки энтузиастов «классический» BC1 и обещанный для майнеров-любителей Bitcoin Gold. Но при таком накале страстей всегда может найтись место еще для пары веток.