Доступно про Bitcoin SegWit: що таке SegWit, чому він важливий і що він дає
Коли Сатоші Накамото розробляв Bitcoin, він передбачив, що розмір кожного блоку не повинен перевищувати одного мільйона одиниць, а кількість транзакцій, які можуть бути записані в кожному такому блоці вкрай обмежена. У перші дні розміру блоку в один мільйон було достатньо, щоб впоратися з обсягом транзакцій на нішевому ринку, але коли кількість гравців Bitcoin стрімко зросла, він став сильно перевантаженим.
Наприклад, згідно зі статистикою, мережа Bitcoin оновлює новий блок кожні десять хвилин. За умови потужності в один мільйон транзакцій, кількість транзакцій, що містяться в кожному блоці, не перевищує десятків транзакцій, щонайбільше. Зараз Bitcoin може обробляти в середньому сім транзакцій за секунду. Це означає, що за особливих обставин у блокчейні Bitcoin накопичуються десятки тисяч транзакцій, а комісія за перекази Bitcoin сягає десятків доларів. Коли мережа перевантажена, транзакції Bitcoin можуть навіть займати кілька днів на обробку.
Тому користувачам, які займаються шифруванням, терміново знадобилося ефективне технічне рішення для вирішення проблеми повільної обробки Bitcoin-транзакцій. Це рішення допомогло б зробити так, щоб Bitcoin надходив до кожного швидше nf з меншою комісією за транзакцію (винагорода, що виплачується майнерам).Рішення з'явилося у вигляді Segregated Witness (SegWit).
Представляємо SegWit
Технологія SegWit була запропонована розробником Bitcoin Пітером Вуйле (Pieter Wuille) та іншими учасниками Bitcoin Core у 2015 році як вирішення проблеми швидкості обробки транзакцій. У 2017 році SegWit була офіційно використана в софтфорку мережі Bitcoin, завдяки чому пропускна здатність обробки інформації одного блоку Bitcoin була збільшена в 1,7 раза.
Наразі три основні валюти — Bitcoin, Litecoin та Bitcoin cash — почали впроваджувати SegWit. Переваги впровадження SegWit в основному включають збільшення розміру блоку, підвищення швидкості транзакцій та оптимізацію масштабованості транзакцій.
Технічні принципи SegWit
Розгляньмо технічні принципи та ідеї реалізації SegWit. Професіонали знають, що кожна частина інформації про транзакцію в Bitcoin поділяється на дві частини: основні дані про транзакцію і дані свідків. Дані про транзакцію фіксують баланс акаунта, а дані свідків підтверджують особу користувача.
Зазвичай користувачів найбільше цікавить основна інформація, пов'язана з активами, наприклад, баланс акаунта, а перевірка особи користувача не повинна займати надто багато часу в транзакції. Простіше кажучи, одержувачу переказу потрібно лише підтвердити, що актив доступний, і йому не потрібно знати деталі відправника.
Однак у структурі транзакції Bitcoin дані свідка - інформація про підпис — займають багато місця для зберігання, що, своєю чергою, затримує ефективність переказу й збільшує витрати на пакування. Технологія SegWit допомагає виокремити дані свідків з інформації про транзакцію і зберігати їх окремо, що прискорює транзакцію.
Основні переваги SegWit
Збільшення розміру блоку
Згідно зі статистикою, інформація про підпис може займати до 65% місця в блоці транзакцій Bitcoin. Цілком можливо, що після впровадження SegWit, початковий простір для зберігання блоків буде звільнено, і можна буде обробляти більше інформації про транзакції.
Вища швидкість транзакцій
Подібно до ідеї рішень Ethereum рівня 2, дані Bitcoin обробляються пошарово, щоб досягти мети збільшення швидкості транзакцій. Після впровадження SegWit система транзакцій Bitcoin сконцентрує більше обчислювальної потужності і більший обсяг пам'яті для обробки інформації про транзакції. У порівнянні з попереднім навантаженням, навантаження значно зменшиться, а швидкість транзакцій на секунду (TPS) в теорії буде тільки збільшуватися. Дані показують, що після впровадження SegWit середня вартість однієї транзакції знизиться до $1.
Переваги Lightning Network
Lightning Network — це найбільш обговорюване рішення рівня 2 для розширення протоколу Bitcoin, покликане вирішити проблему масштабованості Bitcoin офчейн.
Lightning Network прагне створити новий рівень мережі на блокчейні Bitcoin, і водночас відкрити платіжний канал. Як результат, за будь-яких екстремальних обставин транзакції великих переказів можуть бути завершені швидко й безперебійно, що можна розглядати як обробку даних в режимі офчейн. Однак SegWit швидко обробляє дані з найвищим пріоритетом ончейн.
Послаблення тиску на впровадження Lightning Network фактично опосередковано створює умови для Lightning Network.
Варто зазначити, що в технічній структурі SegWit дані транзакцій і підписів повністю відокремлені. У всій системі обробки транзакцій дані підпису користувача також виключені, тому немає жодної можливості підробки інформації про транзакції. В один клік виключено можливість запису неправильної інформації ончейн. Це також має позитивні переваги для розширення та застосування програми відновлення інформації про транзакції.
Крім того, SegWit також вважається першим прототипом ординалів Bitcoin, що розширює ліміт на кількість довільних даних, які можуть бути розміщені в транзакції, що дозволяє гравірувати написи на кожній сатоші Bitcoin. У 2021 році Taproot створив систему, яка полегшує зберігання довільних даних свідків, і продовжив розширювати ліміт даних, що розміщуються в транзакції Bitcoin, що дозволило створити невзаємозамінний ординал-токен Bitcoin, який існує сьогодні.
Як застосовується SegWit
Для звичайних користувачів технологія SegWit має три основні переваги:
Захищеність: вищий рівень безпеки, ніж у звичайних адрес
Швидкість: вища пропускна здатність блоку й швидша перевірка транзакцій
Доступність: комісія за транзакції нижча, ніж у звичайних адрес гаманців
Отже, як цю технологію можуть застосовувати звичайні користувачі? На прикладі вашого власного гаманця, якщо ви використовуєте ізольовану адресу гаманця для виконання прийому переказів Bitcoin, ви зможете скористатися перевагами, про які йшлося вище. Дані на кінець серпня 2020 року показали, що відсоток використання Bitcoin SegWit досяг 67%, а нові дані мають бути ще вищими.
Наразі формат адреси Bitcoin в поділяється на чотири основних типи:
Legacy
Формат Legacy (P2PKH) (адреси починаються з 1) — традиційні адреси.
Приклад: 1Fh7ajXabJBpZPZw8bjD3QU4CuQ3pRty9u, оригінальний формат адреси Bitcoin, який використовується і сьогодні.
P2PKH означає Pay to PublicKey Hash (Pay to Public Key Hash).
Nested
Формат Nested (P2SH) (деякі адреси починаються з 3) — мультипідпис.
Приклад: 3EktnHQD7RiAE6uzMj2ZifT9YgRrkSgzQXP2SH (Pay-to-Script-Hash), хеш платіжного скрипта, тобто скриптів введення і виведення Bitcoin-транзакцій, що використовують скрипти викупу і хеші скриптів викупу.
Його адресна структура схожа на P2PKH, але він підтримує більш складні функції, ніж традиційні адреси. Функції скриптів P2SH найчастіше використовуються з мультипідписними адресами, в яких можна вказати кілька цифрових підписів для авторизації транзакцій. Наприклад, адреса, що починається з 3, контролюється трьома особами, і будь-які двоє з них погоджуються ініціювати переказ.
Ці дві адреси є традиційними адресами переказу транзакцій і не використовують технологію Segregated Witness. Нижче представлено дві основні адреси з технологією Segregated Witness.
Формат Nested SegWit (P2SH) (адреси починаються з 3) — адреса, сумісна з технологією Segregated Witness.
Приклад: 3KF9nXowQ4asSGxRRzeiTpDjMuwM2nypANAddresses, що починається з 3.
Оскільки для пакування використовується метод P2SH, сумісна з SegWit адреса також починається з 3, який можуть розпізнати старі ноди.
Вам не потрібно знати, чи є Bitcoin-адреса, що починається з 3, адресою з мультипідписом або адресою, сумісною з технологією Segregated Witness. Достатньо знати, що адреса, яка починається з 3, широко підтримується, і ви можете надсилати Bitcoin на адреси, що починаються з 1 і bc1.
Native
Формат Native SegWit (Bech32) (адреса починається з bc1) — нативна адреса Segregated Witness.
Приклад: bc1qf3uwcxaz779nxedw0wry89v9cjh9w2xylnmqc3
Bech32-кодована адреса — це формат адреси, спеціально розроблений для SegWit. Формат Bech32 було представлено в BIP173 наприкінці 2017 року. Однією з основних його особливостей є те, що він не чутливий до регістру (адреса містить лише 0-9, az), тому дозволяє уникати плутанини та бути більш читабельним при введенні.
Оскільки в адресі потрібно менше символів, вона використовує кодування Base32 замість традиційного Base58, що робить обчислення більш зручними та ефективними. Дані також можна зберігати більш щільно в QR-кодах.
Bech32 забезпечує вищий рівень безпеки, має краще оптимізований код виявлення помилок контрольної суми та мінімізує ймовірність недійсних адрес. Адреси Bech32 повністю сумісні з SegWit. Для розміщення SegWit-адрес в P2SH-адресах не потрібно додаткового простору, тому при використанні адрес формату Bech32 комісія за обробку буде нижчою.
Адреси Bech32 мають кілька переваг над старими адресами Base58 (кодування Base58Check, що використовується для кодування байтових масивів в Bitcoin у рядки, що кодуються людиною). З адресами Bech32 QR-коди є меншими, більш стійкими до помилок, безпечними й нечутливими до регістру. Вони також складаються лише з малих літер, що полегшує їх читання та розуміння під час введення.
Формат Native P2WPKH / Native P2WSH (Bech32) (адреса починається з bc1q) — власна адреса Segregated Witness.
Приклад Native P2WPKH: bc1qmgjswfb6eXcmuJgLxvMxAo1tth2QCyyPYt8shzNative
Приклад P2WSH: bc1q09zjqeetautmyzrxn9d2pu5c5glv6zcmj3qx5axrltslu90p88pqykxdv4wj
Для segwit-адрес версії 0 вони завжди починаються з bc1q. У цьому поколінні адреси Pay-to-Witness-Public-Key-Hash (P2WPKH) довжина адреси P2WPKH фіксована і становить 42 символи.
В адресі Pay-to-Witness-Script-Hash (P2WSH) довжина адреси P2WSH фіксована і становить 62 символи. P2WPKH зазвичай використовується у звичайних адресах, а P2WSH — в адресах з мультипідписом.
У 2019 році було виявлено, що якщо останнім символом адреси Bech32 є P, і якщо пізніше випадково ввести один або кілька Q, вона все одно пройде перевірку контрольної суми і не отримає повідомлення про помилку введення. Програмне забезпечення гаманця вважатиме, що адреса була введена правильно, і дозволить відправити Bitcoin на неправильну адресу, що зробить Bitcoin невитратними, як пояснювалося вище.
Гарна новина: Bech32 використовується лише для SegWit, а адреси SegWit мають ліміт довжини — вони можуть бути лише 20 байтів або 32 байти. На щастя, якщо ви введете додатковий символ Q після адреси довжиною 20 або 32 байти, введена адреса буде недійсною, оскільки вона перевищує ліміт довжини. Гаманець визначить цю проблему й відмовиться надсилати Bitcoin.
Спершу було запропоновано ввести аналогічне обмеження довжини адреси для Taproot, але рішення, згадане нижче, усуває цю необхідність. Гнучка довжина адреси допоможе нам покращити Taproot у майбутньому.
P2TR
Формат P2TR (Bech32m) (адреса починається з bc1p) — адреса Taproot.
Приклад: bc1pqs7w62shf5ee3qz5jaywle85jmg8suehwhOawnqxevre9k7zvqdz2mOn
Щоб виправити помилку Bech32, запропоновано новий стандарт Bech32m. Bech32m містить дуже просту зміну: до формули контрольної суми Bech32 додається додаткова цифра, щоб гарантувати, що будь-які додаткові символи не призведуть до отримання неправильної контрольної суми.
Цей новий стандарт застосовується лише до адрес Taproot і майбутніх адрес. Для адрес SegWit нічого не змінилося, оскільки вони вже захищені обмеженням довжини у 20 або 32 байти.
Для виправлення вищезгаданих недоліків Bech32 у BIP0350 запропоновано адреси Bech32m:
Для нативних segwit-адрес версії 0 використовується попередня версія Bech32
Для нативних segwit-адрес версії 1 (або вище) використовуються нові Bech32m
Адреси Bech32m завжди починаються з bc1p, якщо це адреси версії 1 (тобто адреси Taproot).
Інші відмінності між адресами
Якщо подивитися глибше, то можна побачити й інші малопомітні відмінності між адресами:
адреси, сумісні з SegWit (що починаються з 3), заощаджують 24% комісій за переказ порівняно з традиційними адресами (починаються з 1);
адреси Native SegWit (що починаються з bc1) заощаджують 35% комісії за переказ порівняно з традиційними адресами (що починаються з 1);
адреса SegWit (що починається з bc1 і деякі з 3) може заощадити до 70% комісії за переказ порівняно з адресою з мультипідписом (деякі, що починаються з 3);
адреса Taproot підтримує утримування BTC NFT й Ordinals NFT, а комісія за переказ аналогічна адресам, що починаються з 3.
Висновок
SegWit — це важливий крок у розвитку Bitcoin, спрямований на збільшення кількості транзакцій на блок, яку може обробити мережа Bitcoin. Крім того, він усуває рідкісну уразливість, пов'язану з пластичністю транзакцій, і додає Bitcoin більшої програмованості, що сприяє появі рішень для подальшого масштабування, таких як Lightning Network.
Гаманець OKX вже підтримує використання ізольованої адреси свідка, включаючи для Bitcoin, Litecoin і Bitcoin Cash при операціях переказу та поповнення, покращуючи зручність для користувачів, знижуючи комісію за використання і збільшуючи швидкість переказу коштів. Водночас гаманець OKX також повністю підтримує адресу Taproot, на яку покладаються ординали BRC-20 і BTC NFT.