Що таке SegWit?

Що таке SegWit?

У 2017 році біткойн мав проблему, яка мало не розірвала спільноту. Мережа могла обробляти приблизно 3 транзакції за секунду. Комісії різко зростали. Блоки були переповнені. І в кожного було своє уявлення про те, як це вирішити.

Переможним рішенням став SegWit, скорочення від Segregated Witness (Сегрегований свідок). Його запропонував Пітер Вуйле, один з провідних розробників Bitcoin Core, і він змінив структуру кожної біткойн-транзакції. Не невелике налаштування. Фундаментальна зміна того, як дані розміщуються всередині блоку. Вісім років по тому близько 96% усіх біткойн-транзакцій використовують адреси SegWit. Якщо ви купували або надсилали біткойн протягом останніх кількох років, ви майже напевно використовували його, не знаючи про це.

У чому ж була справжня проблема?

Дозвольте мені намалювати для вас картину 2016 року.

У біткойна було обмеження в 1 МБ на кожен блок. Сатоші встановив це обмеження ще у 2010 році, щоб зупинити спам-атаки, і ніхто його не скасував. Блоки майняться приблизно кожні 10 хвилин. При розмірі 1 МБ кожен це приблизно 1650 транзакцій на блок. Підрахуйте, і ви отримаєте приблизно 2-3 транзакції на секунду для всієї мережі біткойна. Вся планета використовує таку тонку трубу.

До речі, Visa обробляє 65 000 за секунду. Тож так. Проблема.

До кінця 2016 року кожен блок наближався до межі розміру 1 МБ. Коли місця не залишалося, користувачі біткойнів починали перебивати один одного за комісіями за транзакції, намагаючись підкупити майнерів, щоб вони першими вибрали їхню транзакцію. Комісії збожеволіли. Надсилання біткойнів на суму 10 доларів могло коштувати вам 15 доларів комісії. Це не мало сенсу.

А потім виникла більш «занудна» проблема. Гнучкість транзакцій. Я спробую пояснити це просто. Коли ви надсилаєте біткойн, мережа створює ідентифікатор для цієї транзакції. До SegWit цей ідентифікатор будувався з усієї транзакції, включаючи підписи. У чому ж підступ? Хтось міг захопити вашу непідтверджену транзакцію, погратися з кодуванням підпису (зберігаючи його технічно дійсним) і в результаті отримати інший ідентифікатор для того самого платежу. Той самий відправник. Той самий одержувач. Та сама сума. Інший ідентифікаційний номер.

Чому вас це має хвилювати? Тому що Mt. Gox, біржа, яка втратила 840 000 BTC у 2014 році, була атакована саме через цей баг. І що ще важливіше, будь-яка система другого рівня, побудована на основі Bitcoin (наприклад, платіжні канали), повинна посилатися на транзакції за їхніми ідентифікаторами. Якщо ці ідентифікатори можуть змінюватися, все руйнується.

Біткойн зіткнувся з двома проблемами одночасно: занадто малими блоками та ідентифікаторами транзакцій, яким не можна було довіряти. SegWit виправив обидві за один раз.

Як працює SegWit (без ступеня з інформатики)

Уявіть собі транзакцію біткойнів як чек. Є частина, де зазначено, хто кому платить і скільки. Потім є ваш підпис внизу, який підтверджує законність транзакції. До SegWit обидві частини втискалися в один блоб, і все це враховувалося в ліміт розміру блоку в 1 МБ.

Ось що дратувало Пітера Вуйле: дані підпису поглинали приблизно 65% кожної транзакції. Більша частина кожного блоку не записувала, що сталося. Вони записували доказ того, що хтось погодився. Це здавалося марнотратством.

Його ідея: вилучити підписи. Помістити їх в окремий розділ під назвою «свідок». Дані транзакцій залишаються в основному блоці. Дані свідка зберігаються окремо. Вони все одно перевіряються кожним вузлом мережі. Вони просто не важать однаково, коли ви підраховуєте, наскільки повний блок.

Що ж сталося на практиці? Кількість блоків, що містили приблизно 1650 транзакцій, зросла приблизно до 2700. Кількість біткойнів підскочила з 2-3 транзакцій за секунду до приблизно 7-10. Це все ще смішно порівняно з Visa. Але для мережі, яка задихається від власного успіху, це був простір для перепочинку.

сегвіт

Вага блоку: нова математика

Ось тут і починається хитрість. Очевидним кроком було б просто змінити ліміт з 1 МБ на 2 МБ. Але це був би хардфорк. Кожен вузол мережі біткойна мав би оновитися, інакше він би випав з ланцюжка. Хардфорки — це безлад. Люди залишаються позаду.

Пітер Вуйле придумав щось розумніше. Замість вимірювання блоків у сирих байтах, SegWit використовує «вагу блоку». Звичайні дані транзакцій враховуються як 4 одиниці ваги на байт. Дані свідків враховуються лише як 1 одиниця ваги на байт. Обмеження становить 4 мільйони одиниць ваги загалом.

