Почему не Segwit2x?

В 2015 году, когда рост числа транзакций поднял вопрос о масштабировании, эта тема стала рассматриваться все чаще, но увеличение размера блока в это время было невозможно. Сообщество обсуждало вопрос о размере блока ещё и до того, как Сатоши в 2010 году установил ограничение в 1 Мб.

Благодаря технологическим решениям последнего времени ограничения сейчас и вовсе не существует! (вернемся к этому позже).

В предыдущей публикации я отмечал, что, начиная с 2010 года, небольшое число фактических софт-форков было успешно реализовано, а сам механизм их внедрения совершенствовался и усложнялся. К середине 2015 года, добавление нового функционала в блокчейн и изменение правил консенсуса было поставлено на поток, при этом всегда соблюдался основополагающий принцип обратной совместимости, и сохранялась непрерывность в работе всей сети.

Почему так важна обратная совместимость?

Каждый, кто хоть немного знаком с разработкой и внедрением обновлений, знает о затруднениях, связанных с донесением новой версии программы до как можно большего числа пользователей. Проблема значительна даже при отсутствии объективных препятствий (технических или политических), которые бы мешали проведению обновления.

К примеру, всякий раз, когда компания Microsoft отдаёт в релиз новую версию Office, она дополняет её возможностью чтения старых форматов, конвертации между разными расширениями файлов. Ведь факт того, что многие используют старые версии, ту же Windows XP (которой уже более 15 лет!), известен разработчикам. Даже несмотря на все заявления о том, что поддержка XP прекращается, они выпустили аддон и для этой версии, на фоне последних событий, связанных с вирусом-вымогателем WannaCry.

Невозможно не вспомнить и про раздражающие напоминания о доступности системных обновлений, которые всплывают на смартфоне, и которые, бьюсь об заклад, раздражают большинство читателей, и вызывают вопросы: «не сломает-ли очередной апдейт что-то в моем телефоне, ждать ли завершения загрузки до конца, не пользуясь при этом устройством»?

Блокчейн в сравнении с операционными системами ещё более чувствительно воспринимает любые изменения. Ведь все узлы сети должны согласиться и принимать только единые правила консенсуса. И в этом смысле модифицирование правил ставит всю систему перед угрозой возникновения критических ошибок.

Сейчас мы можем лишь надеяться на то, что все участники системы обновят свое ПО до той версии, поддержка которой будет гарантирована… Но и в этом нельзя быть уверенным на все сто… А ведь для таких требовательных к вопросам безопасности аспектов (обеспечение сохранности неприкосновенности активов в размере десятков миллиардов долларов) это имеет первостепенное значение. Ведь пользователи должны сами, без тени сомнений переходить на новое ПО, не беспокоясь о потенциальных угрозах безопасности.

Если добавить к этой проблеме риск возникновения экономических и финансовых конфликтов, то мы встаем лицом к лицу с угрозой атак на систему, перед вероятностью раскола цепи. Для большинства систем расхождение не является серьезной проблемой, оно даже полезно в некотором смысле, так как увеличивает конкуренцию и позволяет им эволюционировать. Базовые же правила наиболее капиталоёмкой и самой большой в мире непрерывной цепи, скорее всего, не лучшая арена для противостояний.

Возникновение определенных несовместимостей в системе неизбежно и иногда необходимо для её улучшения, но это создает определенные накладки. Достаточно инертны к подобным нововведениям правила и стандарты (даже в случае ad-hoc систем). В случае текстового редактора всегда удобно добавить новые функции, а также дополнить их программными средствами, которые могут конвертировать разные форматы файлов, чего нельзя сказать про распределённую сеть.

Обеспечение обратной совместимости в блокчейне

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

“Я обратно совместим вот уже 50 лет”

 

Различие между хард-форком и софт-форком уже было рассмотрено в предыдущем обзоре.

Достаточно долго считалось, что софт-форк может только ужесточить правила, и, соответственно, добавление новых возможностей к протоколу имеет свои ограничения. Конечно же, возможность менять как угодно, избавится от правил вообще, выгладят более привлекательно, не так ли?

Но, как оказалось, существует такой класс изменений, для которого софт-форка не достаточно — это изменения формата заголовка блока и подтверждение его достоверности. А самое удивительное – добавление параметра транзакции не требует хард-форка. И во многих случаях это практично.

