Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

btc-segwit-500
btc-segwit-500

Год назад был активирован протокол Segregated Witness (SegWit) – самый крупный на сегодняшний день апгрейд в сети биткоина, целью которого было дальнейшее масштабирование, снижение транзакционных комиссий и увеличение лимита блоков. Путь к активации, однако, оказался далеко не простым: затяжные дебаты о масштабировании привели к целому ряду драматичных событий, которые фактически раскололи сообщество на два непримиримых лагеря.

ForkLog предлагает вспомнить, что предшествовало активации протокола, а также оценить, в каком состоянии находится сеть сегодня.

Для понимания проблемы, которую решает SegWit, необходимо ближе рассмотреть, как устроены биткоин-транзакции. Состоят они из двух главных частей: основных данных о транзакции, к которым, например, относится информация о том, какие именно перемещаются монеты и в каком направлении, и так называемого «свидетеля» (witness). В этой второй части транзакции содержится часть кода с данными о криптографической подписи, служащей доказательством того, что владелец монет действительно хочет их потратить.

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

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

В поисках решения проблемы

Дискуссии о решении проблемы пластичности транзакций посредством «отделения» данных о подписи от остальных данных о транзакции начались еще в январе 2012 года. Среди прочих в них принимали участие разработчики Bitcoin Core Расселл О’Коннор, Мэтт Коралло, Люк Дэш-младший и Грегори Максвелл, а также модератор форума Bitcointalk Theymos. Однако подходящего решения тогда так найдено и не было.

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

Сайдчейны

В августе 2014 года уже упомянутые Грегори Максвелл и Адам Бэк основали блокчейн-компанию Blockstream. Также в число учредителей Blockstream вошли инвестор Остин Хилл и несколько разработчиков Bitcoin Core, включая Питера Велле. Основное внимание в своей деятельности компания направила на так называемые сайдчейны: альтернативные блокчейны, которые могут быть «привязаны» к биткоину.

В июне 2015 года в прототип разработанного компанией сайдчейна Elements была имплементирована новая функция, благодаря которой решалась проблема пластичности транзакций. Ее принцип заключался в отделении основных данных о транзакции от свидетеля и их переносе в отдельные структуры данных. Новая функция получила название Segregated Witness – отделенный (сегрегированный) свидетель.

Споры о размере блока

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

Бывший ведущий разработчик Bitcoin Core Гэвин Андресен и ведущий разработчик Bitcoinj Майк Херн были одними из первых, кто поднял вопрос о необходимости проведения хардфорка с целью увеличения размера блока. Напомним, что хардфорк представляет собой обратно несовместимый апгрейд протокола сети, в результате которого ноды, не принявшие новые правила, не видят новые блоки. Его проведение – задача сама по себе непростая, и все осложнялось тем, что консенсус в сообществе касательно этого вопроса отсутствовал.

Тем не менее летом 2015 года Андресен и Херн объявили, что намерены пойти по пути увеличения блока, задействовав в этих целях альтернативный клиент Bitcoin XT. Значительной части сообщества их планы показались не только спорными, но и опасными, и в попытке найти некое общее решение до конца того же года в Монреале и Гонконге были проведены две технические конференции под общим названием Scaling Bitcoin.

На первой из них было презентовано другое предложение по масштабированию биткоина под названием Lightning Network, позже сформулированное в white paper. Единственная проблема заключалась в том, что оно требовало решения проблемы пластичности транзакций.

Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

Джозеф Пун представляет Lightning Network на Scaling Bitcoin Montreal

Софтфорк

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

Иного мнения придерживался Люк Дэш-младший: в октябре 2015 года в промежутке между двумя конференциями в Монреале и Гонконге он высказал идею активации SegWit в виде софтфорка.

Для этого данные свидетеля было необходимо переместить в новую часть блока, в то время как «якорь» этих данных – корень дерева Меркла – должен был быть помещен в не совсем обычную часть блока: coinbase-транзакцию, отвечающую за награду майнерам.

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

