- SegWit (СегВит) как способ увеличения масштабируемости биткоина
- Что такое SegWit
- История создания SegWit (Сегвит)
- Подготовительный этап
- Софтфорк, хардфорк и прочие разногласия
- Активация SegWit в основной сети биткоина и ее последствия
- SegWit (Сегвит) в других криптовалютах
- SegWit в 2021 году
- SegWit или Legacy?
- Кошельки, поддерживающие технологию Segregated Witness
- Плюсы и минусы технологии
- SegWit биткоина: что это простыми словами и как влияет на масштабирование
- Читайте в статье
- Что такое Segwit
- Как работает SegWit
- История принятия SegWit
- 14 июля: установка BTC1
- 21 июля: BIP91 сигналы для запуска
- 23 июля: lock-in BIP91
- 25 июля: активация BIP91
- 29 июля: крайний срок BIP91
- 31 июля: дедлайн BIP14
SegWit (СегВит) как способ увеличения масштабируемости биткоина
О том, что биткоин станет общепринятым платежным средством, говорят с самого момента его появления, то есть уже более 10 лет. Однако, стоит понимать, что с текущей пропускной способностью его сети это не представляется возможным. В среднем 3, максимум 5–7 транзакций в секунду — все, что может предложить Bitcoin в то время, как, например, у Visa этот показатель измеряется тысячами.
Одна из причин такой медлительности кроется в проблеме масштабирования, которую уже давно пытаются исправить многие разработчики, предлагая решения второго уровня вроде Lightning Network. Но их внедрению препятствует еще ряд недостатков блокчейна биткоина, частично устранить которые помогает обновление протокола SegWit, приведшее к выделению цепи Bitcoin Cash и ряду других драматичных событий. Но, обо всем по порядку.
Что такое SegWit
SegWit — это сокращение от словосочетания Segregated Witness, которое переводится с английского, как «отделенный (сегрегированный) свидетель». Именно такое название носит обновление протокола, изменяющее способ хранения данных в блокчейне с целью улучшения его масштабируемости и скорости работы.
Одна из основных причин вышеописанных проблем заключается в ограничении размера блока биткоина — он не может весить больше 1 MB. В каждом блоке, как известно, содержится информация обо всех добавленных в него транзакциях. При этом большую часть веса транзакции занимают данные свидетеля (witness), записанные в строке кода scriptSig. Речь идет о цифровой подписи отправителя, подтверждающей его намерение перевести указанную в транзакции сумму монет. В каждом блоке эта информация суммарно занимает около 60%!
Второй проблемный момент заключается в том, что подпись формально может быть откорректирована уже после того, как транзакция появилась в блоке, а, значит, существует вероятность изменения ее идентификатора (хеша). В итоге следующие операции, входящие уже в другие блоки, замедляются из-за необходимости построения последовательной цепочки подтвержденных транзакций, для каждой из которых приходится «вытягивать» окончательные данные из прошлых сделок. Эта особенность транзакций получила название пластичности (гибкости) и является основным препятствием для внедрения решений второго уровня в блокчейны биткоина и схожих с ним криптовалют. Кроме того, эту уязвимость теоретически могли использовать злоумышленники, чтобы препятствовать включению транзакций в блоки.
SegWit (Сегвит) решает описанные проблемы путем вынесения раздела кода с цифровой подписью за пределы базовой структуры блокчейна в сайдчейн (побочную цепь) с блоками размером 4 MB. Таким образом повышается эффективность использования полезного объёма основных блоков (их размер остается стандартным — 1MB), что означает возможность включения в них большего количества транзакций (почти в два раза).
Также при помощи SegWit исчезает явление пластичности — внесение изменений в цифровые подписи больше не приводит к замене идентификаторов. Это значит, что транзакции подтверждаются быстрее и устраняются препятствия, мешающие развертыванию скоростных платежных каналов в виде надстроек к основной сети. Еще один приятный плюс — снижение комиссий за проведение переводов вплоть до 50%.
Еще лучше понять задачи и принцип работы технологии SegWit поможет видео ниже:

