Технология Segregated Witness (SegWit). Полный обзор с разбором как это все работает

К 2017 году недостатки сети биткоина такие, как масштабируемость и проблема пластичности транзакций, становились более критичными для дальнейших перспектив.
Наличие этих двух факторов и отсутствие решения, делали биткоин тупиковой веткой развития. На фоне новых проектов и технологий, первая криптовалюта смотрелась дорогой и бесперспективной в технологическом плане развития, разработчики отдавали себе в этом отчет.
Требовалось решение, которое сможет изменить «правила игры». Одним из таких решений стал софтфорк биткоина — Segregated Witness (SegWit), который был активирован 24 августа 2017 в блоке 481 824. В этот же день была отправлена первая транзакция с использованием SegWit.
Это сложная тема и для того, чтобы понять техническую сторону SegWit, необходимо глубокое понимание работы блокчейна. Из статьи вы узнаете что такое SwgWit и как он работает, также будет дополнительная полезная информация.
Что такое SegWit
SegWit — это софтфорк ядра блокчейна, необязательное и совместимое с предыдущими версиями программное обеспечение, которое позволит решить проблемы масштабируемости биткоина и снизит комиссии. Оно увеличивает эффективный размер блока, без фактического изменения лимита в 1 Мб.
SegWit меняет структуру хранения данных о транзакциях в блоке, сделано это с целью не допустить изменения txid (проблема пластичности), но сохранить данные об истории каждой транзакции. При этом, высвободить место в блоке для дополнительных транзакций.
В предложении по улучшению биткоина BIP141, приводится следующее определение: SegWit формирует новую структуру, называемую «witness», которая фиксируется в блоках отдельно от дерева Меркла транзакции (txid). Эта структура содержит данные, необходимые для проверки достоверности транзакции, но не требуемые для определения txid транзакции. В частности, скрипты и подписи перемещаются в эту новую структуру. «Свидетель» фиксируется в дереве, которое вставляется в существующий Корень Меркла блока через транзакцию coinbase для обеспечения совместимости софтфорка SegWit.
Определение выше сложное, но это наиболее сжатое определение для SegWit.
Данное обновление стало компромиссным решением проблем масштабируемости и пластичности от более радикальных предложений, какими являются хардфорки.
Bitcoin, который мы знаем в 2023 году, является таким, благодаря активации SegWit. Кроме того, без примененных решений, невозможно было бы внедрение сетей второго уровня поверх биткоина, по типу — Lightning Network и некоторых других, уже реализованных программных улучшений.