Що це означає на практиці? Блок без даних свідків, як завжди, має максимум 1 МБ. Старі вузли не бачать нічого дивного. Блок, заповнений транзакціями SegWit, теоретично може досягати майже 4 МБ. У реальному світі більшість блоків мають розмір близько 1,5-2 МБ.

Краса цього полягала в тому, що SegWit постачався як м'який форк. Вузли, які ніколи не оновлювалися, продовжували працювати. Вони просто не могли бачити дані свідків у новому розділі. Блокчейн біткойна не розділився. Не було «старого біткойна» та «нового біткойна». Один ланцюг, одна мережа, зворотна сумісність. Вже саме це було інженерною перемогою, якій не приділяється достатньо уваги.

До появи SegWit Після SegWit
Розмір блоку: максимум 1 МБ Вага блоку: максимум 4 мільйони одиниць ваги
~1650 транзакцій на блок ~2700 транзакцій на блок
2-3 TPS 7-10 точок на секунду
Дані підпису всередині блоку Дані підпису в окремому полі свідка
Ідентифікатори транзакцій, включаючи підписи Ідентифікатори транзакцій базуються лише на основних даних

Виправлення пластичності транзакцій

Люди постійно говорять про розмір блоку. Цілком справедливо, це була найгучніша проблема. Але я думаю, що виправлення пластичності транзакцій було важливішим елементом, і більшість людей поза колами розробників майже не знають про це.

Отже, ось у чому справа. До SegWit, коли ваш біткоїн-гаманець створював транзакцію, ідентифікатор транзакції (так званий TXID) обчислювався на основі всього в транзакції. Включно з підписом. А ось дивна частина: цифрові підписи можуть бути виражені в кількох дійсних форматах. Той самий підпис, той самий доказ власності, але дещо інша послідовність байтів.

Це означало, що хтось міг отримати вашу непідтверджену транзакцію, перекодувати підпис іншим, але таким самим дійсним способом, та розіслати його. Мережа підтвердила б виправлену версію. Той самий відправник, той самий одержувач, та сама сума. Але зовсім інший TXID.

Знаю. Звучить незрозуміло. Але це мало велике значення. Уявіть, що ви створюєте систему, де крок B посилається на ідентифікатор кроку A. Якщо хтось може змінити ідентифікатор кроку A після його надсилання, але до підтвердження, крок B розривається. Весь ваш логічний ланцюжок руйнується.

SegWit виправив це, обчисливши TXID лише з частин, що не є свідком. Підпис тепер знаходиться в полі свідка, окремо від ID. Ніхто не може його змінити. ID транзакції заблоковано раз і назавжди.

SegWit та мережа Lightning

Ось чому виправлення гнучкості мало значення. Lightning Network — це те, як Bitcoin планує обробляти мільйони платежів на секунду. Ми з вами відкриваємо платіжний канал. Ми надсилаємо біткойни туди-сюди між собою, поза основним блокчейном. Після завершення, лише остаточний чистий баланс розраховується в ланцюжку. Одна транзакція в блокчейні біткойна замість сотень.

Lightning працює, будуючи ланцюжки транзакцій, які посилаються одна на одну за своїми ідентифікаторами. Якщо хтось може змінити ідентифікатор посеред транзакції, транзакція повернення коштів, яка захищає вас, стає недійсною. Ви можете втратити гроші. Вся концепція платіжного каналу залежить від стабільності ідентифікаторів.

SegWit зробив їх стабільними. Крапка. Без цього виправлення розгортання Lightning було б надто ризикованим. А без Lightning Bitcoin назавжди застрягне на рівні 7-10 транзакцій за секунду. Це не платіжна мережа. Це розрахунковий рівень для китів.

Я думаю про це так: SegWit був не просто оновленням. Це була фундаментна плита. Taproot у 2021 році, Lightning Network, навіть написи Ordinals у 2023 році. Нічого з цього не відбулося без структурних змін, внесених у серпні 2017 року.

Формати адрес: застарілий, обгорнутий та нативний SegWit

Ви коли-небудь помічали, що деякі біткойн-адреси починаються з «1», деякі з «3», а деякі з «bc1»? Це оновлення SegWit, яке відображається у вашому гаманці.

Адреси, що починаються з «1», є застарілими. Старий формат. Без SegWit. Ви платите найбільше комісій. Якщо ваш гаманець все ще передає вам їх, оновіть своє програмне забезпечення.

Адреси, що починаються з "3", обгорнуті SegWit. Транзакція біткойнів використовує SegWit внутрішньо, але він обгорнутий, тому старі гаманці, які не чули про SegWit, все ще можуть надсилати на нього біткойни. Дешевше, ніж legacy, але не найдешевший варіант.

Адреси, що починаються з "bc1q", є рідним SegWit, також відомим як Bech32. Це найкраща річ. Найнижчі комісії. Найкраща перевірка помилок (формат адреси краще виявляє друкарські помилки). І це те, що використовується 96% транзакцій сьогодні.

Ви також можете побачити адреси "bc1p". Це Taproot, новіше оновлення з 2021 року, яке базується на SegWit. Це інша тема, але варто знати, що вони існують.