За несколько недель до второй конференции Scaling Bitcoin в Гонконге многие разработчики Bitcoin Core были убеждены, что как минимум временное решение в дебатах о размере блока найдено, поскольку Segregated Witness позволял увеличить его обратно совместимым образом, попутно с этим решая проблему пластичности транзакций. Также это открывало дорогу таким решениям, как Lightning Network.

Презентация и критика

Segregated Witness в виде софтфорка презентовал в декабре 2015 года на Scaling Bitcoin в Гонконге Питер Велле. Многие именно тогда впервые услышали об этом решении, и поначалу оно было воспринято с энтузиазмом.

Также вскоре после завершения гонконгской Scaling Bitcoin Грегори Максвелл предложил дорожную карту по масштабированию биткоина, центральное место в которой было отведено именно SegWit. Это предложение было быстро принято не только командой разработчиков Bitcoin Core, но и другим разработчиками и пользователями в экосистеме биткоина.

Однако не обошлось и без критики. Так, Джефф Гарзик, который к тому времени покинул Bitcoin Core и основал собственную компанию Bloq, отказался считать SegWit подходящим решением по масштабированию, также свое несогласие с предложением выразил Майк Херн. Спустя короткое время Херн полностью покинул экосистему биткоина, сопроводив свой уход рядом скандальных заявлений.

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

Однако большинство разработчиков Bitcoin Core с такими утверждениями не согласилось, и вскоре работа над софтфорком была начата.

Разработка

Авторами BIP141, предложения по улучшению биткоина, в котором содержалось описание SegWit, стали Питер Велле, CEO Ciphrex Эрик Ломброзо и независимый разработчик Bitcoin Core Джонсон Лау. Уже в начале января 2016 года была запущена тестовая сеть протокола под названием SegNet, к марту она также поддерживала тестовые версии Lightning Network.

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

К июню 2016 года код протокола насчитывал 4713 строк, включая тестовый код, а в предложениях на удаление или модификацию находились 554 строки кода Bitcoin Core. В конце того же месяца Владимир ван дер Лаан интегрировал протокол в основную ветвь разработки.

Релиз протокола

Релиз Segregated Witness состоялся в апреле 2016, а еще через шесть месяцев, в октябре того же года, протокол был интегрирован в Bitcoin Core 0.13. Также SegWit поддержали несколько других имплементаций биткоина, включая Bitcoin Knots и Bcoin.

Далее стоял вопрос активации, и для этого был задействован метод под названием VersionBits (BIP9) – призванный минимизировать риски сбоя в работе сети, он требовал, чтобы в поддержку протокола сигнализировало 95% майнеров. Сам процесс сигнализации стартовал 15 ноября 2016.

Новые разногласия и попытки найти консенсус

На фоне работы над SegWit дебаты о размере блока в сообществе разгорелись с новой силой — и во многом «благодаря» сторонникам Bitcoin Classic. Предложенное разработчиками этой имплементации решение предполагало увеличение лимита на размер блока до 2Мб, и его поддерживал ряд компаний и майнинговых пулов.

В попытке найти взаимопонимание с этой группой сообщества в феврале 2016 все в том же Гонконге был организован так называемый «круглый стол». По итогам длившейся 18 часов встречи майнинг-пулы, на долю которых приходилось на тот момент почти 80% совокупного хешрейта сети биткоина, а также представители крупных бирж, провайдеры услуг и разработчики Bitcoin Core, выступили с совместным заявлением, предложив график внедрения решений по масштабированию сети.

В частности, предполагалось проведение хардфорка с увеличением размера блока до 2Мб, однако при условии согласия команды Bitcoin Core и наличия широкого консенсуса в сообществе. Майнеры, в свою очередь, соглашались принять SegWit, если в кодовую базу Bitcoin Core будет внедрен хардфорк.

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

Более того, на определенном этапе появился тесно связанный с компанией Bitmain майнинговый пул ViaBTC – за короткое время он нарастил достаточные мощности, чтобы в одиночку блокировать активацию SegWit, а сам глава пула Хайпо Янг при этом публично критиковал предлагаемый апгрейд протокола. Вероятность активации SegWit на тот момент представлялась весьма отдаленной.

