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

Тема в разделе "Статьи о криптовалютах и их обсуждение", создана пользователем admin, 28 авг 2018.

  1. admin

    admin Administrator Команда форума Администратор Модератор форума

    Сообщения:
    1.437
    Симпатии:
    163
    Год назад был активирован протокол 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. Единственная проблема заключалась в том, что оно требовало решения проблемы пластичности транзакций.

    [​IMG]
    Джозеф Пун представляет 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.

    Дале

Поделиться этой страницей