Тип адреси Починається з Рівень плати SegWit?
Спадщина (P2PKH) 1 Найвищий Ні
Загорнутий SegWit (P2SH) 3 Середній Так (загорнуто)
Рідний SegWit (Bech32) bc1q Найнижчий Так (рідний)
Стрижневий корінь (Bech32m) bc1p Найнижчий Так + стрижневий корінь

Скільки ви насправді заощаджуєте на комісіях?

Ось що насправді хочуть знати мої друзі, які не дуже розуміються на техніці. Наскільки дешевше?

Unchained підрахував цифри. Стандартна транзакція SegWit з одним підписом заощаджує вам близько 53% на комісіях порівняно зі старою версією. Якщо ви використовуєте систему з кількома підписами 2 з 3 (поширена в депозитарії), ви заощаджуєте близько 64%. Це не помилка округлення. У завантажений день, коли старі користувачі платять 30 доларів за транзакцію, ви платите менше 15 доларів з рідною SegWit.

Чому? Знову математика ваги блоку. Дані свідка враховуються як 0,25 віртуальних байтів замість 1. Ваша транзакція займає менше місця в блоці. Майнери стягують за неї менше. Просто.

Якщо ваш біткоїн-гаманець все ще видає вам адреси, що починаються з «1», ви викидаєте гроші на вітер з кожною відправкою. Перейдіть на рідний SegWit. П'ять хвилин роботи. Coinbase, Ledger, Trezor, BlueWallet, Sparrow — усі вони його підтримують. Немає жодних недоліків.

сегвіт

Суперечка: чому SegWit ледь не з'явився?

Ця частина, чесно кажучи, цікавіша за технологію. SegWit мало не загинув ще до запуску.

Боротьба на перший погляд була простою. Один табір, «великі блокувальники», хотів збільшити обмеження розміру блоку з 1 МБ до 8 МБ або вище. Більше місця, більше транзакцій. Просте рішення. Bitmain, найбільший майнер біткойнів на планеті, рішуче підтримував цей табір. Деякі люди звинувачували Bitmain у протидії SegWit, оскільки це знищить ASICBOOST, секретний трюк, вбудований у їхні чіпи для майнінгу, який давав їм перевагу в швидкості над конкурентами. Bitmain це заперечувала. Криптосвіт їм не повірив.

Інший табір складався здебільшого з розробників Bitcoin Core та людей, які запускають повноцінні вузли вдома. Їхній аргумент: якщо зробити блоки у 8 разів більшими, то для роботи вузла знадобиться у 8 разів більша пропускна здатність, сховище та обчислювальна потужність. Через кілька років лише центри обробки даних та майнінгові ферми зможуть дозволити собі валідувати блокчейн біткойна. Децентралізація тихо вмирає.

Я стежив за цим у режимі реального часу, і мені щиро здавалося, що біткойн може не витримати суперечки. Люди кричали один на одного в Твіттері, Reddit та на конференціях. Була навіть закрита зустріч у Нью-Йорку («Нью-Йоркська угода»), де група компаній намагалася укласти угоду, що поєднує SegWit з подальшим збільшенням розміру блоку. Ця угода також розпалася.

Що насправді сталося: SegWit активувався 1 серпня 2017 року як м'який форк, активований користувачем. Майнери біткойнів, які виступали проти цього, віддали свою позицію та створили Bitcoin Cash (BCH) того ж дня. BCH обрав блоки по 8 МБ (зараз 32 МБ) та без SegWit. Він досі існує. Він торгується за крихітною часткою ціни біткойна.

1 серпня деякі називають «Днем незалежності біткойна». Висновок полягав у тому, що оператори вузлів, а не майнінгові компанії, мали останнє слово щодо правил біткойна. Цей прецедент важливіший за будь-який рядок коду в самому оновленні SegWit.

Впровадження SegWit сьогодні

Дискусія завершена. Станом на 2025 рік, 96% транзакцій біткойнів використовують SegWit. Кожен великий гаманець підтримує його. Кожна біржа підтримує його. Якщо ви все ще користуєтеся застарілими адресами, єдиним поясненням може бути програмне забезпечення, яке ви не оновлювали роками.

Оновлення SegWit також відчинило двері для всього, що відбувалося далі. Taproot з'явився у листопаді 2021 року та додав підписи Шнорра поверх структури SegWit. Ordinals з'явилися у 2023 році та почали додавати JPEG-файли до простору даних свідків, створеного SegWit. У людей неоднозначні почуття щодо останнього, але суть залишається в силі: SegWit створив цей простір, а розробники його заповнили.

Тож чи має для вас особисте значення SegWit? Якщо ви взагалі використовуєте біткойн, то так. Відкрийте налаштування свого гаманця та перевірте формат адреси. Якщо вона починається з "bc1q", то все гаразд. Якщо вона починається з "1", вам слід перейти сьогодні. Нижчі комісії, швидші підтвердження під час перевантажень та повний доступ до платежів Lightning.

Ви ніколи не думатимете про SegWit у повсякденному житті. Це сантехніка під підлогою. Але якби хтось не встановив її у 2017 році, то весь будинок би вже був затоплений.

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.