Еще одним игроком во всем этой истории оказался проект Bitcoin Unlimited — еще до интеграции SegWit в Bitcoin Core разработчики этого клиента заявили о своем намерении “восстановить сеть биткоина в том виде, в каком ее представлял Сатоши Накамото”. Bitcoin Unlimited активно поддерживал основатель Bitmain Джихан Ву, и точно такая же риторика сегодня используется сторонниками Bitcoin Cash.

Нью-йоркское соглашение (SegWit2x)

Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

Одним из главных сторонников SegWit2x стал глава Digital Currency Group Барри Силберт

Весной 2017 года состоялось весьма любопытное событие: один из крупнейших майнинговых пулов Antpool добыл первый блок Bitcoin Unlimited. Раскол в сообществе становился все более очевидным, и попыткой спасти ситуацию стало так называемое нью-йоркское соглашение, на котором было предложен альтернативный сценарий под названием SegWit2x.

Новое соглашение было объявлено главой Digital Currency Group Барри Силбертом в мае 2017 и основывалось на договоренностях, которые были достигнуты ранее в Гонконге. Свои подписи под ними поставило значительное количество компаний, играющих активную роль в биткоин-индустрии.

Ключевые положения SegWit2x заключались в следующем:

  • Активация Segregated Witness по достижении уровня поддержки майнеров в 80%;
  • Активация в течение шести месяцев хардфорка с увеличением размера блока до 2Мб.

Проблема с SegWit2x состояла не только в том, что его не поддержали все представители сообщества, но и в том, что для обсуждения положений соглашения не были приглашены разработчики Bitcoin Core. Само предложение с технической точки зрения также оказалось во многом несовместимо с наиболее популярным клиентом биткоина.

Тем не менее крупные компании, включая Coinbase, BitPay, ShapeShift, Bitfury и другие известные имена, продолжали настаивать на реализации SegWit2x, называя его единственным выходом, который может обеспечить консенсус и решить проблему масштабирования сети.

В июне 2017 об успешном тестировании SegWit2x объявила все та же компания Bitmain.

UASF

Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

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

Концепцию UASF предложил в феврале 2017 года разработчик под псевдонимом Shaolinfry, одно время известный по работе с командой Litecoin. Ее основная суть состояла в отказе от апгрейда сети посредством сигнализации со стороны майнеров: вместо этого софтфорк активируется в указанную дату, определяемую полными нодами. Подобная концепция требует значительной поддержки и координации со стороны индустрии, и неслучайно эту модель также называют экономическим большинством.

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

Центральным местом дискуссий, посвященных UASF, а также координации усилий разработчиков стал Slack-канал сообщества Bitcoin Core. Именно там в качестве даты активации софтфорка изначально было предложено 1 октября 2017, однако впоследствии эта дата была перенесена на 1 августа 2017.

Shaolinfry тем временем составил техническое предложение BIP148, непосредственно отвечавшее за активацию UASF, а основатель OpenDime Родольфо Новак запустил информационный сайт для продвижения идеи.

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

Альткоины

Отдельно следует отметить ряд альткоинов, которые к тому времени уже активировали SegWit. Первыми в январе 2017 это сделали разработчики Groestlcoin, позже их примеру последовали такие проекты, как Vertcoin, Syscoin, DigiByte, Viacoin и Monacoin.

Наиболее же известной монетой, которая в итоге активировала SegWit, стал Litecoin. Что более важно, одновременно с этим ее создатель Чарли Ли на практике показал жизнеспособность UASF — именно через активируемый пользователями софтфорк SegWit был внедрен в сеть Litecoin.

BIP91

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

Это не было в интересах ни одной из сторон, и спасением стало предложение BIP91, автором которого выступил инженер компании Bitmain Warranty [не путать с Bitmain Technologies Джихана Ву] Джеймс Хиллиард. Он предложил модифицированную версию SegWit2x, суть которой сводится к более быстрой и надежной имплементации SegWit без угрозы разделения сети на несколько блокчейнов.