Основу метода составляет фиксирование дополнительных данных в хеше (который не воспринимается другими узлами) внутри блока. SegWit показал оправданность применения этого метода.

SegWit — яркий пример эффективного решения

Причина, по которой Segwit можно считать оптимальным выбором при внедрении обновлений заключается в том, что встраивание данных подписи в саму структуру транзакции было ошибочно в первоначальном дизайне протокола. Отличным решением стала не только возможность отдельной обработки данных подписи (блок СегВита), но и разобщение её привязки к идентификатору транзакции.

Размещение данных подписи в отдельный блок позволяет более точно обрабатывать транзакции, расширяет возможности (в том числе позволяет использовать более сложные сценарии, предусмотренные для смарт-контрактов), исправляет долгую задержку при переводе, поскольку ID больше не связано с подписью.

Возможность включать эти данные в общий блок, при передаче вместе с транзакцией к принимающим узлам, с фиксацией их в хеше (дереве Меркла), сохраняется. И это даёт ещё одно преимущество — ведь новая структура данных остаётся совместима с узлами, которые проверяют блоки, выстроенные по старой модели.

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

Это также означает и то, что этот дополнительный блок данных не попадает под определённое ранее ограничение в 1 Мб. Теперь сохранение большего количества данных не будет нарушать обратную совместимость со «старыми» узлами. Одновременно это позволяет блокам быть больше этого фиксированного размера в 1 Мб.

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

Это также означает, что эти дополнительные данные блока не подпадают под ограничение размера блока в 1 Мб. Мы можем хранить больше данных в блоках, не нарушая обратной совместимости со старыми узлами. Это позволяет блокам быть намного больше, чем 1 Мб.

Пройдя по ссылке, вы сможете увидеть блок размером в 3,7 Мб, который был создан для проверки в сети Bitcoin testnet.

Происходит не только удвоение памяти для типичных транзакций, которые используют этот блок, но и появляется возможность очистки данных «неизрасходованных выходов» (UTXO), которые используют дополнительные ресурсы памяти при проверке блоков узлом, так как они также имеют подписи. Теперь обработка будет происходить более эффективно всей системой, что приводёт к вычитанию их при обсчёте всего блока.

Итак, почему всё же SegWit2х?

Помните, выше уже была затронута тема того, что возможность увеличения размера блока была отключена?

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

Эта наработка была сделана без проведения соответствующего анализа экспертами, не было обоснована научно.

Несмотря на то, что гораздо проще объяснить простое увеличение размера блока, чем Segwit, полный разбор должен быть произведен, для того чтобы понять почему такое простое решение является самым противоречивым. Наиболее критично в нём то, что оно прежде всего нарушает обратную совместимость. Причём в результате происходит противопоставление интересов одних пользователей интересам других. При этом оно не даёт никаких долгосрочных перспектив, так как дополнительный размер блока снова заполнится и сборы за приоритет снова подскочат. В сущности это напоминает «слепое» пинание чего-то по дороге, не глядя даже на то, пустая ли это бутылка или это гнездо с осами.

Еще читать  Регулирование криптовалют в РФ: ждать или разрабатывать?

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

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

Опять же напомним, речь идет о блокчейне, в задачу которого входит защита того, что стоит миллиарды долларов!

Можно ли произвести простое увеличение базового размера блока без возникновения ошибок в протоколе? Возможно — но только при условии благоприятной политической и экономической обстановки, когда предположительно большинство участников согласиться с датой перехода на новое ПО, если о ней будет объявлено заранее. 2015 год отличался же наихудшей политической обстановкой для подобного перехода. Нынешние условия для таких изменений с тех пор не изменились… Надеюсь, что ситуация станет лучше. Но с моей стороны нет никаких прогнозов насчет этого на ближайшее время, и я бы никому не рекомендовал их делать.

Если бы фактическое увеличение размера блока было согласовано между всеми заинтересованными участниками и между ними не существовало бы экономических разногласий, то непременно кто-нибудь его уже давно бы провел, что вызвало бы явное разделение. Да, разделение цепи произошло бы, но это было бы последствием сознательно принятого решения.

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

