SegWit биткоина: что это простыми словами и как влияет на масштабирование

5310
Просмотры

Segwit — это обновление сети биткоина, которое произошло в августе 2017 года. В этой статье мы объясним, что такое Сегвит, зачем он нужен и как он может помочь в масштабировании сети.

 Что такое Segwit

Segwit — это обновление протокола Bitcoin, который разделяет цифровую подпись (также известную как «свидетель», он же «the witness» от транзакции. Это позволяет разместить больше транзакций в блоке размером 1 МБ.

Название Segwit является сокращением от Segregated Witness. Впервые его упомянули для широкой общественности в декабре 2015 года. Это сделал разработчик Питер Вьюэлл на конференции по масштабированию BTC. Решение должно преодолеть следующую проблему:

  • Транзакции записываются в бокчейн в виде связанных блоков.
  • Блоки нельзя нарушать, так как они идут последовательно и подтверждают друг друга.
  • Блоки были ограничены емкостью в 1 Мб, а это около 2700 транзакций. Эта цифра не подходит для всемирной сети, которая должна обрабатывать платежи регулярно и быстро.
  • Плюс ко всему, добыча блока занимает около 10 минут. Если транзакций много, начинается огромная очередь.
  • Каждая транзакция состоит из трех частей: подписи, вводом и выводом (или входом и выходом). Здесь и скрывается проблема.

Код биткоина на момент написания статьи позволял изменять цифровые подписи, если транзакция еще не подтверждена. Изменение подписи выполняется так, что результат равен при математической проверке. Но если делать хэширование, то получится уже другой результат. Если на примере, то получается так:

Подпись была равна 4. Вместо 4 я пишу 04, или 4-4+4, или 14:4 и т. д. Математически это все еще «4», а значит, подпись действительна. Но если хешировать эти данные, то получатся разные версии — это зависит от записи значения, а не от самого значения.

В реальной жизни могло бы быть так:

  • Я перечисляю тебе деньги транзакцией Х.
  • Ты не дожидаешься подтверждения, переводишь их продавцу транзакцией Y.
  • Продавец тоже ничего не ждет и отправляет тебе товар.
  • Ты меняешь технические вещи в моей транзакции, так что транзакция X отклоняется, а Y недействительна.
  • Платежи не состоялись, а сделка в реальности совершилась.

Хэш — это идентификатор транзакции в блокчейне. Изменять его нельзя по ряду причин. Это меняет данные первого уровня, а значит, осложняет работу оффчейн-приложений, типа Lightning Network.

SegWit перемещает подпись в конец данных транзакции, поэтому идентификатор транзакции создается из всего, кроме цифровой подписи.

С внедрением segwit сеть получила несколько преимуществ:

  • удвоена емкость сети,
  • транзакции дешевле и быстрее,
  • исправлена гибкость транзакций, описанная выше. Это было ключевым недостатком блокчейна BTC.
  • Новые возможности для разработчиков.

Принятие Segwit увеличивается. Почти 50% всех биткоин-транзакций используют адреса SegWit. Хотя все ноды не будут использовать сегвит, поскольку многим майнерам он не нравится. Низкие комиссии влияют на их прибыль, а другие цепочки поверх BTC не приносят денег.

Адреса Segwit начинаются с «3», а устаревшие адреса начинаются с «1».

О кошельках с поддержкой SegWit.

Это краткосрочное решение долгосрочных проблем. Некоторые разработчики жалуются, что протокол SegWit недостаточно далеко решает проблему масштабируемости. Они утверждают, что только значительные изменения в размере и способе обработки транзакций помогут платформе масштабироваться в будущем.

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

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

Прежде чем вы сможете понять SegWit, вы должны сначала понять, как обрабатываются транзакции в сети.

Для простоты представим блок, содержащий только одну транзакцию. Если Майк отправит Бобу 1 BTC, он добавит в блок важные данные:

  • Его вход и выход
  • Открытый ключ получателя и сумму BTC, которую он отправляет Бобу
  • Его открытый ключ
  • Его цифровая подпись

Открытый ключ и цифровая подпись Майка должны быть включены в блок. Они доказывают, что сделка является законной. Цифровая подпись включена в блок как скрипт (вы можете думать о скрипте как о коде). Так же, как люди подписывают чеки, чтобы авторизовать их, пользователи сети BTC должны подписывать транзакции.

Цифровые подписи занимают много места, которое в противном случае могло бы использоваться для данных транзакций. Когда тысячи транзакций инициируются одновременно, им не хватает места для входа в один и тот же блок. Пользователи должны платить комиссию за транзакцию, чтобы майнеры брали в блок их переводы.

В этот момент у вас появляется два решения: увеличить размер блока и сделать что-то внутри блока, чтобы освободить место. Вместо того, чтобы переходить на совершенно новую криптовалюту с крупным блоком, SegWit работает внутри блока.

60% данных, которые занимают подписи транзакции, перемещаются в ее конец. Segregated Witness, таким образом, — это способ удаления свидетеля (подписи) из транзакции. Размер значительно уменьшается.

До SegWit максимальный размер блока Биткойна составлял 1 МБ, то есть после достижения этого лимита блок больше не мог принимать новые транзакции. SegWit внедрил новый способ измерения размера транзакций. SegWit измеряет блоки, используя так называемый вес блока.

Вот формула, используемая для расчета веса блока:

(размер tx с удаленными данными свидетеля)*3 + (размер tx)

Узлы SegWit теоретически могут получать блоки, которые очень близки к 4 МБ. На практике блок SegWit не будет превышать 2 МБ.

Поскольку это софтфорк, старые ноды тоже могут обрабатывать транзакции.

История принятия SegWit

Раньше вся статья была посвящена тому, как пережить сегвит и что делать с биткоином. Теперь мы оставили исторические разделы для тех, кто хочет понять, как это было и чего ожидало сообщество.

Первый и оригинальный вариант был предложен группой разработчиков Bitcoin Core. Их код SegWit, определенный BIP141, активируется, если 95 процентов хэш-мощностей в течение одного периода сложности будут готовы в течение двух недель. Если майнеры, которые сигнализируют о готовности, действительно будут поддерживать обновление, риски форка в блокчейне и валюте биткоина минимальны.

Однако сегмент пользователей Bitcoin планирует активировать SegWit с BIP148 UASF. Начиная с 1 августа, их узлы будут отклонять все блоки, которые не сигнализируют о готовности к BIP141.

  • Если это предложение поддержано большинством майнеров (по хэш-силе), эти майнеры должны всегда требовать самую длинную действующую цепочку, готовую к SegWit, и избегать разделения.
  • Но если это предложение поддерживается меньшинством майнеров, «цепочка BIP148» может отделиться от текущего протокола.

Нью-йоркское соглашение, также называемое «Сильбертское соглашение» или «SegWit2x», планирует активировать SegWit через BIP91. Как и BIP148, все узлы BIP91 будут отклонять любые блоки, которые не сигнализируют о готовности к BIP141. Но в отличие от BIP148, узлы BIP91 будут делать это только после того, как 80% будут поддерживать BIP91 в течение примерно двух дней. Это также должно минимизировать вероятность раскола.

Тем не менее, второй шаг Нью-йоркского соглашения — это решение удвоить размер базового блока. Это изменение вероятнее всего может привести к хардфорку (что и случилось — апдейт 2019 года).

Теперь этапы активации SegWit по датам:

14 июля: установка BTC1

Бета-версия BTC1 была выпущена 30 июня. Но согласно дорожной карте SegWit2x, 14 июля — это тот день, когда подписавшие Нью-йоркское соглашение должны фактически установить бета-версию BTC1 и протестировать ее для себя.

Однако это не должно влиять на обычных пользователей.

21 июля: BIP91 сигналы для запуска

Команда разработчиков SegWit2x нацелена на то, чтобы 21 июля настал тот момент, когда узлы BTC1 фактически запущены и начались сигналы от майнеров.
Это также не должно влиять на обычных пользователей.

Но если вы майнер, вы можете помочь активировать SegWit, просигнализиров о своей готовности к BIP91.

23 июля: lock-in BIP91

Полная активация BIP91 требует, чтобы из 336 блоков (один период) 269 блоков должны сигнализировать о готовности. Это около 80% хэш-мощностей.

Опять же, это не должно влиять на обычных пользователей.

Но если вы майнер и BIP91 активируется, у вас есть день или два, чтобы соответствовать софт-форку BIP91. Если вы этого не сделаете, рискуете добывать недопустимые блоки.

25 июля: активация BIP91

25 июля создадутся еще 336 блоков после «блокировки», BIP91 вступит в силу. Любые блоки, которые не сигнализируют о готовности для SegWit (c BIP141), теперь будут отклонены.

Это все равно не должно влиять на обычных пользователей.

29 июля: крайний срок BIP91

Если майнеры хотят избежать «раскола» в блокчейне и валюте Биткоина, 29 июля — главный день для них. Нужно, чтобы была подготовлена совместимость с BIP148 UASF, до которого останется два дня.

Если BIP91 не активировался к крайнему сроку, в блокчейне биткоина пойдет раскол. Майнеру нужно решить, в какой цепи добывать блоки с 1 августа: в цепи BIP148 или в оригинальной цепи (Legacy).

31 июля: дедлайн BIP14

Технически, 31 июля — второй дедлайн для майнеров, чтобы избежать раскола. Должно пройти две недели, в течение которых 95% хэш-мощностей будут сигнализировать о принятии SegWit.

На следующий день активируется BIP148, что делает его третьим и окончательным дедлайном для майнеров, чтобы избежать форка.

1 августа, в 00:00 UTC, все узлы BIP148 начнут отклонять любые блоки, которые не сигнализируют о готовности к SegWit. Если BitcoinCore—BIP141 или BTC1—BTC91 заблокированы и/или активированы во время, не должно быть раскола.

Если ни одно из этого не произошло, большинство майнеров (по хэш-силе) теперь имеют последний шанс избежать разрыва цепи: поддерживая BIP148 самостоятельно. Это гарантирует, что они всегда будут запрашивать самую длинную действующую цепочку в соответствии со всеми текущими узлами биткоина и активируют SegWit через BIP141.

В итоге блокчейн разделился: это запустило целую волну форков. О них подробно в статье Все форки биткоина.