При написании BIP91 были учтены два других предложения по масштабированию биткоина:

  • BIP141 – оригинальный план активации SegWit, впервые представленный в ноябре 2016 года;
  • BIP148 – активируемый пользователями софтфорк (UASF).

Имплементация BIP91 в итоге состоялась 23 июля 2017, за неделю до активации UASF, и благодаря этому вероятность разделения сети биткоина на несколько блокчейнов была устранена. Но, что самое главное, вместе с этим ноды начали отвергать блоки, не сигнализирующие поддержку Segregated Witness, открыв тем самым окончательный путь к активации протокола.

Финишная прямая

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

Тем не менее уже после активации BIP91 рынок начал восстановление — 1 августа состоялась активация UASF, после которой биткоин поднялся выше $2900, а 8 августа произошла долгожданная фиксация SegWit и «точка невозврата» была пройдена. После нее до фактической активации протокола оставалось две недели, и наконец 24 августа в 01:57 UTC на блоке 481,824 это историческое для биткоина событие окончательно свершилось.

Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

А уже на следующий день майнинговый пул Bitfury сообщил о добыче первого SegWit-блока размером более 1Мб.

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

Segregated Witness год спустя

Сегодня, когда после активации SegWit прошел уже год, можно подвести первые итоги и оценить, как за это время изменилась сеть биткоина.

Прежде всего необходимо оценить уровень принятия самого протокола. Как показывает график ниже, к сегодняшнему дню он вышел на максимальный с августа прошлого года показатель, превысив 40%.

Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

Источник: woobull.com

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

Именно рядовые пользователи и смогли в первую очередь оценить положительные изменения, которые принес SegWit. Речь, конечно же, о транзакционных комиссиях.

Если еще минувшей зимой, когда сам уровень принятия протокола был сравнительно невелик (около 10%), а биткоин бил все мыслимые ценовые рекорды, комиссии достигли недопустимо высокого уровня. Сегодня ситуация кардинально иная. Так, средняя стоимость транзакции с подтверждением в течение 20 минут сегодня, согласно Bitcoin Core Fees, оценивается в 5 сатоши / байт, то есть около $0.08 за всю транзакцию.

График ниже демонстрирует динамику транзакционных комиссий за последний год.

Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

Источник: bitinfocharts.com

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

К тому же, практически пустым остается сегодня мемпул:

Долгая дорога к Segregated Witness — как изменился биткоин после крупнейшего апгрейда

Источник: Blockchain.com

Как уже говорилось выше, SegWit позволяет увеличить размер блока, и недавнее исследование BitMEX подтвердило, что благодаря активации протокола практически все блоки, производимые в настоящее время сетью биткоина, весят в среднем 1,06 МБ, а некоторые даже выходят за пределы 2 МБ.

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

PS. Несмотря на активацию SegWit, сторонники SegWit2x еще несколько месяцев продолжали попытки реализовать свой сценарий, однако 8 ноября 2017 объявили о полном закрытии проекта. Еще через два дня о прекращении дальнейшей работы сообщили разработчики Bitcoin Classic, призвав одновременно с этим к переходу на Bitcoin Cash.

Andrew Asmakov

Подписывайтесь на новости ForkLog в Twitter!

Подписывайтесь на ForkLog в социальных сетях

Telegram (основной канал) Discord Instagram
Нашли ошибку в тексте? Выделите ее и нажмите CTRL+ENTER

Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!

*Ежедневная рассылка — краткая сводка наиболее важных новостей предыдущего дня. Чтение занимает не больше двух минут. Выходит в рабочие дни в 06:00 (UTC)
*Еженедельная рассылка — объясняем, кто и как изменил индустрию за неделю. Идеально подходит для тех, кто не успевает за новостным потоком в течение дня. Выходит в пятницу в 16:00 (UTC).

Мы используем файлы cookie для улучшения качества работы.

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

OK