Что такое SegWit?
SegWit - это сокращение от Segregated Witness. Это, пожалуй, самое крупное обновление протокола Биткойн на сегодняшний день, которое объединило несколько улучшений и исправлений в одно.
Каковы преимущества SegWit?
Как, вероятно, самое заметное исправление, SegWit избавился от гибкости транзакций. До SegWit странность криптографических подписей Биткойна сделала так, что транзакции можно было настроить так, чтобы они «выглядели» по-другому, даже людьми, которые сами не создавали транзакцию. Хотя это не сделает транзакцию недействительной и не изменит ее действия - оно все равно будет отправлять такое же количество монет с одних и тех же адресов на одни и те же адреса - это серьезно усложняет развертывание протоколов второго уровня, таких как Lightning Network.
SegWit решил эту проблему, переместив «свидетельские» данные транзакции, которые включают в себя подпись, в новую часть блока Биткойн. Таким образом, он проложил путь для Lightning Network и других протоколов второго уровня.
В качестве дополнительного бонуса SegWit также предложил скромное увеличение предельного размера блока до теоретических четырех мегабайт или более реалистичного ограничения в два мегабайта, в зависимости от типов транзакций, включенных в блоки. (Чтобы быть точным: ограничение размера блока было заменено пределом в четыре миллиона единиц веса, что ввело новый способ «подсчета» данных транзакции.) Это означает, что пользователи с кошельками, поддерживающими SegWit, платят более низкие комиссионные за транзакции.
Кроме того, с помощью технической уловки, называемой «версии сценария», SegWit также упростил развертывание дальнейших обновлений протокола Биткойн. Одним из этих предстоящих обновлений могут быть подписи Schnorr, новый алгоритм подписи, который еще больше повысит программируемость и гибкость протокола Биткойн.
И последнее, но не менее важное: все это стало возможным без необходимости обновления обратно несовместимого протокола хард-форка. (Обновления софт-форка требуют поддержки только большей части хэш-мощности, чтобы избежать разделения сети, в то время как хард-форки требуют консенсуса в масштабах всей сети.)
Кто разработал SegWit?
Версия SegWit была впервые разработана Blockstream для проекта сайдчейна Blockstream Elements. После того, как участник Bitcoin Core Люк-младший выяснил, как можно развернуть SegWit на основном протоколе Биткойн посредством обновления обратно совместимого софт-форка, он был разработан командой разработчиков Bitcoin Core. В частности, соответствующее предложение по улучшению биткойнов (BIP) было разработано Эриком Ломброзо, Джонсон Лау и Питером Вуилле, которые также выполнили большую часть кодирования. Остальная часть команды помогала на протяжении всего процесса разными способами, включая проверку и тестирование.
Разработчику Litecoin под псевдонимом Шаолинфри и инженеру Bitmain Warranty Джеймсу Хиллиарду приписывают разработку альтернативных решений активации для софт-форка. (Подробнее об этом ниже.)
Был ли SegWit неоднозначным?
В техническом сообществе Биткойн SegWit не вызывал споров.
Однако за пределами технического сообщества Биткойна некоторые предпочитали другое решение масштабирования для Биткойна или не верили, что самого SegWit достаточно в качестве решения для масштабирования. Это привело к тому, что предложение SegWit превратилось в нечто вроде разменной монеты в гораздо более широком споре, полном противоречий. Другие пытались вообще дискредитировать SegWit.
Единственное противоречие, которое (возможно) имело некоторую обоснованность, заключается в том, что было бы «чище» с точки зрения кода развернуть обновление как хард-форк вместо софт-форка, поскольку это оставило бы меньше технических сомнений в протокол. Однако при развертывании SegWit в качестве хард-форка возникли бы свои проблемы, которые, по мнению большинства разработчиков и сторонников SegWit, были бы намного серьезнее.
Некоторые другие споры вокруг SegWit - некоторые, например, утверждали, что он позволяет майнерам красть средства - просто фигня. (Показательный пример: SegWit существует уже много лет, и ни один майнер не смог украсть монеты.)
Как и когда активировался SegWit?
SegWit активирован в августе 2017 года.
Как он активировался - долгая история. Хотя он был впервые публично предложен и включен в дорожную карту Bitcoin Core в декабре 2015 года, а код был готов менее чем через год, обновление протокола было запущено только летом 2017 года.
Во многом это связано с тем, что некоторые крупные биткойн-майнеры отказались активировать обновление протокола. (В соответствии с первоначальной задумкой SegWit будет работать в сети, если подавляющее большинство майнеров заявят о поддержке в добытых ими блоках.) О мотивах этих майнеров все еще говорят, но похоже, что они либо использовали SegWit как козырную карту, либо они «Заблокировали» обновление, потому что оно было несовместимо с оптимизацией майнинга (называемой «AsicBoost»), которую они тайно использовали, - или с тем и другим вместе.
В любом случае, к 2017 году массовое движение пользователей биткойнов сплотилось вокруг идеи, впервые предложенной псевдонимом разработчика Litecoin Шаолиньфри. Эти пользователи, получившие название Soft Fork, активируемого пользователем (UASF), объявили, что к лету активируют обновление на своих собственных биткойн-узлах, независимо от того, что будут делать майнеры. Если бы эти пользователи выполнили свой первоначальный план, они могли бы разделить сеть Биткойн на версию с SegWit и версию без нее.
За несколько дней до «крайнего срока» UASF майнеры все-таки активировали SegWit. С технической точки зрения, они сделали это с помощью еще одного механизма активации, предложенного инженером Bitmain Warranty Джеймсом Хиллиардом.
Чтобы получить полный отчет об этой главе в истории Биткойна, также см . Долгий путь к Segwit: как крупнейшее обновление протокола Биткойна стало реальностью.
Как использовать SegWit?
Вы используете SegWit, используя кошелек, в который встроен SegWit. Этот кошелек должен генерировать для вас адреса SegWit, и когда вы делаете платеж с такого адреса, комиссия, которую вам нужно будет заплатить, будет ниже, чем если бы вы не использовали SegWit.
Есть два типа адресов SegWit. Один тип («P2SH») начинается с «3» - хотя не все адреса, начинающиеся с 3, являются адресами Segwit. Другой («bech32») начинается с «bc1» и всегда является адресом SegWit. Адреса P2SH SegWit на самом деле являются своего рода обходным путем; в то время как транзакции SegWit с таких адресов дешевле, чем транзакции без SegWit, транзакции с адресов bech32 являются самыми дешевыми.
Адреса, начинающиеся с «1», никогда не являются адресами SegWit.
Некоторые кошельки, в которые интегрирован SegWit, включают Bitcoin Core, Electrum, Green, Trezor, Ledger и ряд других.
Почему не все используют SegWit?
Спустя более двух лет после активации SegWit менее половины всех транзакций в сети Биткойн используют SegWit. С индивидуальной точки зрения, вероятно, есть две причины не использовать SegWit.
Первая причина заключается в том, что реализация SegWit требует обновления, а некоторые люди просто не спешат с этим. Для крупных компаний это может потребовать значительного времени и усилий, поскольку может потребоваться миграция всей системы. Точно так же некоторые кошельки и другие приложения просто еще не интегрировали SegWit, предположительно потому, что у них другие приоритеты.
Вторая причина - «политическая»: некоторые люди подозревают, что некоторые компании не переходят на SegWit как своего рода протест. Они предпочли бы другие решения для масштабирования или больше решений для масштабирования. Они могут даже пытаться повысить комиссию за транзакции в биткойнах, чтобы стимулировать пользователей переходить на альткойны.
Стоит отметить, что даже если все не обновятся до SegWit, те, кто обновится, получат все преимущества. Хотя общий уровень комиссии для пользователей SegWit мог бы быть немного ниже, если бы все остальные также использовали SegWit, дополнительное преимущество полной миграции невелико. Кроме того, если меньше людей используют SegWit, блоки биткойнов будут меньше, что также имеет свои преимущества.