Что такое Segregated Witness (SegWit)?

Руководство для начинающих по Bitcoin SegWit 💭
Segregated Witness (SegWit) — это обновление исходного кода Bitcoin, выпущенное 1 августа 2017 года.
Несмотря на то, что многие считали это улучшением блокчейна Bitcoin, SegWit столкнулся с сильным противодействием, которое разделило сообщество.
В основе проблемы лежали противоречивые интересы между прибыльностью майнеров и разработчиками сети, стремящимися сделать Bitcoin дешевле и быстрее в использовании.
Напряжение вызвало раскол в сообществе, кульминацией которого стал первый в сети софтфорк, активируемый пользователями, и враждебное разделение. В результате этого разделения появилось множество новых форкнутых проектов Bitcoin, включая Bitcoin Cash.
На сегодняшний день SegWit остается одним из самых спорных событий в истории Bitcoin. Однако он также оказался одним из самых важных обновлений для долгосрочной жизнеспособности протокола.
Каждый год многие члены сообщества Bitcoin отмечают 1 августа как «День независимости Bitcoin». Это событие знаменует собой случай, когда воля народа восторжествовала над централизованными интересами устоявшихся компаний по майнингу биткоинов.
Давайте рассмотрим каждое из этих событий по мере их развития и разберем историю SegWit.
Bitcoin до SegWit ⏮️
До активации SegWit пропускная способность блоков Bitcoin оставалась неизменной в течение многих лет. Пропускная способность блока относится к максимальному количеству транзакций, которые могут быть записаны в данном блоке.
Когда Bitcoin был запущен в 2009 году, его создатель(и) Сатоши Накамото не устанавливал никаких параметров относительно размера биткоин-блоков.
Однако в 2010 году Накамото тайно добавил ограничение размера блока в 1 мегабайт (МБ) без одобрения других участников Bitcoin.
Многие считали, что Накамото включил это ограничение, чтобы предотвратить будущие атаки типа «отказ в обслуживании» (DDoS), которые могли бы повлиять на сеть.
Это фиксированное ограничение пропускной способности блоков имело нежелательный эффект, ограничивая потенциал Bitcoin к масштабированию несколькими способами.
Низкая пропускная способность и медленное время транзакций
Только ограниченное количество транзакций может поместиться в относительно небольшой блок размером 1 МБ, который теперь принял Bitcoin. Эта небольшая пропускная способность означала, что сеть Bitcoin могла обрабатывать только около 2–3 биткоин (BTC) транзакций в секунду — что очень далеко от традиционных цифровых платежных сетей, которые могут обрабатывать десятки тысяч транзакций в секунду.
Кроме того, чтобы блок транзакций считался действительным в рамках процесса майнинга биткоинов, он должен получить шесть подтверждений. Другими словами, шесть новых блоков должны быть добавлены в блокчейн после рассматриваемого блока, прежде чем он будет окончательно завершен. При среднем времени блока в десять минут это означает, что подтверждение биткоин-блока занимает около одного часа.
В то время, когда о биткоине знали лишь немногие криптографы-«киберпанки», это не было большой проблемой. Но если сеть Bitcoin должна была стать глобальной «одноранговой электронной денежной системой», как Сатоши предполагал в белой книге Bitcoin, то что-то должно было измениться.
Высокие комиссии
Низкая пропускная способность Bitcoin, ограниченная небольшим размером блока, означала, что комиссии также были сравнительно намного выше, чем сегодня.
Вот простой способ понять эту проблему. Представьте, что вы стоите на улице в толпе людей после просмотра театрального представления. Все из театра хотят одновременно поехать домой на такси. Если такси много, то всем будет легко добраться домой. Но если такси всего несколько, люди могут попытаться заплатить таксистам более высокую цену, чтобы стимулировать водителя отвезти их домой первыми. В зависимости от спроса, цены на такси могут значительно вырасти по сравнению с обычной ставкой.
Комиссии Bitcoin работают по тем же принципам спроса и предложения. Если многие люди хотят, чтобы их транзакции были обработаны одновременно, некоторые могут предпочесть заплатить больше комиссий, чтобы их транзакция была обработана майнерами быстрее. В периоды высокой загрузки сети Bitcoin перегрузка может привести к конкуренции между пользователями, что может вызвать резкий рост комиссий за транзакции.
Пластичность транзакций
Еще одним неотъемлемым нюансом работы блоков Bitcoin была известная проблема пластичности транзакций. До SegWit люди могли изменять идентификатор транзакции до того, как она получала достаточно подтверждений в блокчейне.
Получение информации, связанной с конкретной транзакцией, и ее обработка с помощью хеш-функции создает идентификатор транзакции. Вы можете узнать больше о хеш-функциях в нашей статье Как криптовалюты используют криптографию?
Но для простоты вы можете рассматривать эти идентификаторы транзакций как цифровые отпечатки, которые используются для идентификации и ссылки на транзакции в блокчейне.
Изменение идентификатора транзакции создает совершенно новый хеш, который иногда мог сбивать с толку клиентское программное обеспечение блокчейна. Все узлы запускают клиентское программное обеспечение для взаимодействия с блокчейном и выполнения важных ролей, таких как проверка данных.
Эта ошибка пластичности в коде Bitcoin открыла двери для вредоносных атак. Одним из самых печально известных примеров атаки с использованием пластичности транзакций был взлом биржи Mt. Gox в 2014 году — известный как крупнейший взлом биткоинов в истории.
Эксперты сообщили, что хакер или группа хакеров опустошили биткоин-кошелек биржи Mt. Gox. Они сделали это, частично изменив идентификатор транзакции своих выводов.
Атака с использованием пластичности транзакций создавала впечатление, что выводы не подтверждаются в блокчейне, хотя на самом деле они подтверждались.
Эта уязвимость, в сочетании с другими векторами атак, позволила хакеру(ам) вывести более 840 000 BTC с биржи.
Какие улучшения принес SegWit? ⚙️
Участник Bitcoin Питер Вуйлле впервые представил обновление SegWit на мероприятии Bitcoin Hong Kong в 2015 году.
Его решение было инновационным по трем направлениям. SegWit улучшил масштабируемость Bitcoin, устранил пластичность и позволил узлам принять новую структуру транзакций. Лучше всего то, что это можно было реализовать без хардфорка сети.
Разделение цифровой подписи и информации о транзакции
Предложение Вуйлле увеличило пропускную способность блоков Bitcoin путем «сегрегации» данных «свидетеля» из блока и перемещения их в транзакцию coinbase. Транзакции coinbase — это самые первые транзакции в каждом новом блоке Bitcoin. Транзакция coinbase отвечает за выпуск вновь созданной криптовалюты в обращение в качестве вознаграждения за процесс майнинга биткоинов.
Майнеры, которым удается выиграть в криптографическом соревновании Bitcoin по доказательству работы, получают эти вновь созданные токены в качестве «вознаграждения за блок».
Данные свидетеля, также известные как ScriptSig или Unlocking Script, включают цифровую подпись и информацию о публичном ключе, необходимые для разблокировки переданного биткоина. Обновление SegWit ввело отдельное «поле свидетеля» для части ScriptSig транзакции.
Обработка информации о цифровой подписи отдельно от поля ввода транзакции позволила увеличить пространство для транзакций в каждом блоке.
Больше транзакций на блок означает более высокую пропускную способность транзакций. Таким образом, вместо 2-3 транзакций в секунду Bitcoin может обрабатывать от 7 до 10 транзакций SegWit в секунду. Увеличенная пропускная способность также означает более низкие комиссии, поскольку блокчейн Bitcoin может обрабатывать больший объем транзакций.
Несмотря на разделение, важно отметить, что узлы по-прежнему обрабатывают как данные транзакции, так и данные свидетеля в цепочке. Никакие сайдчейны или протоколы второго уровня не используются.
Вес блока
До SegWit майнеры измеряли биткоин-блоки по размеру (в байтах). Эта система хорошо работала, когда блоки содержали как данные свидетеля, так и данные транзакций, но столкнулась с проблемами, когда они были разделены.
Чтобы преодолеть это, обновление ввело метрику, называемую весом блока, для управления размером блоков.
Согласно этой концепции, каждый 1-мегабайтный блок состоит из 4 000 000 единиц веса (WU). Каждой транзакции присваивается вес на основе следующей формулы:
Базовый размер транзакции в байтах (без данных свидетеля) * 3 + Общий размер транзакции в байтах.
Удаление данных поля свидетеля из расчета значительно снижает вес транзакций SegWit. С другой стороны, транзакция без SegWit по-прежнему содержит данные свидетеля. Это означает, что транзакции без SegWit всегда весят в 4 раза больше, чем транзакции SegWit.
Эта концепция теоретически увеличивает размер биткоин-блока с 1 МБ до 4 МБ, если блок состоит почти полностью из данных свидетеля. Однако на практике это невозможно.
Основное преимущество взвешенной системы заключается в том, что она стимулирует майнеров обрабатывать блоки, содержащие в основном транзакции SegWit. Предполагая, что транзакции SegWit несут те же комиссии, что и устаревшие блоки, майнер может обрабатывать гораздо больше транзакций SegWit на блок. Чем больше транзакций они обрабатывают на блок, тем больше комиссий они зарабатывают.
Выигрыш для обеих сторон. Или так можно было бы подумать.
Больше никаких проблем с пластичностью транзакций
В структуре SegWit хешированный идентификатор транзакции содержит только информацию о транзакции, а не информацию о поле свидетеля.
Это изменение устраняет изменяемый компонент биткоин-транзакции, который ранее позволял атаки пластичности.
В результате стали возможны вторичные решения для масштабирования, такие как сеть Bitcoin Lightning Network.
Почему SegWit был спорным? 🤔
Многие в сообществе разработчиков считали, что SegWit недостаточно далеко зашел в решении проблем масштабирования Bitcoin.
Основные аргументы против активации SegWit включают:
- Увеличенная пропускная способность Bitcoin в 7-10 транзакций в секунду все еще недостаточно высока для децентрализованной глобальной платежной системы.
- Комиссии останутся относительно высокими, что сделает микротранзакции финансово невыгодными.
- Майнеры по-прежнему могут обрабатывать устаревшие блоки транзакций, что означает, что пластичность все еще является угрозой.
- Позже было обнаружено, что SegWit нейтрализует механизм ASICBOOST Bitmain; эксплойт, используемый для значительного повышения эффективности майнинговых установок.
Примерно через год после предложения Вуйлле он и другие разработчики Bitcoin Core, включая Эрика Ломброзо, подготовили код к запуску в предстоящем обновлении Bitcoin Core 0.13.1. Единственным оставшимся шагом для активации SegWit было то, чтобы майнеры начали обрабатывать новые блоки SegWit.
Для закрепления его реализации более 95% всех майнеров биткоинов должны были бы выразить поддержку SegWit в течение первых двух недель его инициации — серьезное препятствие, учитывая обстоятельства того времени.
Софтфорк, активируемый пользователями
Излишне говорить, что крупные майнинговые компании, такие как Bitmain, по-прежнему были недовольны предложенными изменениями и отказались поддерживать активацию SegWit.
В начале 2017 года псевдонимный разработчик по имени «Shaolinfry» поднял вопрос о возможности принудительного софтфорка узлами Bitcoin в онлайн-сообщении для разработчиков Bitcoin.
Софтфорк, активируемый пользователями, никогда ранее не предпринимался в сети Bitcoin, но он позволил бы разработчикам внедрить SegWit при поддержке около 51% майнеров. Те, кто отказался поддерживать новые блоки, рисковали тем, что их блоки будут отклонены узлами. Решение не было лишено рисков. Если бы SegWit не получил достаточной поддержки от майнеров, результат неизбежно привел бы к разделению цепи.
Противники SegWit предложили вместо этого другое обновление — хардфорк SegWit 2X. Оно предусматривало бы внедрение SegWit и увеличение размера блока Bitcoin до 2 МБ.
В отличие от предыдущего обновления, SegWit 2X не был бы обратно совместим с предыдущими версиями клиента Bitcoin. Эти изменения означали, что узлам пришлось бы обновить свое программное обеспечение, чтобы продолжить работу в сети.
SegWit и Нью-Йоркское соглашение 🗽
Ведущие компании отрасли встретились на Consensus 2017 и коллективно подписали меморандум, названный "Нью-Йоркским соглашением". Этот документ излагал планы по запуску SegWit летом и увеличению размера блока Bitcoin до 2 МБ к ноябрю.
В преддверии ноября Shaolinfry разработал два предложения по улучшению Bitcoin (BIP): BIP148 и BIP149. Первое представляло собой быстрое и жесткое решение: сигнализируйте о поддержке блоков SegWit, иначе узлы отклонят ваши блоки. Второе предусматривало более длительный срок для подключения майнеров, устанавливая крайний срок активации на июль следующего года.
По мере приближения даты инженер по гарантии Bitmain Джеймс Хиллард предложил новый BIP: BIP91. Его решение было направлено на то, чтобы сделать SegWit 2X и BIP148 совместимыми друг с другом. Зачем рисковать разделением цепи из-за двух конкурирующих обновлений SegWit, если можно сделать их совместимыми?
1 августа достаточная поддержка майнеров закрепила активацию SegWit. Однако второй этап Нью-Йоркского соглашения не получил такой же поддержки.
Неспособность увеличить размер блока Bitcoin до 2 МБ привела к формированию Bitcoin Cash (BCH) — нового форкнутого проекта из блокчейна Bitcoin.
Важность Дня независимости Bitcoin
Внедрение SegWit и решение сообщества отклонить увеличение размера блока стало знаковым моментом для всего сообщества Bitcoin.
SegWit продемонстрировал важность консенсуса в вопросах изменений в блокчейне Bitcoin, а также степень децентрализации власти, которую предлагал биткойн.
Ни один человек не смог захватить сеть и реализовать свое предложение.
Вместо этого сообщество обсуждало, итерировало и продолжало долгий процесс достижения консенсуса как коллективная группа — а не по указанию одного человека.
Начните покупать Bitcoin
Теперь, когда вы узнали все о SegWit, готовы ли вы продолжить свое криптопутешествие и купить биткойн?
Ознакомьтесь с нашим руководством в Центре обучения Kraken для получения дополнительной информации о том, как купить Bitcoin (BTC), и зарегистрируйте аккаунт на Kraken уже сегодня.