Все о SegWit, его значении и достижениях
Когда Сатоши Накамото создавал Bitcoin, он обусловил, что объем каждого блока не должен превышать одного миллиона. В блок с такой пропускной способностью можно записать ограниченное количество транзакций. Сначала этого было достаточно, чтобы справиться с объемом транзакций небольшого рынка. Однако с ростом количества пользователей Bitcoin сеть стала перегружаться.
По статистике, сеть Bitcoin обновляет новый блок каждые десять минут. При условии пропускной способности в один миллион количество транзакций в каждом блоке не превышает несколько десятков. Сейчас Bitcoin может обрабатывать в среднем семь транзакций в секунду. Это означает, что при определенных обстоятельствах на блокчейне Bitcoin скапливаются десятки тысяч транзакций, а комиссия за транзакцию при переводе Bitcoin достигает десятков долларов США. Когда сеть перегружена, обработка транзакций Bitcoin может занять несколько дней.
По этой причине пользователям срочно требовалось эффективное техническое решение проблемы, которое позволит проводить транзакции Bitcoin быстрее и с меньшей комиссией за транзакцию (комиссией, которая выплачивается майнерам).Этим решением стал Segregated Witness (SegWit).
Что такое SegWit
В 2015 году один из разработчиков Bitcoin Питер Вуйле и другие участники Bitcoin Core создали технологию SegWit для решения проблемы скорости обработки транзакций. В 2017 году SegWit был официально использован как софтфорк Bitcoin, а обрабатывающая способность одного блока увеличилась в 1,7 раза.
Сейчас SegWit применяют три крупные криптовалюты: Bitcoin, Litecoin и Bitcoin Cash. Главные преимущества использования SegWit заключаются в увеличении пропускной способности блоков, скорости транзакций и оптимизации масштабируемости транзакций.
Технические принципы SegWit
Давайте рассмотрим технические принципы и идеи реализации SegWit. Профессионалы знают, что в Bitcoin вся информация о транзакциях разделена на две части: основные данные транзакции и данные свидетелей. Данные транзакции записывают баланс аккаунта, а данные свидетеля подтверждают личность пользователя.
Пользователей обычно больше всего интересует основная информация об активах, например баланс аккаунта, а данные о верификации не так важны. Проще говоря, получателю достаточно подтвердить наличие актива и не нужно ничего знать об отправителе.
Однако в структуре транзакций Bitcoin данные свидетеля (информация о подписи) занимают много места, из-за чего падает эффективность перевода и увеличиваются расходы. Технология SegWit извлекает данные свидетеля из информации о транзакции и хранит их отдельно, ускоряя транзакции.
Основные преимущества SegWit
Повышенная пропускная способность блока
По статистике, информация о подписях занимает в блоке транзакций Bitcoin до 65% пространства. SegWit позволяет освободить исходное пространство блоков и обработать больше информации о транзакциях.
Увеличенная скорость транзакций
Как и в случае с решениями Ethereum второго уровня, данные Bitcoin обрабатываются на уровнях для увеличения скорости транзакций. После внедрения SegWit система транзакций Bitcoin выделит больше вычислительной мощности и объема хранения для обработки информации о транзакциях. Нагрузка на сеть значительно снизится, а количество транзакций в секунду (TPS) возрастет. Как показывают данные, после перехода на SegWit средняя стоимость одной транзакции снижается до $1.
Lightning Network
Lightning Network — самое популярное решение второго уровня для расширения протокола Bitcoin, предназначенное для устранения проблемы масштабируемости Bitcoin офчейн.
Lightning Network пытается создать новый уровень сети на блокчейне Bitcoin и одновременно создает платежный канал. Поэтому при любых чрезвычайных обстоятельствах крупные транзакции выполняются быстро и легко. Это можно считать офчейн-обработкой данных. Однако SegWit быстро обрабатывает данные с наибольшим приоритетом в блокчейне.
Снижение давления для реализации Lightning Network фактически косвенно создает условия для Lightning Network.
Следует отметить, что в рамках технической структуры SegWit данные о транзакциях и подписях полностью разделены. Данные подписи пользователя также исключаются из всей системы обработки транзакций, поэтому информацию о транзакции невозможно подделать. Одним кликом можно устранить возможность навсегда записать неверную информацию в блокчейн. Это также положительно сказывается на расширении и применении программы по восстановлению информации о транзакциях.
Кроме того, SegWit считается первым предшественником ординалов Bitcoin, который расширил лимит на количество произвольных данных в транзакции. Это позволяет создавать надписи на каждом сатоши Bitcoin. В 2021 году Taproot создал систему, облегчающую хранение данных свидетелей, и продолжил расширять лимит данных в транзакции Bitcoin, что позволило создать существующий сегодня невзаимозаменяемые токены ординалов Bitcoin.
Применение SegWit
Обычным пользователям технология SegWit дает три важных преимущества:
Безопасность: больше безопасности, чем у обычных адресов
Скорость: расширенная пропускная способность блоков и быстрая проверка транзакций
Выгода: комиссия за транзакцию ниже, чем у обычных адресов кошельков
Как же эта технология применима к обычным пользователям? Те, кто используют изолированный адрес кошелька для переводов Bitcoin, могут воспользоваться преимуществами, описанными выше. Данные конца августа 2020 года показали, что доля использования SegWit достигла 67%, значит актуальные данные еще выше.
Сейчас формат адреса Bitcoin в основном делится на четыре типа:
Legacy
Legacy (P2PKH) (начинается с 1) — стандартный формат адреса.
Например, оригинальный формат адреса Bitcoin, который используется до сих пор, выглядит так: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u.
P2PKH расшифровывается как Pay To PubKey Hash.
Nested
Формат Nested (P2SH) (некоторые адреса начинаются с 3) — адрес с мультиподписью.
Пример: 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQXP2SH (Pay-to-Script-Hash), хеш платежного скрипта, то есть скриптов ввода и вывода транзакций Bitcoin, использующих скрипты погашения и хеши скриптов погашения.
Структура адреса похожа на P2PKH, но формат поддерживает более сложные функции, чем традиционные адреса. Функции скрипта P2SH часто используются с адресами с мультиподписью, которые могут указывать несколько цифровых подписей для подтверждения транзакций. Например, адрес, начинающийся с 3, контролируется тремя людьми, и двое из них могут инициировать перевод.
Два вышеперечисленных адреса — это традиционные адреса транзакций, они не используют технологию Segregated Witness. Ниже представлены два основных адреса Segregated Witness.
Формат Nested SegWit (P2SH) (адреса начинаются с 3) — это адреса, совместимые с Segregated Witness.
Пример адреса, который начинается с 3: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypAN.
Поскольку для упаковки используется метод P2SH, совместимый с SegWit адрес также начинается с цифры 3, чтобы его могли распознавать старые ноды.
Пользователям не нужно различать адреса с мультиподписью и совместимым с Segregated Witness адреса, которые начинаются на 3. Достаточно знать, что такой адрес широко поддерживается и с него можно отправлять Bitcoin на адреса, начинающиеся с 1 и bc1.
Native
Формат Native SegWit (Bech32) (адрес начинается с bc1) — нативный адрес Segregated Witness.
Пример: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
Bech32 — это формат адреса, разработанный специально для SegWit. Bech32 был предложен в BIP173 в конце 2017 года. Одна из главных особенностей этого формата — отсутствие чувствительности к регистру (адрес содержит только цифры от 0 до 9 и буквы от a до z), что позволяет избежать путаницы и легко читать его при вводе.
Поскольку в этом адресе меньше символов, он использует кодировку Base32 вместо традиционной Base58, благодаря чему удобнее делать вычисления. Также в QR-кодах можно хранить больше данных.
Bech32 обеспечивает высокую безопасность, оптимизирует код обнаружения ошибок контрольной суммы и минимизирует вероятность появления недействительных адресов. Адреса Bech32 совместимы с SegWit. Для размещения адресов SegWit в адресах P2SH не требуется дополнительного места, поэтому при использовании адресов формата Bech32 плата за обработку ниже.
У адресов Bech32 есть несколько преимуществ по сравнению со старыми адресами Base58 (кодировка Base58Check использовалась для кодирования массивов байтов Bitcoin в строки, пригодные для человеческой кодировки). QR-коды адресов Bech32 меньше, более устойчивы к ошибкам, безопасны и не чувствительны к регистру. Также они состоят из строчных букв, что облегчает чтение и понимание при написании.
Формат Native P2WPKH / Native P2WSH (Bech32) (адрес начинается с bc1) — адреса Native Segregated Witness.
Пример Native P2WPKH: bc1qmgjswfb6eXcmuJgLxvMxAo1tth2QCyyPYt8shzNative
Пример P2WSH: bc1q09zjqeetautmyzrxn9d2pu5c5glv6zcmj3qx5axrltslu90p88pqykxdv4wj
Адреса SegWit версии 0 всегда начинаются с bc1q. Длина адреса Pay-to-Witness-Public-Key-Hash (P2WPKH) фиксирована и составляет 42 символа.
Длина адреса Pay-to-Witness-Script-Hash (P2WSH) составляет 62 символа. Обычно P2WPKH используется в обычных адресах, а P2WSH — в адресах с мультиподписью.
В 2019 году было обнаружено, что если в конце адреса Bech32 стоит P и после нее случайно вводится один или несколько Q, он все равно может пройти проверку контрольной суммы без сообщения об ошибке ввода. Программное обеспечение кошелька будет считать, что адрес был введен верно, и позволит отправить Bitcoin на неправильный адрес, после чего их нельзя будет потратить.
К счастью, Bech32 используется только для SegWit, а у адресов SegWit есть ограничение длины в 20 или 32 байта, поэтому дополнительный Q в конце адреса сделает его недействительным. Кошелек увидит эту проблему и откажется отправлять Bitcoin.
Изначально было предложено ввести аналогичный лимит длины адреса для Taproot, но решение, упомянутое ниже, устраняет эту необходимость. Гибкая длина адреса лучше подходит для будущих улучшений Taproot.
P2TR
Формат P2TR (Bech32m) (адрес начинается с bc1p) — адрес Taproot.
Пример: bc1pqs7w62shf5ee3qz5jaywle85jmg8suehwhOawnqxevre9k7zvqdz2mOn
Для исправления ошибки Bech32 был предложен новый стандарт под названием Bech32m. Bech32m — это очень простое изменение. В формулу контрольной суммы Bech32 добавляется дополнительная цифра, чтобы убедиться, что любые дополнительные символы создадут недействительную контрольную сумму.
Этот новый стандарт применим только к адресам Taproot и будущим адресам. Для адресов SegWit ничего не меняется, поскольку они защищены ограничением длины в 20 или 32 байта.
Чтобы исправить недостатки Bech32, в BIP0350 предлагается адрес Bech32m:
Для версии 0 адресов Native SegWit используется Bech32
Для версии 1 адресов Native SegWit (или более поздней) используется Bech32m
Адреса Bech32m версии 1 (т.е. адреса Taproot) всегда начинаются с bc1p.
Различия между адресами
Если смотреть шире, можно заметить и другие небольшие различия между адресами:
Адреса, совместимые с SegWit (начинаются с 3), экономят 24% комиссии за перевод по сравнению с традиционными адресами (начинаются с 1)
Адреса Native SegWit (начинаются с bc1) экономят 35% комиссии за перевод по сравнению с традиционными адресами (начинаются с 1)
Адреса SegWit (начинаются с bc1 и 3) экономят до 70% комиссии за перевод по сравнению с адресами с мультиподписью (начинаются с 3)
Адреса Taproot поддерживают хранение BTC NFT и Ordinals NFT, а комиссия за перевод аналогична адресам, начинающимся с 3.
Заключение
SegWit — важное обновление Bitcoin, направленное на увеличение количества транзакций в блоке, которые может обрабатывать сеть. Кроме того, SegWit устраняет проблему пластичности транзакций и повышает удобство программирования Bitcoin, позволяя масштабировать Lightning Network и другие решения.
Кошелек OKX уже позволяет использовать изолированные адреса, включая Bitcoin, Litecoin и Bitcoin Cash, при переводе и пополнении аккаунта. Это оптимизирует работу пользователей, снижает комиссию и увеличивает скорость перевода. Также кошелек OKX полностью поддерживает адреса Taproot, которые используются для ординалов BRC-20 и BTC NFT.
© OKX, 2024. Эту статью можно воспроизводить или распространять как полностью, так и в цитатах объемом не более 100 слов при условии некоммерческого использования. При любом воспроизведении или распространении полного ее содержания нужно четко указать: «Разрешение на использование получено от владельца авторских прав (© 2024) на эту статью — OKX». Цитаты необходимо приводить со ссылкой на название статьи и авторство, например: «Название статьи, [имя автора], © OKX, 2024». Использование статьи в производных и других работах не допускается.