История создания SegWit (Сегвит)
О том, что структура блокчейна биткоина является неидеальной и требует внесения изменений, начали говорить уже через несколько лет после его запуска.
В 2012 году группа разработчиков Bitcoin Core называла транзакционную пластичность одной из главных проблем в дальнейшем развитии сети.
В последующие годы с ростом популярности биткоина все чаще случались периоды загруженности блокчейна, во время которых подтверждения транзакций приходилось ждать по нескольку дней. Некоторые для решения проблемы предлагали увеличить размер блока путем проведения хардфорка, однако эта идея не была массово поддержана членами сообщества.
Подготовительный этап
В 2014 году биткоин-разработчики Адам Бэк (Adam Back), Грегори Максвелл (Gregory Maxwell), Питер Уилле (Pieter Wuille) и Мэт Коралло (Matt Corallo) при участии еще нескольких человек основали компанию Blockstream, деятельность которой была сосредоточена на разработке сайдчейнов, улучшающих сеть биткоина. В ее лабораториях и родилась идея по внедрению в сеть Bitcoin обновления Segregated Witness. Концепция SegWit впервые была представлена на конференции Scaling Bitcoin в Гонконге в декабре 2015-го (Lightning Network была презентована двумя месяцами ранее на том же мероприятии в Монреале).
Это предложение по улучшению масштабируемости было встречено в основном положительно, в частности из-за того, что не требовалось изменение существующих правил консенсуса. Для внедрения SegWit достаточно было провести частичное обновление протокола через софтфорк — программное обновление блокчейна без «жесткого» разделения на отдельные цепочки. Соответствующее решение было включено в предложение по улучшению биткоина BIP141 (и последующие BIP 142–145).
В январе 2016-го состоялся запуск тестовой сети под названием SegNet, которая уже через 2 месяца полноценно поддерживала первые версии Lightning Network.
Софтфорк, хардфорк и прочие разногласия
Параллельно с разработкой обновления частью биткоин-сообщества продолжала лоббироваться идея о необходимости увеличения размера блока путем хардфорка. В основном это были сторонники альтернативного клиента Bitcoin Classic.
В феврале 2016-го во время встречи в Гонконге между сторонами конфликта было достигнуто взаимное соглашение об активации SegWit с последующим проведением хардфорка по изменению размера блока до 2 MB.
В апреле апгрейд был готов к релизу, а уже в октябре 2016 года его интегрировали в клиент Bitcoin Core 0.13. Чтобы активировать обновление, разработчики должны были получить поддержку 95% майнеров. Однако, некоторые пулы для майнинга, контролирующие значительную часть мощностей сети биткоина, выступили против запуска SegWit.
Процесс сдвинулся с мертвой точки в апреле 2017-го, когда было сформировано предложение UASF (BIP148), заключающееся в изменении правил проведения софтфорков — для их активации требовалась поддержка не 95% майнеров, а такого же количества полных нод.
Затем в мае состоялась очередная встреча между сторонниками софтфорка и хардфорка. Результатом стало подписание Нью-Йоркского соглашения, которое заключалось в осуществлении альтернативного устраивающего все стороны сценария под названием SegWit2x. Он состоял в активации SegWit путем софтфорка при достижении 80% поддержки участников сети и проведении хардфорка по увеличению размера блока в течение полугода после этого. Важным нюансом описанного события стало то, что в нем не участвовали представители Bitcoin Core, поэтому существовал риск технической несовместимости с самым популярным биткоин-клиентом.
Активация SegWit в основной сети биткоина и ее последствия
1 августа был проведен ранее предложенный софтфорк UASF, изменивший правила для принятия следующих обновлений. Через неделю на блоке 479708 состоялась фиксация SegWit в основной сети биткоина. Окончательная активация многострадального обновления протокола Сегвит произошла 24 августа 2017 года.
В преддверии этих событий несогласные с приближающимся обновлением майнеры под предводительством Роджера Вера таки провели хардфорк, в результате которого 1 августа появилась самостоятельная ветвь в виде криптовалюты Bitcoin Cash. В этой сети размер блока был увеличен до 8 MB, однако несмотря на это преимущество большая часть сообщества все же избрала оригинальный биткоин с внедренным SegWit.
Что касается второй запланированной фазы SegWit2x, которая должна была увеличить размер блока биткоина до 2 MB, ее сторонники 8 ноября 2017-го объявили об отмене хардфорка. В качестве официальной причины было указано нежелание осуществлять очередной раскол сообщества, т.к. поддержка была на уровне всего 30%.
Некоторые отдельные группы разработчиков впоследствии заявляли о намерении самостоятельно реализовать хардфорк и 28 декабря это вроде как было сделано. Но по факту, кроме названия SegWit2x, у этого проекта было мало общего с оригинальной задумкой технологии Сегвит. В итоге появилась монета B2X, которая за последние полтора года обесценилась и сейчас почти нигде не торгуется.
SegWit (Сегвит) в других криптовалютах
После того, как в 2016 году стало известно о завершении разработки технологии SegWit, ее внедрением заинтересовались разработчики многих альткоинов. И поскольку многие из них были основаны на коде биткоина, реализовать это было не так уж и сложно.
Первым проектом, внедрившим SegWit, стал Groestlcoin в январе 2017 года. Немногим позже это обновление было активировано в блокчейнах Emercoin, Vertcoin, Syscoin, DigiByte, Viacoin и Monacoin.
Кроме того, 10 мая 2017 года обновление протокола было внедрено в сеть криптовалюты Litecoin. Именно тогда впервые была показана жизнеспособность модели UASF (активируемых пользователями софтфорков), благодаря которой и состоялся запуск SegWit в опекаемом Чарли Ли блокчейне.
SegWit в 2021 году
В данный момент эта технология используется в 40% всех совершаемых BTC-транзакций. Неполное принятие объясняется тем, что значительное количество участников сети все еще не обновили свое программное обеспечение до версии с поддержкой SegWit и, по сути, продолжают взаимодействовать с блокчейном по старым правилам.
Для сравнения — в сети Litecoin использование Segregated Witness в транзакциях сейчас находится на уровне 55–60%. То есть принятие новой технологии Сегвит почти в 1,5 раза выше, чем у биткоина, но полного перехода тоже еще не состоялось.
Когда состоится абсолютное принятие SegWit в сети Bitcoin (если это вообще случится), предсказать невозможно, поскольку модель софтфорка не предполагает обязательного перехода всех участников сети на новую версию используемого ПО.
SegWit или Legacy?
Поскольку полного принятия SegWit еще не состоялось, в блокчейне биткоина продолжают существовать три разных вида адресов:
- legacy — старый формат, начинаются с «1…»;
- compatibility (P2SH) — совместимы одновременно с новым и старым ПО, начинаются с «3…»;
- default segwit (bech32) — могут использоваться только теми, кто перешел на SegWit, начинаются с «bc1…».
Первый тип является оригинальным, т.е. изначально поддерживаемым сетью Bitcoin. Однако, с legacy-адресов нельзя пересылать средства на адреса формата bech32. А значит нет возможности использовать открываемые обновлением преимущества — а это, как минимум более быстрые и дешевые, транзакции.
Compatibility-адреса являются «всеядными», т.е. могут быть использованы как в кошельках и приложениях, которые еще не перешли на Segregated Witness, так и в тех, которые поддерживают эту технологию.
Третий вариант позволяет отправлять средства на адреса любого типа, используя все преимущества SegWit.
Поэтому, вывод напрашивается сам собой — лучше всего использовать нативные segwit-адреса.
При этом стоит помнить, что далеко не все биткоин-кошельки поддерживают взаимодействие с ними.
Кошельки, поддерживающие технологию Segregated Witness
На сегодняшний день работа с SegWit-адресами поддерживается во всех линейках аппаратных кошельков — Ledger, Trezor и KeepKey.
Также о поддержке SegWit (Сегвит) объявили почти все популярные десктопные и мобильные кошельки, среди которых Exodus, Electrum, Samourai Wallet, Green Address, Jaxx и Coinbase Wallet.
Конечно же, работа с новыми адресами Сегвит по умолчанию доступна во всех версиях клиента Bitcoin Core, выпущенных после августа 2017-го.
А вот известный сайт Blockchain.com, который является старейшим онлайн-кошельком, все еще не работает с SegWit.
Плюсы и минусы технологии
К основным преимуществам SegWit относится:
- Увеличение количества транзакций в блоке почти в 2 раза;
- Повышение пропускной способности сети;
- Снижение комиссионных сборов за проведение транзакций;
- Уменьшение размера блокчейна и, как следствие, времени его загрузки полными нодами (места на жестком диске также нужно меньше);
- Устранение пластичности транзакций, которая является основным препятствиям к внедрению решений второго уровня;
- Исключение возможности изменения цифровых подписей сторонними лицами.
Недостаток у обновления Segregated Witness, по сути, всего один — кратковременный эффект. Ведь даже если в будущем будут реализованы планы по увеличению размера блока до 2 MB, этого все равно может оказаться мало для поддержания приемлемой пропускной способности сети, которая, несомненно, будет пополняться новыми участниками с ростом популярности биткоина.
Но специалисты из Blockstream обещают, что эту проблему поможет устранить Lightning Network. Если им действительно удастся провести полномасштабное внедрение данной надстройки, это может дать тот самый толчок к более активному развитию экосистемы биткоина, который ему так необходим для становления глобальным платежным средством.
Источник
SegWit биткоина: что это простыми словами и как влияет на масштабирование
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 и 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.
В итоге блокчейн разделился: это запустило целую волну форков. О них подробно в статье Все форки биткоина.
Источник