К концу 2015 года война стала заметно интенсивнее. Были даже волны распределенных атак типа “отказ в обслуживании” (DDoS) на узлы Bitcoin XT. 28 декабря 2015 г. пользователь Reddit /u/tl212 прокомментировал:
Меня заддосили. Это была массированная DDoS-атака, которая положила моего (сельского) провайдера. Из-за этих преступников жители пяти городов потеряли доступ к интернет-серверу на несколько часов. Это определенно убедило меня отказаться от хостинга узлов 1.
Эта акция действительно казалась довольно агрессивной и была явно неоправданной. Примечательно, что поступило сообщение о настолько мощной атаке, что она полностью отрубила интернет-провайдера. Атаки действительно оказали существенное пагубное воздействие на сеть Bitcoin XT, и поэтому в какой-то мере можно утверждать, что они сработали. Я не знаю каких-либо неанонимных сторонников малых блоков, которые поддерживали бы такое неэтичное поведение, но некоторые анонимы, поддерживающие этот лагерь, действительно оправдывали случившуюся акцию на BitcoinTalk, называя ее “встречной атакой”. Однако кое-что эта атака действительно выявила: насколько важна большая, распределенная и надежная P2P-сеть, которой Bitcoin XT на тот момент не являлся. Кто стоял за этими атаками, так и осталось неизвестным, хотя несколько месяцев спустя прошел слух об операторе ботнета, которому анонимно заплатили в биткоинах за запуск атаки. Поведение злоумышленников считалось неэтичным даже сторонниками малых блоков, многие из которых считали его потенциально контрпродуктивным и способным оттолкнуть союзников. На мой взгляд, это редкий пример тактической ошибки из лагеря малых блоков, конечно, если предположить, что это было дело рук мелкоблочника, а не какая-то операция под ложным флагом. Война велась за то, чтобы убедить людей присоединиться к избранной стороне, и такие агрессивные действия не могли привести к успеху. Насколько мне известно, эта форма атаки больше не играла заметной роли в войне за блоки.
3 января 2016 года Брайан Армстронг, генеральный директор Coinbase (одной из крупнейших спотовых бирж в отрасли и компании с самой впечатляющей поддержкой со стороны венчурного капитала), сделал у себя в блоге публикацию в поддержку более крупных блоков. Брайан также поддерживал Гэвина и имел противоречивые взгляды на то, как должен развиваться Биткоин.
К счастью, Биткоин обладает встроенным механизмом обновления с элегантным дизайном. Если большинство биткоин-майнеров “голосуют” за конкретное обновление, то это по определению становится новой версией Биткоина. Количество голосов, которые получает каждый майнер, пропорционально вычислительной мощности, выделенной этим майнером для сети (поэтому голоса нельзя подделать) 2.
Мнение, что за какой цепочкой стоит наибольшая хэш-мощность, та и будет считаться Биткоином, казалось, не имело большого смысла для адептов малых блоков. Мнение о том, что за какой бы цепью блоков ни стояла наибольшая хэш-мощность, то и будет Биткоином, казалось, не имело большого смысла для адептов малых блоков. С их точки зрения биткоин-узлы строго применяют конкретный набор правил; блок должен соответствовать этим правилам, иначе он будет проигнорирован. Для них именно это было принципиально важной частью работы Биткоина. Если бы майнеры просто попытались изменить правила по-своему, это привело бы к разделению цепи и появлению новой монеты. Монета, соответствующая первоначальным правилам, продолжит оставаться оригинальным биткоином.
Мелкоблочники, как правило, считали полные узлы важными для соблюдения правил протокола, в то время как для крупноблочников это не имело особого значения. Они исходили из того, что большинство пользователей использует не полные узлы, а легкие клиенты, подключающиеся к сторонним полным узлам. Однако даже в рамках картины мира, при которой пользователи не держат полных узлов, у них все еще остаются кошельки. Все пользовательские кошельки, хотя и не обеспечивают соблюдение всех правил протокола, но обеспечивают, по крайней мере, соблюдение некоторых из них. Помимо размера блока, у Биткоина есть еще множество правил и условностей, например, форматы транзакций, подписи для подтверждения расходов, структура дерева Меркла, формат заголовка блока и т. д. Действительно ли Брайан и крупноблочники полагали, что любая сущность, за которой стоят вычислительные мощности, даже просто цепь хэшей без какой-либо привязки к данным о транзакциях, может или должна определяться как Биткоин? Даже в рамках представлений крупноблочников, где конечные пользователи используют только легкие узлы, блоки все равно должны были соответствовать некоторым правилам.
Аргумент Брайана можно интерпретировать более благожелательно: майнеры могут делать с протоколом что угодно, но с учетом ограничений, налагаемых на них легкими кошельками. В этом контексте идея крупных блоков имеет больше смысла. Таким образом, правилами, ограничивающими размер блока, можно пренебречь, однако разные легкие кошельки применяют различные иные подмножества правил. Следовательно, при проведении границы между тем, что майнеры могут контролировать, и тем, что не могут, возникает серая зона. Сторонники малых блоков не были на такое согласны. Они требовали четкой ясности в отношении того, что является сетевым правилом, а что нет, чтобы почти всегда не было сомнений в том, что представляет собой наиболее длинный валидный блокчейн.
Я часто пытался исследовать видение этой темы некоторыми сторонниками крупных блоков. Я задавал им такие вопросы, как: что произойдет, если майнеры увеличат инфляцию выше лимита предложения в 21 миллион и передадут эти монеты себе; если эта цепочка будет обеспечена большей работой, то будет ли это биткоином? Обычно они отвечали примерно так: “Майнеры никогда бы этого не сделали”; или “Биткоин — это теория игр и стимулы, если бы майнеры сделали это, цена бы упала”; или “теория игр построена так, что майнерам подобное невыгодно”. Я же утверждал, что если бы майнеры сделали это, все узлы и кошельки сочли бы эту цепочку недействительной. Если майнеры нарушат лимит предложения монет, вы просто не увидите эти блоки. Крупноблочники обычно отвечали на это, что “узлы не имеют значения”; для них Биткоин всегда определяется самой обеспеченной работой в цепочке, независимо от того, принята она узлами или нет. Если пользователь хочет быть частью Биткоина, ему может потребоваться загрузить и установить для своего узла новое программное обеспечение, чтобы убедиться, что он имеет дело именно с цепочкой, обеспеченной наибольшей работой, независимо от того, нарушает ли она некоторые ранее установленные правила.
Мне не было до конца ясно, кто здесь прав. Это должно было зависеть от того, как поведут себя люди. Если все будут вести себя в соответствии с логикой крупноблочников и загружать на свои узлы новые клиенты, чтобы следовать самой длинной цепочке, то да, они окажутся правы. Однако, если все поведут себя как сторонники малых блоков и станут упорно держаться своего первоначального клиента, тогда правыми окажутся уже они. Этот вопрос оставался открытым, и никто не мог с абсолютной уверенностью дать правильный ответ. Экстремисты с обеих сторон были убеждены в своей правоте, однако их взгляды выглядели довольно узколобыми. Обе стороны построили ментальную модель, предполагающую, что люди будут вести себя в соответствии с их убеждениями. Реальность, конечно же, заключалась в том, что у разных людей идеи и взгляды также разнятся, и поэтому они ведут себя по-разному. Представления крупноблочников, по-видимому, основывались на том, что с ними соглашались почти все, в то время как мелкоблочникам было достаточно согласия любого значительного меньшинства. С этой точки зрения мне казалось, что поддержка малых блоков — более верная позиция. Одни пользователи будут обновлять свои клиенты, а другие нет, что может привести к разделению сети.
Эти различия видения роли полных узлов в обеспечении соблюдения правил привело к дальнейшей путанице. Выступающие за малые блоки часто говорили, что они против увеличения лимита размера блока, поскольку это сделало бы стоимость поддержки узла слишком высокой, что могло бы уменьшить общее количество узлов и привести к централизации. Их оппоненты ошибочно интерпретировали это как опасения значительного снижения количества ретрансляционных узлов, и поэтому одноранговая сеть, по которой распространяются данные транзакций, может быть слишком слабой. Таким образом, сеть будет централизована вокруг нескольких крупных узлов. Однако сторонников малых блоков беспокоил не этот тип централизации. Их больше волновала возможность того, что недостаточное количество конечных пользователей сможет запускать биткоин-клиенты, которые полностью проверяют все правила протокола, что может подорвать децентрализацию исполнения правил протокола. Крупноблочники, казалось, вовсе не понимали этой проблемы и считали, что конечным пользователям не обязательно нужна возможность запускать собственные клиенты полного типа. Таким образом, для них риск того, что из-за больших блоков запуск полных узлов окажется чрезмерно дорогим, не казался серьезной проблемой. Эти разные взгляды, по сути, означали, что обе стороны транслировали друг другу свою повестку, но не пытались понять точку зрения друг друга.
Эта путаница часто смешивалась с аналогичным заблуждением о том, как работает Биткоин. А именно, с популярной идеей о том, что “атака 51%” может позволить украсть пользовательские средства даже в отсутствии валидной подписи расходующей стороны. Но майнеры не могут этого сделать, по крайней мере, в мире малых блоков; все, на что способны майнеры при атаке 51% — это осуществить транзакции с двойной тратой, когда имеется действительная подпись для двух конфликтующих транзакций. Нельзя сказать, что все крупноблочники этого не понимали; в какой-то мере понимание присутствовало. Просто это была новая область науки, исследуемая впервые. По этому вопросу с обеих сторон существовала значительная неуверенность, и требовалось время, чтобы прийти к взаимопониманию. Отсутствие ясности в этой области уменьшило способность игроков на стороне крупных блоков достигать своих целей. Если бы они сильнее сконцентрировались на том, чтобы убрать из правил протокола ограничение на размер блока, а не создавали путаницу в отношении того, существуют ли такие правила вообще, они могли бы добиться большего успеха.
Мнение Брайана о том, что истинная цепь определяется хэшрейтом, похоже, подкрепляется последним предложением в whitepaper Биткоина, которое гласит:
Они голосуют своей процессорной мощностью, выражая свое согласие с действительными блоками при помощи работы над их наращиванием, и отклоняя недействительные блоки путем отказа от работы с ними. С помощью этого механизма консенсуса можно обеспечить соблюдение любых необходимых правил и стимулов.
Эта цитата часто распространялась и повторялась сторонниками крупных блоков. Однако неясно, разделял ли вообще Сатоши это видение. Действительно, в whitepaper также говорится:
Мы рассматриваем сценарий, когда злоумышленник пытается создать альтернативную цепочку быстрее, чем создается честная. Даже если ему это удастся, система от этого не станет открытой для произвольных изменений, таких как создание ценности из ничего или получение денег, которые никогда не принадлежали злоумышленнику. Узлы не собираются принимать недействительные транзакции в качестве оплаты, а честные узлы никогда не примут блок, содержащий такие транзакции. Злоумышленник может лишь попытаться изменить одну из своих транзакций, чтобы вернуть недавно потраченные деньги 3.
Выше Сатоши ясно дает понять, что узлы действительно применяют определенные правила. Важно оценивать whitepaper в контексте: в первую очередь, речь шла о потенциальном решении проблемы двойной траты. Пользователи, запускающие узлы для обеспечения соблюдения правил, не были ключевым новшеством системы; им был Proof-of-Work. Майнеры определяли порядок транзакций. Именно в этом контексте, по утверждениям сторонников малых блоков, и следует оценивать последнюю строчку документа. Однако эти два заявления в whitepaper кажутся несколько противоречащими друг другу.
Многим казалось, что существуют принципиально разные взгляды на то, как работает Биткоин. Однако эта потенциальная трудность не обязательно должна была напрямую вызывать проблемы в этой войне за размер блока. Разумеется, крупноблочники больше всего хотели более крупных блоков. Они хотели дать майнерам полную свободу действий в отношении размера блока, будь то система, подобная BIP 100, где майнеры голосуют за конкретный лимит, или вовсе полное удаление лимита размера блока из правил протокола Биткоина. Вместо этого вокруг этой проблемы возникла путаница: крупноблочники часто утверждали, что перевес по хэшрейту предоставлял практически неограниченные возможности, не требуя при этом добавления каких-либо уточнений. Отсутствие фокуса и ясности сильно повредило лагерю больших блоков. Им стало намного труднее привлекать пользователей на свою сторону. Аргумент о том, что в случае хардфорка по увеличению лимита размера блока, поддержанного большинством майнеров, пользователи будут устанавливать новый клиент с увеличенным лимитом размера блока, казался мне весьма логичным; в этом и была цель крупноблочников. Однако аргумент о том, что кто-либо загрузит и установит новый клиент, чтобы следовать более длинной цепочке, которая крадет монеты у отдельных пользователей и передает их майнерам, особого смысла не имел. Если бы это действительно произошло, есть серьезные основания полагать, что крупноблочники быстро отказались бы от своих утверждений об отсутствии сетевых правил. Поэтому, возможно, видимая разница во взглядах была не такой глубокой. Крупноблочники просто хотели блоки большего размера. Они выдвинули аргумент о цепочке, обеспеченной наибольшим объемом работы, которая определяет Биткоин, поскольку думали, что это помогает их делу.
В своем блоге Брайан написал о том, что Coinbase неизменно поддерживает Bitcoin XT:
Я думаю, что BitcoinXT — одно из нескольких хороших предложений, которыми мы были бы довольны, но сверх этого людям не стоит сильно в него углубляться (мы держим рабочие узлы различных типов, включая Bitcoin Core, XT, кастомный узел собственной разработки, о котором мы писали ранее, и мы, вероятно, добавим в будущем новые узлы, такие как BitcoinUnlimited)
Незадолго до этого поста с объяснением Брайан публиковал твиты (теперь удаленные), в которых выражалась поддержка Bitcoin XT. Практически сразу после этого Coinbase была удалена из перечня рекомендованных кошельков на сайте Bitcoin.org. Этот веб-сайт был одним из основных источников информации о Биткоине, и изначально он был создан Сатоши 4. Это агрессивное действие было очень похоже на политику модерации на Bitcoin Reddit. Это приводило в ярость крупноблочников, которые сочли такой поступок мелочным, детским и вызывающим разногласия. С другой стороны, сторонники малых блоков заявили, что Coinbase фактически объявила о своем намерении перейти с биткоина на альткоин. Поэтому они считали, что его больше не следует указывать на веб-сайте Биткоина, ибо это вызывает путаницу. Как и цензура Reddit, это действие, похоже, только укрепило решимость крупноблочников и еще больше раскололо сообщество.
В конце декабря многие, казалось, были удивлены продолжающейся поддержкой, которую Брайан оказывал Bitcoin XT, поскольку на тот момент идея казалась почти мертвой, коль скоро большинство майнинг-пулов заявили, что увеличение до 8 Мб — это перебор. В том же посте Брайан поместил скриншот с таблицей Excel, демонстрирующей предпочтения майнеров в отношении размера блока. На скриншоте видно, что все три основных майнинг-пула выступают против Bitcoin XT. За шесть месяцев, прошедших с тех пор, как майнеры согласились на увеличение лимита до 8 Мб, их мнения изменились. Теперь на повестке дня стояло простое, более консервативное увеличение до 2 Мб, и, похоже, оно набирало обороты.
14 января 2016 года произошел еще один поворотный момент в войне за размер блока. Майк Хирн — главный сторонник Bitcoin XT — был настолько разочарован отсутствием прогресса в вопросе о размере блока, что объявил Биткоин неудавшимся экспериментом и анонсировал продажу всех своих монет 5. Майк высказал собственное мнение:
В результате гражданской войны Coinbase — крупнейший и самый известный биткоин-стартап в США — была удалена с официального сайта Биткоина за выбор “неправильной” стороны и запрещена на форумах сообщества. Когда отдельные части сообщества совершают злобные нападки на людей, познакомивших миллионы пользователей с криптовалютой, это значит, что вокруг все действительно посходили с ума.
То, как Майк Хирн “хлопнул дверью”, освещалось во многих средствах массовой информации и, по всей видимости, привело к 10-процентному падению цены биткоина с 432 до примерно 388 долларов США.
Через пару дней после объявления Майка, 16 января 2016 года, Джихан Ву написал в Твиттере следующее:
Лузер Майк Хирн допустил множество расистских и несправедливых высказываний в адрес китайских биткоинеров. Это объясняет, почему он не сумел получить достаточную поддержку 6.
Джихан был одним из самых влиятельных и значительных игроков в сфере майнинга. Он был соруководителем и соучредителем Bitmain — китайской компании, которая производила майнеры, имела собственные майнинг-фермы и управляла майнинг-пулами. Джихан был явно зол на выходку Майка, однако его критика воспринимается несколько иронично, поскольку Джихан вскоре зарекомендовал себя как ведущий игрок в лагере больших блоков. Что касается утверждения Джихана о расизме Майка, то это показалось мне странным, поскольку во всех моих взаимодействиях с Майком это вообще никак не проявлялось. С другой стороны, некоторые крупноблочники высказали антикитайские комментарии в моем непосредственном присутствии. Например, они заявляли, что причина отсутствия поддержки XT заключается в китайской лояльности репрессивному статус-кво, и проводили параллели с широкой поддержкой коммунистической партии в Китае. Это объяснение отсутствия поддержки XT, на мой взгляд, было нелепым и возмутительным, и проистекало из обычной предвзятости, которая была широко распространена в этом вопросе. Не исключено, что Майк также высказывал подобную точку зрения, но это маловероятно. На следующий день Майк указал в посте на форуме, что у него были бурные телефонные переговоры с китайскими майнерами. Видимо, переговоры не привели к желаемому результату, и, возможно, именно это и послужило причиной обвинений в расизме. В посте также объяснялось, почему изначально в качестве лимита в Bitcoin XT было выбрано 8 Мб; восемь — счастливое число в Китае.
Почему восемь? Потому что это китайский омоним слов “процветание” или “богатство”:
Восьмерка постоянно всплывает в китайском биткоин-сообществе. Таким образом, наш выбор, очевидно, не был основан на каком-либо научном анализе. Очевидно, что наличие констант протокола Биткоина, определяемых рифмами, — сомнительная мера, но, тем не менее, мы пошли на компромисс и сделали это.
После того, как Core отклонил модифицированный теперь BIP 101, мы с Гэвином вместе выпустили XT. В этот момент майнеры поменяли свои установки. > Они заявили, что никогда не запустят ничего, кроме Core, и точка, конец истории. Это “требование” раньше не оговаривалось. В личных разговорах (у меня было несколько телефонных звонков с майнерами по всему миру, включая майнеров в Китае) и публичных заявлениях они дали понять, что их лояльность к Core абсолютна, и какие бы изменения мы ни внесли в XT, они никогда не запустят этот клиент. Таким образом, дальнейший поиск компромисса не имеет смысла 7.
Примерно в этот момент, когда в гроб XT был забит последний гвоздь, сторонникам крупных блоков потребовалась новая причина для объединения. Новая попытка добиться крупных блоков называлась Bitcoin Classic 8. Это был простой разовый переход к лимиту в 2 Мб, гораздо более умеренное и разумное предложение, чем увеличение вплоть до 8000 Мб, которые подразумевались в Bitcoin XT. На этот раз главным разработчиком предполагался Гэвин, а не Майк. Джефф Гарзик теперь также поддержал это предложение и был указан на веб-сайте Classic как разработчик. У Classic, в силу более умеренного подхода к размеру блока, было больше шансов на успех, чем у XT.
Практически все майнеры и крупные игроки отрасли согласились с разовым увеличением до 2 Мб. С другой стороны, имел место прецедент: кампания по упразднению правила консенсуса Биткоина только что провалилась, и теперь крупноблочники снова пытались сделать то же самое. Это, казалось, вселяло надежду в лагере малых блоков. Биткоин-майнер Джонатан Тýмим утверждал на конференции по масштабированию в Гонконге, что 2 Мб — это безопасный лимит и отстаивал Bitcoin Classic. Мелкоблочники прозвали монету “ToomimCoin” 9, пытаясь связать Classic с Джонатаном Тумимом, так же, как Bitcoin XT был связан с Майком. Bitcoin Classic был официально выпущен 10 февраля 2016 года 10.
Методология активации Bitcoin Classic была почти идентична Bitcoin XT, без каких-либо улучшений. Помимо этого, не было приложено никаких усилий для достижения широкого консенсуса перед тем, как побуждать пользователей запускать клиент. Действительно, крупноблочники не желали этого делать. Мало того, что они хотели блоки большего размера, они также, по-видимому, презирали методологию активации, отстаиваемую противоположным лагерем. Это было связано с потерей доверия, а также гневом из-за цензуры и других предполагаемых агрессивных действий мелкоблочников. Таким образом, Bitcoin Classic сохранил 75-процентный порог активации для майнеров, который использовал Bitcoin XT. Мне это показалось тактической ошибкой. Если бы они выбрали более умеренную методологию активации с упором на безопасность, у крупноблочников была бы возможность разделить лагерь малых блоков, а в перспективе и выйти победителями в этом конфликте.
В целом сторонники малых блоков выступили против 75-процентного порога по нескольким причинам. Флаг в заголовке блока считался сигнальным механизмом безопасности, указывающим, что все готовы к обновлению. По их мнению, обновление само по себе не должно вызывать споров или голосований. В апреле 2012 года софтфорк P2SH был активирован с порогом 55%. Однако после этого обновления 45% майнеров, которые не обновились, создавали недействительные блоки еще несколько месяцев после активации. Это было сочтено проблемой, и поэтому на будущее был выбран новый 95-процентный порог, который используется до сих пор. Для сторонников крупных блоков флаг майнера был процессом голосования или принятия решения. При таком сценарии 75 процентов представлялись подавляющим большинством, а 95 процентов - нереальной целью. Вдобавок к этому крупноблочники считали, что 75% хэшрейта с легкостью обеспечит построение наиболее длинной цепочки. По их мнению, 51% вполне достаточно для управления сетью, а 75% было даже избыточно крупным запасом.
Я не думаю, что мелкоблочники выступали против голосования майнеров как способа выяснить их мнение. Однако существует разница между предварительной оценкой мнения майнеров и флагами в заголовке блока, которые сразу активируют изменения в правилах консенсуса. Сторонники малых блоков считали эти флаги критически важной частью сетевой безопасности, а совмещение активации с голосованием майнеров за предложения полагали опасным и неуместным.
На этом этапе конфликта игроки из лагеря крупных блоков не осознавали, что выбранная ими методология активации значительно снижает их собственные шансы. Это было почти то же самое, что пойти в бой, привязав себе руку за спиной. Напомню, что крупноблочники пытались увеличить лимит размера блока: действующее правило подразумевало, что размер блоков не должен был превышать 1 Мб, а они хотели, чтобы этот лимит достиг 2 Мб. Таким образом, правило малых блоков является подмножеством правил больших блоков, и это создает асимметрию. Если произойдет хардфорк и сеть разделится, узлы крупноблочников будут рассматривать цепь с малыми блоками как валидную, в то время как узлы мелкоблочников будут считать цепь с большими блоками невалидной. В случае конфликтного разделения цепей эта асимметрия даст преимущество сторонникам малых блоков. Это означает, что если цепь мелкоблочников когда-либо перехватит лидерство в Proof-of-Work, цепь с большими блоками попросту исчезнет в результате обычного удаления отвергнутых блоков (т.н. wipeout). Это может показаться незначительной угрозой, особенно если цепь с крупными блоками поддерживает подавляющее большинство майнеров, но нужно рассматривать ситуацию с точки зрения разделения. Если в результате простой случайности после создания первого блока размером более 1 Мб далее в лидерах окажется цепь с малыми блоками, это сотрет цепь с большими блоками. Для стороны, поддерживающей большие блоки, это может иметь разрушительный эффект, так как майнеры будут опасаться когда-либо снова произвести больший блок.
Если рассматривать все с точки зрения финансовых рынков, асимметрия ситуации потенциально становится еще более значительной. Финансовые спекулянты получают возможность покупать криптовалюту, поддерживаемую цепью малых блоков и продавать токены крупноблочников. В результате крупноблочная монета будет терять в цене, а мелкоблочная - расти, что, в свою очередь, будет стимулировать майнеров ради увеличения вознаграждения переключаться на майнинг мелкоблочной монеты. Это может в конечном итоге привести к полному уничтожению цепи с крупными блоками, что принесет спекулянтам большую прибыль.
У этой проблемы было простое решение: методология активации могла требовать, чтобы первый блок в точке активации был больше 1 Мб; это привело бы к чистому разделению, при котором ни одна цепочка не была бы уязвима для уничтожения. Однако, когда я обсуждал это со сторонниками крупных блоков, мне сказали, что это не проблема в силу их подавляющего превосходства в поддержке майнерами. Считая, что Биткоин определяется через лидерство по хэшрейту, они не хотели подрывать эту веру внедрением дополнительных контрольных точек. Получалось, что идеология больших блоков заставляет их делать свою сеть более уязвимой. Один известный представитель лагеря малых блоков, обсуждая со мной этот вопрос, сказал, что лучше не мешать противнику совершать ошибку и не поднимать эту тему в обсуждениях. Некоторые мелкоблочники предпочитали держать этот потенциальный инструмент про запас в качестве аварийного механизма на случай, если цепь крупных блоков с указанной уязвимостью и впрямь будет запущена. По мере развития военных действий до крупноблочников дошла уязвимость их позиции, и они действительно приняли подход чистого разделения блокчейнов через контрольную точку. Однако прийти к этому им удалось лишь летом 2017 года.
У Bitcoin Classic (наряду с Bitcoin XT) был еще один недостаток, который в сочетании с упомянутой выше асимметрией только усугубил для них ситуацию: 75-процентное скользящее окно активации. Как упоминалось ранее, Биткоин использовал 95-процентный порог активации софтфорков, но порог должен был соблюдаться в течение фиксированного двухнедельного срока. Напротив, хардфорк Bitcoin Classic имел скользящее 75-процентное окно; это означало, что если в 750 блоках есть отметка о поддержке Classic в любой последовательный период из 1000 блоков, форк активируется. Предположим, что майнеры обновляются постепенно, что, безусловно, имело место в случае предыдущих обновлений. Поскольку льготный период составляет всего четыре недели, это, по сути, означает, что на тот момент, когда был произведен первый большой блок, примерно 25 процентов майнеров по-прежнему будут добывать только мелкие блоки. Если бы использовались фиксированные окна голосования, даже с 75-процентным порогом, это, по крайней мере, позволило бы получить более чем 75-процентную поддержку. При скользящем же окне ситуация может быть хуже. Если делать статистический анализ сигналов майнеров, предполагая медленное внедрение, то Classic, вероятно, преодолел бы 75-процентный порог по флагам поддержки еще до того, как 75 процентов майнеров обновятся. Наиболее вероятным сценарием предполагается распределение 29% против 71% 11.
Таким образом, скользящее окно почти гарантированно приводило к хаотическому расколу. Крупноблочники настаивали на том, чтобы идти в бой со связанными за спиной руками и завязанными глазами. Вне зависимости от исходного соотношения сторон, вероятным исходом была победа мелкоблочников.
Это скользящее окно казалось совершенно ненужным, и некоторые биткоин-разработчики неоднократно объясняли это Гэвину. Однако Гэвина это не беспокоило, поскольку, по его мнению, поддержка крупных блоков была подавляющей. Следовательно, это не было важной проблемой. Возможно, со стороны Гэвина было бы благоразумнее прислушаться к этой обратной связи, поскольку при незначительных дополнительных усилиях он мог бы увеличить шансы сделать обновление как можно более плавным и потенциально привлечь на свою сторону больше людей. Действительно, Гэвин мог ошибаться в своем предположении об уровне поддержки Bitcoin Classic. Лучше перестраховаться, чем потом сожалеть, — думал я. Такой необдуманный отказ не был похож на старого доброго Гэвина, который всегда казался мне более осторожным и открытым. Казалось, его общее разочарование ситуацией в какой-то степени затуманило его суждения, и он понемногу терял терпение. Возможно, эта потеря Гэвином терпения была полностью оправдана, и, возможно, все эти высказывания опасений из лагеря малых блоков были просто способом тянуть время. Мелкоблочники неплохо с этим справлялись. Не то, чтобы мелкоблочники говорили: “Просто исправьте эти две вещи, и мы поддержим Classic”. Если бы Гэвин внес требуемые исправления, те же люди просто перешли бы к обсуждению новых найденных ими проблем клиента Classic. Например, они попросили бы его изменить заголовок блока, чтобы легкие клиенты знали, что произошел хардфорк — это было еще одной функцией безопасности, которую мелкоблочники часто требовали применить. Как и в большинстве эпизодов в ходе войны, правда, вероятно, находится где-то посередине, но тот факт, что сторонники крупных блоков рано или поздно решили некоторые из этих проблем, указывает, что в утверждении о том, что они сами наносили себе ущерб изначально выбранной системой активации, есть доля правды.
Несмотря на эти потенциально катастрофические недостатки в методологии активации Bitcoin Classic, его популярность росла. Почти все венчурные компании Сан-Франциско, поддерживаемые Кремниевой долиной, такие как Coinbase, поддержали Classic. Слабые стороны Bitcoin Classic были слишком теоретическими, слишком техническими, не получили широкого обсуждения и мало кем осознавались. В этот момент сторона крупноблочников набрала обороты и начала побеждать в войне. Все больше и больше майнинг-пулов, таких как Bitfury Group, начали заявлять о своем намерении поддерживать Bitcoin Classic 12. Все больше компаний экосистемы также заявляло о своей поддержке. Однако количество блоков, сигнализирующих о поддержке Bitcoin Classic, было довольно низким, и, похоже, мало кто из пользователей держал узлы с клиентом Classic.
В феврале 2016 года было проведено мероприятие под названием “Круглый стол Сатоши”. Это было второе из серии ежегодных мероприятий, продолжавшихся до 2020 года и дававших лидерам блокчейн-индустрии возможность собираться и обсуждать различные вопросы. В повестке дня на этот раз доминировал вопрос о размере блока. Я не присутствовал на этом мероприятии, поэтому не могу предоставить информацию из первых рук. Однако Брайан Армстронг был там вместе со своим тогдашним коллегой, Чарли Ли, основателем Litecoin и его братом Бобби Ли. После конференции Брайан написал сообщение в блоге, в котором критиковал нескольких разработчиков Bitcoin Core и заявлял о своей поддержке Bitcoin Classic. Насколько я помню, изначально пост был более резким по отношению к Bitcoin Core, однако он был быстро исправлен на более умеренный.
По моему мнению, возможно, прямо сейчас самый большой риск для Биткоина, по иронии судьбы, заключается в том, что больше всего помогало ему в прошлом: разработчиках Bitcoin Core.
Команда Core состоит из людей с очень высоким IQ, но после того, как я провел с ними некоторое время в последние выходные, кое-что в их команде меня начало беспокоить. Некоторые из них демонстрируют очень плохие коммуникативные навыки или недостаточную зрелость — это подрывает способность Биткоина привлекать новых разработчиков для продвижения протокола. Они предпочитают “идеальные” решения “достаточно хорошим”. И если идеального решения не существует, они, похоже, не возражают против бездействия, даже если это подвергает Биткоин риску.
Нам нужно сформировать новую команду для работы над протоколом. Команду, которая приветствует новых разработчиков в сообществе, готовую идти на разумные компромиссы, команду, которая поможет протоколу продолжать масштабироваться. В течение одного-двух месяцев вы услышите подробности.
Если вы хотите обеспечить успех Биткоина, я бы посоветовал вам в ближайшее время перейти на Bitcoin Classic.
Я также привел пример веб-браузеров. Команды Chrome и Safari — жесткие конкуренты, но они также посещают одни и те же конференции и сотрудничают с IETF в области стандартов. На конференциях также присутствуют многие другие конкурирующие компании. Но они не проявляют вражды и не воюют друг с другом. > Мы все работаем в одной отрасли и во многом остаемся друзьями. Такую же картину хотелось бы видеть и среди команд, работающих над Биткоином. Предоставляя возможность выбора на рынке, вы добьетесь большего, а не меньшего прогресса 13.
Вышеприведенное кратко излагает, пожалуй, самые спорные части сообщения Брайана. Это явно отражало растущее недовольство некоторыми разработчиками Bitcoin Core и желание, чтобы Биткоин от них освободился.
Брайан привел пример конкурирующих команд разработчиков веб-браузеров, Chrome против Safari. Для сторонников малых блоков это со всей очевидностью означало, что Брайан не понимает ситуации. У веб-браузеров не было никакой глобальной системы консенсуса. Вся эта война, с точки зрения мелкоблочников, была совершенно не про конкурирующие команды; речь шла о конкурирующих правилах сетевого консенсуса и, следовательно, о конкурирующих криптовалютах, о потенциальных рыночных ценах и финансовых потоках между рынками двух монет, а также обо всех сложностях, которые могло повлечь за собой разделение блокчейна. Bitcoin Classic в действительности даже не был по-настоящему конкурирующим. Это был в основном тот же код, что и в клиенте Bitcoin Core, с некоторыми измененными параметрами. Действительно конкурирующие команды на самом деле существовали, их код сильно отличался от кода команды Bitcoin Core. Эти и другие биткоин-клиенты были написаны на других языках, как, например клиенты Libbitcoin или BTCD. Неспособность понять разницу между конкурирующими монетами и конкурирующими командами была ключевой ошибкой сторонников крупных блоков. С точки зрения мелкоблочников, крупноблочники хотели блоки большего размера, но не понимали, как работает Биткоин и как проводить хардфорк, поэтому они позволили своему разочарованию излиться на команду Bitcoin Core и ее клиент, ставшие удобным козлом отпущения.
Несмотря на отсутствие выраженного сигнализирования о принятии Bitcoin Classic со стороны майнеров, в феврале 2016 года казалось, что майнеры будут по крайней мере готовиться к тому, чтобы просигнализировать, и активация хардфорка выглядела вполне реальной. В то же время поддержка Classic со стороны Coinbase теперь выглядела убедительно. Учитывая некоторые особенности процесса активации и намерения мелкоблочников, серьезность которых крупноблочники не сумели вовремя распознать, Биткоин, как мне казалось, двигался к серьезному кризису и расколу. На этом этапе войны сторона крупных блоков была в более сильной позиции, чем когда-либо, но в то же время у их оппонентов все еще оставались козыри в рукаве. Биткоин оказался на грани катастрофического краха.
https://www.reddit.com/r/bitcoinxt/comments/3yewit/psa_if_youre_running_an_xt_node_in_stealth_mode/ ↩︎
https://blog.coinbase.com/scaling-bitcoin-the-great-block-size-debate-d2cba9021db0 ↩︎
https://github.com/bitcoin-dot-org/Bitcoin.org/commit/7d1cdd94651461ff13ad4ed10b05b2374690fac2 ↩︎
https://blog.plan99.net/the-resolution-of-the-bitcoin-experiment-dabb30201f7#.h81ihjioy ↩︎
https://github.com/bitcoinclassic/bitcoinclassic/releases/tag/v0.11.2.cl1 ↩︎
https://bitcoinmagazine.com/articles/bitcoin-classic-hard-fork-likely-to-activate-at-hashrate-support-1457020892 ↩︎
https://twitter.com/valeryvavilov/status/688054411650818048 ↩︎
https://blog.coinbase.com/what-happened-at-the-satoshi-roundtable-6c11a10d8cdf ↩︎