Открыть сервис

SegWit

SegWit (Segregated Witness, с англ. — «отделённый свидетель») — это протокольное обновление сети биткоина, реализованное в 2017 году, которое изменяет способ хранения данных в транзакциях. Основная цель SegWit — решение проблемы масштабируемости, устранение уязвимости транзакционной манипуляции (malleability, с англ. — «поддаваемость изменению») и повышение эффективности использования пропускной способности блокчейна.

История и предпосылки

К 2015 году сеть биткоина столкнулась с серьёзными ограничениями. Ограничение размера блока в 1 Мбайт, установленное для предотвращения спама и атак, привело к росту комиссий и времени подтверждения транзакций. Одновременно существовала техническая проблема malleability: идентификатор транзакции (TXID) мог быть изменён третьей стороной без нарушения её подписи. Это затрудняло работу протоколов второго уровня, таких как Lightning Network, которые полагаются на неизменность TXID.

Разработчики предложили два основных подхода к решению. Первый — увеличение размера блока (например, Bitcoin XT, Bitcoin Classic), что было поддержано частью майнеров и бизнеса. Второй — SegWit, предложенный разработчиком Bitcoin Core Питером Вуйле (Pieter Wuille). SegWit рассматривался как более мягкое обновление (soft fork), не требующее принудительного разделения сети.

После длительных дебатов и тестирования, 24 августа 2017 года SegWit был активирован в сети биткоина на высоте блока 481 824. Активация произошла через механизм BIP 91 и BIP 148, что позволило избежать раскола сети, хотя и привело к созданию форка Bitcoin Cash, который пошёл по пути увеличения размера блока.

Техническое устройство

Структура транзакции до SegWit

В классической транзакции биткоина все данные хранятся в одном поле: входные данные (ссылки на предыдущие транзакции), выходные данные (количество и адреса получателей) и подписи (свидетели). Подписи занимают около 60–70 % объёма транзакции, но не являются необходимыми для проверки порядка следования UTXO (непотраченных выходов).

Как работает SegWit

SegWit отделяет данные подписей (свидетелей) от основной части транзакции. В блоке создаётся специальная структура — «дерево свидетелей» (witness merkle tree), которая хранится отдельно. Основная часть транзакции (без подписей) записывается в обычное поле, а подписи — в новое поле «witness data».

Ключевое нововведение: при расчёте размера блока данные свидетелей учитываются с коэффициентом 0,25. То есть 1 байт данных свидетеля занимает 0,25 байта в лимите блока. Это позволяет увеличить фактическую пропускную способность сети без увеличения формального лимита в 1 Мбайт. Максимальный размер блока с учётом SegWit составляет около 4 Мбайт (фактически — до 4 Мбайт, но эффективный лимит — 1 Мбайт «старых» данных + 3 Мбайта «новых» данных с коэффициентом).

Решение проблемы malleability

Поскольку TXID вычисляется только на основе основной части транзакции (без подписей), а подписи хранятся отдельно, изменение подписи третьей стороной не меняет TXID. Это делает транзакции устойчивыми к манипуляциям, что критически важно для работы протоколов второго уровня, таких как Lightning Network.

Преимущества

  • Увеличение пропускной способности: блоки могут вмещать больше транзакций, что снижает комиссии и время подтверждения.
  • Исправление malleability: позволяет безопасно строить сложные мультиподписные схемы и протоколы второго уровня.
  • Снижение комиссий: за счёт более эффективного использования пространства блока.
  • Совместимость с будущими обновлениями: SegWit заложил основу для таких технологий, как Taproot и Schnorr-подписи.
  • Поддержка мультиподписных схем: упрощает создание сложных кошельков, например, с порогом подписей 2 из 3.

Недостатки и критика

  • Сложность внедрения: не все кошельки и биржи сразу поддержали SegWit, что привело к временному фрагментированию сети.
  • Неполное решение проблемы масштабирования: SegWit увеличивает пропускную способность примерно в 1,7–2,5 раза, но не решает фундаментальную проблему ограниченного размера блока.
  • Риск централизации: более крупные блоки требуют больше ресурсов для хранения и обработки, что может дать преимущество крупным майнинговым пулам.
  • Сложность для пользователей: адреса SegWit (начинающиеся с «bc1») не поддерживаются некоторыми старыми кошельками и сервисами.

Применение

SegWit используется в сети биткоина с 2017 года. По состоянию на 2024 год более 90 % всех транзакций в сети биткоина используют SegWit. Технология также была адаптирована в других криптовалютах, таких как Litecoin (активирован в 2017 году) и Dogecoin (активирован в 2022 году). SegWit является обязательным условием для работы протокола Lightning Network, который позволяет проводить мгновенные и дешёвые платежи вне основной цепи.

Связанные понятия

  • Lightning Network — протокол второго уровня, работающий поверх биткоина и использующий преимущества SegWit.
  • Taproot — обновление протокола биткоина (2021 год), которое расширяет возможности смарт-контрактов и повышает конфиденциальность.
  • BIP 141, BIP 143, BIP 147 — предложения по улучшению биткоина, описывающие реализацию SegWit.
  • Bitcoin Cash — форк биткоина, отказавшийся от SegWit в пользу увеличения размера блока до 8 Мбайт.

Источники

  • Bitcoin Improvement Proposals (BIPs): BIP 141, BIP 143, BIP 147.
  • Статья Питера Вуйле «Segregated Witness and the Future of Bitcoin» (2015).
  • Официальная документация Bitcoin Core.
  • Книга Андреаса Антонопулоса «Mastering Bitcoin» (2-е издание, глава 7).
  • Данные блокчейн-обозревателей (Blockchain.com, Mempool.space) о доле SegWit-транзакций.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →