Всё о софтфорке SegWit: теоретические и технические аспекты. Часть 1
Все, что нужно знать о SegWit Биткоина. В этой части мы расскажем, что такое SegWit, зачем он был нужен и как его приняли в Биткоин-сообществе.
Для чего нужен был SegWit?
Все операции в сети состоят из двух частей. Основная – это сведения о транзакции. Она включает в себя информацию о типе монет и о том, куда они направляются. Вторая часть – это подпись, подтверждающая намерения владельца токенов их потратить.Вся сложность как раз заключается в части с подписью – она усложняла работу системы из-за ошибки пластичности транзакций, позволяющей менять подпись после её создания, при этом она оставалась не аннулированной. Это значит, что вся транзакция, благодаря ретрансляции (системным правилам включения транзакций в блок) или майнерам, вносящим сведения в блок, могла быть изменена.
В целом, это не играло большой роли. Средства отправлялись с одного адреса на другой и находили своего владельца. Проблема была в другом – такая уязвимость создавала сложности при создании новый транзакций, содержащих в себе отличительные признаки (идентификатор) прежних переводов. В такой ситуации становится очень трудно наладить работу протоколов (т. е. технического подтверждения совершить транзакцию), как, например, двухсторонний канал оплаты.
Поиск решения
Идея отделения подписи от основных сведений появилась за несколько лет до этого. В её создании поучаствовали разработчики официального кошелька Биткоина Bitcoin Core и модератор Bitcointalk. Тогда, в 2012 г, они так и не пришли к правильному решению.На следующий год данная проблема стала обсуждаться вновь. В разговоре с одним из разработчиков Питером Тоддом Грег Максвелл выразил мнение, что подписи нужно отделять и возможно некоторые транзакции стоит использовать и вовсе без подписей.
Чуть позже Максвелл обсудил проблему с другим криптографом А. Бэком. Последний предложил идею об определении идентификатора без подписи, на что Максвелл ответил, что в таком случае понадобится проводить хардфорк, что может быть угрозой для безопасности сети.
Боковая цепочка
В 2014 г. Г. Максвелл, А Бэк, О. Хилл (инвестор) и несколько разработчиков из Bitcoin Core приступили к разработке проекта, позволяющего создавать альтернативные блокчейны (sidechain), способные работать с основными цепочками.В 2015 г. идея отделения подписи от основной информации была опробована на сайдчейне Elements. Это должно было решить проблему с ошибкой пластичности. Официально о принятом решении было сообщено примерно через пол года. Как раз в тот момент функция приобрела своё нынешнее название.
Размеры блока
В тот же год в спорах о размере блоков начала принимать участие публика. Они назревали ещё с 2010 года, но обсуждались лишь разработчиками и специалистами, непосредственно сталкивающимися с технической стороной вопроса.Г. Андресен (на тот момент ведущий разработчик Bitcoin Core), вместе с М. Хирном (главный разраб. Bitcoinj) считали, что единственный выход преодолеть ограничения блока – это провести хардфорк. Изменения в таком случае оказались бы несовместимы с нынешней системой. Пришлось бы полностью её менять. Такое решение было бы невозможно продвинуть, поскольку потребовалось бы согласие всей сети.
Несмотря на это? Андресен и Хинт продолжали вести свою работу. Из-за этого в Биткоин-сообществе начались массовые волнения, фоном для которых стал вероятный передел сети.
Чтобы попытаться разрешить возникшие споры, было проведено 2 конференции – в Монреале и в Гонконге. Наиболее перспективное предложение увидело свет в Канаде. Им оказалась Lightning Network. Для его реализации нужно было только разобраться с ошибкой пластичности.
Soft-fork
Тем временем большинство разработчиков испытывали большие сомнения по поводу назревающего SegWit. Они считали, что его невозможно будет внедрить в главный блокчейн без проведения хардфорка.Иного мнения придерживался Л. Дашир – специалист из Bitcoin Core. В октябре 15 года в перерыве между конференциями он со своими коллегами обсудил новейшую модель софтфорков. В беседе он предположил, что СегВит вероятно может быть внедрён в сеть при помощи "мягкого разделения" (собственно посредством софтфорка). На тот момент он был единственным, кто обладал подобным мнением. Возможно, он даже не предполагал, чем это обернётся.
Чтобы обойтись без "потрясений", подпись требовалось разместить в новой части блока. Основная же часть должна была переместиться в операцию, на основе которой майнеры получают свою награду.
Такая схема была очень нестандартной. В Bitcoin Core заметили одну особенность, благодаря которой создание новой части (где хранится подпись), позволяло исключить разногласия с узлами. Они и не заметили бы, что размер блока стал больше. Таким образом, появилась бы возможность увеличивать вместимость блоков, не меняя при этом их объём.
В преддверии Гонконгской конференции, существовала уверенность, что решение (хотя и временное) найдено. SegWit мог расширить лимиты блока и исправить ошибку пластичности. Это позволило бы применить Lightning Network и другие решения, касающиеся масштабируемости сети.
Осведомление общественности
Новая функция была презентована в Гонконге. Её представлял П. Вуйле. Многие впервые узнали о ней именно здесь. Поначалу она была встречена с большим одобрением.После конференции Г. Максвелл выступил с предложением по плану масштабирования на основе СегВит. Его быстро поддержала команда Bitcoin Core, а вместе с ней и простые пользователи Биткоин.
Отношение к новому решению не было исключительно положительным. Были и те, кто критиковал Segregated Witness. Так, Д. Гарзик (ранее работавший в Bitcoin Core, а позже основавший собственную компанию Bloq), выражал мнение о несостоятельности предложенного плана. Позже он и вовсе покинул сферу Биткоина.
Разработчики кошелька Bitcoin Classic также считали решение не очень удачным. Они предлагали внедрить его с помощью хардфорка. Своё несогласие выразил и П. Тодд. Его волновал вопрос, касавшийся майнинга.
Основную же группу единомышленников всё устраивало. Они считали, что озвученные проблемы можно легко решить. Некоторые замечания казались им просто неубедительными, а какие-то воспринимались как неизбежная жертва. Так или иначе, они начали работу над обновлениями сети.
Техническая сторона
Несмотря на то, что первая версия СегВит уже работала в сети Elements – предстояла большая работа. Код Биткоина нужно было писать заново. Причиной была не только необходимость проведения софтфорка, но также наличие огромного количества новых элементов.Предложение было обличено в конкретное решение в начале 2016 года кодовым именем BIP141: над ним работали П. Вуйле, Э. Ломброзо (CEO Ciphrex) и Д. Лау (независимый разработчик). Была запущена выделенная сеть SegNet – она предназначалась для тестов. Через пару недель её сделали доступной для других пользователей. Специалисты со всего мира могли провести собственные эксперименты. К марту сеть получила обновления, которые предполагали возможность размещения Lightning Network.
Группа вела работу несколько месяцев. В процессе нужно было учитывать мнение пользователей, других разработчиков и исправлять ошибки. Было создано несколько новых версий сети.
Помимо разработок, в Bitcoin Core также занимались налаживанием внешних связей. Удалось привлечь внушительный список организаций, готовых оказать поддержку готовящемуся проекту.
К июню длина готового кода составляла больше 4700 строк. Из них требовалось удалить более 550. Проведя расширенный обзор, ведущий разработчик Bitcoin Core В. Лаан разместил его в хранилище на GitHub.
Продолжение обсуждений и споров
Споры о грядущем решении разгорались всё больше. Они обострились на фоне позиции Bitcoin Classic. Вместе с несколькими Биткоин-организациями и майнерами, этот лагерь выступал за проведение хардфорка и увеличение размеров блока до 2 Мб.Стороны встретились на очередном мероприятии в Гонконге. В переговорах принимали участие члены команды Биткоин Кор, несколько операторов пулов и прочие участники отрасли. Они обсуждали вопрос масштабирования.
В результате было сформировано Гонконгское соглашение. Его сутью было создание проекта хардфорка и представление его общественности. На время разработок майнеры должны были поддержать проект SegWit. После переговоров казалось, что конфликт разрешён и компромисс найден, но принятое решение нравилось отнюдь не всем.
Через несколько месяцев стороны вновь провели встречу в расширенном составе. Она прошла в Калифорнии. Разработчики были полностью уверены, что майнеры активируют СегВит.
Долгожданный релиз
Официальное представление состоялось на полгода раньше запланированного срока. Функция появилась в Биткоин Кор версии 0.13.1.Способом активации являлся VersionBits. Этот метод был создан для снижения негативных последствий. Для активации предложения в системе требовалась поддержка 95% майнеров. До голосования оставалось совсем недолго. В это время пользователям предлагалось регулярно обновлять свои клиенты, и они прислушались в данному совету.
Все были готовы, к софтфорку. В ожидании, что СегВит будет спасительной опцией для сети, многие предполагали что изменения пройдут быстро. Дополнительно об этом свидетельствовали договорённости Гонконгского соглашения.
Продолжение следует...
Тарас С.Частный инвестор, предприниматель, блогер. Инвестирую с 2008 года. Зарабатываю в интернете на высокодоходных проектах, криптовалютах, IPO, акциях и других активах. Со-владелец нескольких ресторанов и сети магазинов электронной техники. Консультирую партнеров, делюсь опытом.
Присоединяйся в Telegram-канал блога со свежими новостями. Чат с консультантом в Телеграм.
Присоединяйся в Telegram-канал блога со свежими новостями. Чат с консультантом в Телеграм.