Хронология событий — от идеи до реализации SegWit
Дата | Событие |
2012 | Дискуссии о необходимости решения проблемы пластичности транзакций. |
2013 | Впервые была предложена идея по отделению данных о подписи от транзакции в отдельную структуру. |
Июнь 2015 | Компания Blockstream разработала сайдчейн Sidechain Elements с отделенным свидетелем. Это был прототип SegWit. |
Конец 2015 | Сформирована концепция Lightning Network, которая требовала решения проблемы пластичности. |
Октябрь 2015 | Прозвучала идея внедрения SegWit в виде софтфорка. |
Декабрь 2015 | SegWit презентован на биткоин конференции в Гонконге в виде софтфорка. |
21 декабря 2015 | BIP141. SegWit официально оформлен как предложение по улучшению биткоина. |
Январь 2016 | Запущена тестовая сеть BTC (SegNet). |
Март 2016 | SegNet поддерживает тестовую версию Lightning Network. |
23 Августа 2016 | Релиз Bitcoin Core 0.13.0 — с кодовой базой SegWit. |
27 Октября 2016 | Релиз Bitcoin Core 0.13.1 — с расширенным описанием SegWit и какие он решает проблемы. |
15 Ноября 2016 | Стартовал процесс «голосования» майнерами за проведение софтфорка. |
Февраль 2017 | Обсуждение идеи включения SegWit с помощью UASF — решение тотального большинства полных узлов. |
26 Апреля 2017 | SegWit активирован в блокчейне Litecoin. |
23 Июля 2017 | Имплементация BIP91, за неделю до активации UASF, которая является MASF или софтфорк, который активируют майнеры. |
1 Августа 2017 | Активация UASF. |
8 Августа 2017 | Фиксация (утверждение) протокола Segregated Witness. |
24 Августа 2017 | SegWit активирован в блокчейне Bitcoin. |
25 Августа 2017 | Добыт первый в истории блок больше 1 Мб. |
Сложность принятия консенсусных решений в децентрализованных сетях и SegWit как компромисс
Bitcoin — это децентрализованная сеть, в которой отсутствует центральный орган администрирования и принятия решений. Для обновления сети, необходимо согласие большинства участников.
Разработчики еще в 2012 году обнаружили проблемы безопасности блокчейна биткоина, связанные с пластичностью транзакций. Но тогда решения не было найдено. Ниже подробно раскроем эту тему, но хотим обратить внимание на важность данной проблемы, ибо она стала камнем преткновения для дальнейшего развития, так как делала невозможным разработку сайдчейнов и работу смарт-контрактов поверх основной сети биткоина, зависящих от неподтвержденных транзакций.
Помимо пластичности, проблема заключалась в низкой пропускной способности блокчейна биткоина. В начале своего развития, при небольшом количестве пользователей, сеть справлялась с потоком транзакций без задержек, но с ростом популярности все понимали что требуется решение. Проблема заключалась в том как именно работает сеть биткоина.
При проектировке блокчейна биткоина, чтобы система была жизнеспособной, создателям необходимо было найти баланс между:
- Децентрализацией — любой может установить полную ноду, начат майнить, открытый программный код. Косвенно на этот параметр оказывает влияние размер блока: блок в 1 Мб мал для обработки большого количества транзакций, но увеличение размера блока, по заявлениям лагеря «децентралистов» способно нарушить баланс и привести к централизации сети, так как майнеры могут начать демпинговать комиссии, как следствие обрушение хешрейта из-за нецелесообразности майнинга, что катастрофически скажется на безопасности сети. С другой стороны, ограниченный размер блока в совокупности с ростом числа пользователей, неизбежно приведет к очередям в мемпуле и увеличению комиссий за транзакции, которые смогут платить только крупные компании и инвесторы — отток пользователей и потенциальный крах системы.
- Пропускной способностью сети — скорость обработки транзакций зависит от трех факторов: количество транзакций, временной интервал между блоками и максимальный размер блока. Мы уже выяснили, что с ростом популярности, неизбежно растет количество транзакций в сети. Интервал между созданиями блока регулируется каждые 2016 блоков ≈ 10 минут. Максимально допустимый размер блока в сети биткоина составляет 1Мб, заложено алгоритмически Сатоши Накамото в 2010 году. Интересно что до 2010 года, размер блока был ограничен 32 Мб. Больше блок — больше транзакций в него «помещается».
- Надежность и безопасность — чем больше децентрализованных вычислительных мощностей работает в сети биткоина, тем выше хешрейт и тем сложней совершить атаку на сеть.
- Экономической моделью — она построена таким образом, чтобы майнеры были экономически заинтересованны в поддержании стабильной работы сети биткоина. За счет мощности хешрейта растет безопасность и надежность сети, за это они получают вознаграждения. Заинтересованность должна быть в стабильности, но не в подчинении. И здесь также есть прямая зависимость с размером блока. Стабильная работа = стабильный бизнес, подчинение блокчейна = крах системы.
Экспоненциальный рост количества пользователей нарушил баланс — росла тенденция, когда перевод транзакций от отправителя к получателю занимал несколько суток. Данная проблема решалась увеличением комиссий за транзакцию, но это ситуативное решение и для отдельно взятого пользователя, обратная сторона такого подхода — нецелесообразность использования BTC в качестве средства платежа, из-за непомерно высоких сетевых комиссий. Потребность в принятии решения росла.
Существует 2 варианта внесения изменений в блокче