Обновлённый протокол SegWit был зафиксирован в блокчейне биткоина 8 августа 2017 года. Однако далеко не все майнинг-пулы, биржи и сервисы поддерживают эту технологию.
Официальный клиент Bitcoin Core получит поддержку SegWit только после выпуска обновления (версии Bitcoin Core 0.16) — её планируют представить 1 мая 2018 года. Cryptonomist разобрался, какими преимуществами обладает SegWit и зачем блокчейну эта технология.
Отделённый свидетель
SegWit — сокращение от Segregated Witness, что с английского переводится как «отделенный свидетель». SegWit в декабре 2015 года предложили разработчики Bitcoin Core, автором идеи стал Питер Виль.
Ресурс Bitcoin Magazine привел слова разработчика Bitcoin Core Эрика Ломброзо:
SegWit — это самое значительное на сегодняшний день улучшение протокола биткоина, которое решает несколько проблем его первоначальной структуры, а также добавляет слой расширения, который поддерживает более высокую масштабируемость и более сложные приложения смарт-контрактов.
Проблема пластичности транзакций
Каждая транзакция в блокчейне биткоина состоит из двух частей:
- Основная информация: кто, кому и сколько средств отправляет;
- Информация свидетеля: особая подпись (криптографический код), которая подтверждает совершение транзакции.
Однако информация свидетеля (или witness-информация) представляет проблему для блокчейна. Дело в том, что формально подпись можно изменить после её появления в блоке и даже без секретного ключа, который использовался для создания оригинальной подписи. Это свойство называется пластичносью.
Фактически любую транзакцию из биткоин-сети может взять кто угодно и подменить оригинальную подпись эквивалентной ей.
При этом новая подпись будет отображать те же данные, что были подписаны изначально. И сможет пройти проверку с помощью оригинального открытого ключа.
Новая подпись не влияет на результат транзакции, однако полностью меняет её идентификатор (txid). Такое поведение мешает работе программного обеспечения, которое для проверки подтверждённых транзакций использует как раз txid.
Из-за неподтверждённых транзакций скорость проведения новых замедляется, так как приходится «вытаскивать» данные из предыдущих. Кроме того, ограничиваются возможности расширенного использования биткоина, к примеру, создание поверх блокчейна Lightning Network на базе неподтверждённых транзакций с txid.
Чтобы внедрить Segwit, нужно информацию свидетеля поместить в другую часть блока. А якорь данных (Merkle Root) записывать в транзакцию по раздаче вознаграждения майнерам. Таким образом, место в текущем блоке экономится, и в него можно записать больше информации без фактического изменения размера.
Внедрение SegWit — это софтфорк: только майнеры должны внести изменения в ПО.
При хардфорке же изменения вносятся всеми пользователями.
Ключевые преимущества SegWit
Так как SegWit «отрежет» информацию о подписи транзакции, то вариантов изменить её не будет. Это упростит разработку смарт-контрактов, в том числе тех, что нужны для Lightning Network.
После активации протокола сократятся и комиссии, так как изменится порядок их начисления. Причём маржа с транзакции будет известна сразу.
Имплементировать новые софтфорки после введения протокола станет проще. В частности, эксперты возлагают большие надежды на замену подписей ECDSA на более надежный стандарт Schnorr.
Самое главное, что после активации SegWit переводы в сети смогут делать и те, кто принял протокол, и те, кто его не принял. Просто для первых комиссии будут меньше.
Решение проблемы масштабирования
Технология изначально разрабатывалась, чтобы оптимизировать производительность полезной работы блокчейна биткоина. Виль заметил, что примерно 65% пространства каждого блока занимают цифровые подписи. Если отделить информацию о подписях от информации о транзакции и хранить её отдельно, сеть будет работать быстрее.
SegWit увеличит фактическую емкость блока (то, сколько информации о транзакциях он сможет вместить) и повысит пропускную способность блокчейна. Кроме того, протокол обеспечит обрезку старых подписей и решение всех незапланированных затяжек.
Размер транзакции после SegWit уменьшится в среднем на 48%. Сократится и размер самого блокчейна, и это сэкономит дисковое пространство для полноценных узлов сети.
Запуск и синхронизация узлов будут занимать меньше времени. Процесс проверки статуса транзакции упростится. SegWit также обеспечит дополнительную защиту сети от спам-атак.
Наконец, после активации SegWit блокчейн можно будет подключать к протоколам второго уровня, в частности, Lightning Network. В перспективе будут доступны и переводы между разными блокчейнами (кроссчейн-переводы). Появится и возможность мгновенно обменивать криптовалюту на фиат без обменников и бирж.
К слову, в сети Litecoin уже реализовали SegWit.
Споры вокруг SegWit
SegWit представили в октябре 2016 года в версии Bitcoin Core
Для активации протокола SegWit должны были поддержать 95% майнеров.
В апреле 2017 года разработчики и приверженцы SegWit сформировали предложение UASF. Его смысл: протокол активируется не при поддержке 95% майнеров, а 95% узлов сети. Автор идеи представил свой код — BIP148. Но и это предложение не имело успеха. Тогда код доработали и представили улучшенную версию BIP149.
В мае 2017 года было подписано Нью-Йоркское соглашение, которое было нацелено на достижение компромисса между противниками и сторонниками Segwit. Порог для активации протокола снизили до 80%, также пообещали провести хардфорк с увеличением размера блока в течение полугода после активации. Кстати, разработчики Bitcoin Core во встрече, предшествующей подписанию соглашения, не участвовали.
После встречи предложение UASF (BIP148) снова стало популярным. А значит, пришлось опять искать компромисс. Инженер Bitmain Джеймс Хиллард представил код BIP91, в котором объединил предложения BIP148 и положения Нью-Йоркского соглашения. В итоге 8 августа SegWit активировали именно в формате BIP91. А майнеры, которые не поддержали SegWit, за неделю до этого провели хардфорк и создали Bitcoin Cash.
Критика
Ведущий инженер BitGo Джеймсон Лопп заявил:
Не открытие, что значительная причина перегрузок в сети Bitcoin вызвана такими популярными сервисами, как Blockchain, Coinbase и Gemini, которые неэффективно расходуют пространство блоков. Если не хотите способствовать этому, не используйте их.
Однако и с поддержкой SegWit многими биржами нагрузка на сеть сохраняется. Так, даже с учётом падения ежедневного объема транзакций с 450,000 до 225,800 размер мемпула Bitcoin остается больше 121 млн байт со средним размером блока в 1.05 Mб. Так что не стоит считать SegWit панацеей.
Многие майнеры уверены, что не все улучшения и нововведения интегрируют сразу. Есть также мнение, что протокол централизует систему, так как с увеличением фактического размера блока вырастет количество неподтверждённых транзакций. К тому же система оголится и станет более уязвимой для хакеров.
Часть майнеров считает, что SegWit выгодна, в первую очередь, компании BlockStream, которой принадлежит протокол Lightning Network. В сети нельзя реализовать подключение к Lightning Network без SegWit. А дать возможность BlockStream заработать не всем по душе.
Что все это значит
SegWit улучшит блокчейн биткоина — и сейчас, и в долгосрочной перспективе. Его активация будет способствовать росту курса криптовалюты. Но немало говорят и о недостатках SegWit: потенциальном риске остаться без прибыли, ослаблении защиты биткоин-сети.
Словом, SegWit не идеален.
У хардфорка SegWit2X, который предполагал внесение изменений в протокол и увеличение размера блока, также было немало противников. Но SegWit — будущее биткоина и необходимость. Ведь если не внедрять нововведения, блокчейн криптовалюты станет ещё более затратным, медленным и в итоге никому не будет нужен.