В результате нескольких случившихся с той поры инцидентов, которые не могли оказать значительное влияние на общую сумму мощностей, ни разу не произошло отклонение от консенсусных правил Биткойна в этих попытках инициировать хард-форк. Реальность такова, что эти новые блоки всегда будут отвергаться экономическим большинством. Крупные биржи, кошельки, пользователи не приняли бы эти видоизменённые блоки. Они стали бы подделкой (альткойном).

К концу 2015 года несовершенство изначальной структуры привело к тому, что все уже просто кричали на каждом углу о 2 Мб. Это напоминало всеобщее помешательство, схожее с ситуацией, когда жители региона возле атомной электростанции голосуют за удвоение мощности основного реактора для удовлетворения растущего спроса на энергию без учёта последствий, которые могут произойти в результате изменения режима работы электростанции.  Неужели в такой ситуации все может пройти без проблем?

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

После многих месяцев обсуждения в переписках в течение 2015 года, а также после двух открытых конференций (Scaling Bitcoin), которые были посвящены теме масштабирования, после докладов лучших экспертов протокола стало ясно, что только инициация SegWit может эффективно удвоить блок, а также исправить некоторые проблемы с протоколом, без нарушения обратной совместимости, и, естественно, без серьезных рисков разделения цепи и возникновения фундаментальных ошибок.

Требования к 2 Мб хард-форку тем не менее сложно обобщить, независимо от того являются ли они насущными или используются как уступка при переговорах, позволяющая определенным фракциям усилить свое влияние на будущее развитие протокола в ущерб биткойн-сообществу в целом.

Чего ожидать?

Таким образом, к концу 2015 года стало понятно одно: SegWit — это хороший и прогрессивный шаг вперед. После проведения масштабного тестирования и проверок, его активация ожидается с осени 2016 года. Сеть полностью готова к переходу. Он был комплексно протестирован в многочисленных тестовых сетях, инициирован в Bitcoin testnet с мая 2016 года, активирован на других блокчейнах, использующих исходный биткойн-протокол, таких как Litecoin.

 

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

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

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

 

Разумные требования майнеров всегда встречали понимание… Но требования меньшинства все чаще вызывают истерический смех из-за своей глупости. По-правде говоря, есть очень веские основания полагать, что многие из них далеко не искренни в своих намерениях. А ведь это сильно тормозит прогресс Биткойна, ущемляет права большинства майнеров, которые не желают находиться на распутье.

Если мы сейчас уже не можем провести проверенное и перепроверенное тысячу раз обновление, которое показало феноменальный результат на других цепях, таких как Litecoin, то остаётся мало аутов для того, чтобы оно прошло плавно и без разногласий — хард-форк стал настолько спорным действием, что у всех кишка тонка согласиться с ним и просто принять его как данность.

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

Объективных причин, на которые стоит оглядываться реализуя софт-форк в будущем подобным образом, нет. Истина состоит в том, что майнеры — это те люди, которые обеспечивает защиту и поддержание функций всей цепи, они должны руководствоваться лишь приоритетами того, какой биткойн выгодней добывать. За это они и получают вознаграждение, причем достаточно приличное. Майнеры строят сеть, но только пользователи должны решать, какая цепь им нужна.

Мы лишь надеемся, что майнеры придут в себя и активируют SegWit, используя сигнализацию BIP9 (под видом SegWit2x или нет, неважно). Если же они не окажут поддержку, то мы своими силами обеспечим продвижение его, начиная с 1-го августа, активировав BIP148. Если все пойдет как надо, то не произойдет раздвоения и Биткойн устоит как целое! А после активации SegWit отпадет потребность в сигнализации BIP148.

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

Два месяца для серьезных изменений на уровне правил консенсуса с неполным экспертным анализом – это не выглядит как продуманный шаг… Но, как всегда, я считаю, что это исключительно дело каждого – запускать то программное обеспечение, которое он желает запустить. После многих лет без провалов, при феноменальной стабильности сети и беспрецедентной безопасности, которая была при любом апгрейде, я продолжу разработку Bitcoin Core после активации SegWit.

Eric Lombrozo

Источник

 

Источник


Комментарии:

Добавить Комментарий

Яндекс.Метрика