Що таке Segregated Witness (SegWit)?

Посібник для початківців з Bitcoin SegWit 💭
Segregated Witness (SegWit) — це оновлення вихідного коду Bitcoin, яке відбулося 1 серпня 2017 року.
Попри те, що багато хто вважав це покращенням блокчейну Bitcoin, SegWit зіткнувся з сильним опором, який розділив спільноту.
В основі проблеми лежав конфлікт інтересів між прибутковістю майнерів та розробниками мережі, які прагнули зробити Bitcoin дешевшим і швидшим у використанні.
Напруга спричинила розкол у спільноті, що призвело до першого в мережі програмного форку, активованого користувачами, та ворожого розділення. Цей поділ породив низку нових форкованих проєктів Bitcoin, включно з Bitcoin Cash.
На сьогодні SegWit залишається однією з найсуперечливіших подій в історії Bitcoin. Однак він також виявився одним із найважливіших оновлень для довгострокової життєздатності протоколу.
Щороку багато членів спільноти Bitcoin святкують 1 серпня як «День незалежності Bitcoin». Ця подія знаменує собою випадок, коли воля народу перемогла централізовані інтереси усталених компаній з майнінгу Bitcoin.
Розгляньмо кожну з цих подій у хронологічному порядку та розберемо історію SegWit.
Bitcoin до SegWit ⏮️
До активації SegWit пропускна здатність блоків Bitcoin залишалася незмінною протягом багатьох років. Пропускна здатність блоку означає максимальну кількість транзакцій, які можуть бути записані в межах даного блоку.
Коли Bitcoin був запущений у 2009 році, його творець (творці) Сатоші Накамото не встановлював жодних параметрів щодо розміру блоків Bitcoin.
Однак у 2010 році Накамото таємно додав обмеження на розмір блоку в 1 мегабайт (МБ) без схвалення інших учасників Bitcoin.
Багато хто вважав, що Накамото включив це обмеження, щоб запобігти майбутнім атакам типу «розподілена відмова в обслуговуванні» (DDoS), які могли б вплинути на мережу.
Це фіксоване обмеження пропускної здатності блоків мало небажаний ефект, обмежуючи потенціал Bitcoin до масштабування кількома способами.
Низька пропускна здатність і повільний час транзакцій
Лише обмежена кількість транзакцій може поміститися у відносно невеликий блок розміром 1 МБ, який тепер використовує Bitcoin. Ця невелика пропускна здатність означала, що мережа Bitcoin могла обробляти лише близько 2–3 транзакцій Bitcoin (BTC) на секунду — це дуже далеко від традиційних цифрових платіжних мереж, які можуть обробляти десятки тисяч транзакцій на секунду.
Крім того, щоб блок транзакцій вважався дійсним у рамках процесу майнінгу Bitcoin, він повинен отримати шість підтверджень. Іншими словами, шість нових блоків повинні бути додані до блокчейну після розглянутого блоку, перш ніж він буде фіналізований. При середньому часі блоку в десять хвилин це означає, що підтвердження блоку Bitcoin займає близько однієї години.
У той час, коли лише жменька криптографів-«кіберпанків» знала про Bitcoin, це не було великою проблемою. Але, якщо мережа Bitcoin мала стати глобальною «одноранговою електронною грошовою системою», як це передбачав Сатоші у білій книзі Bitcoin, потрібно було щось змінювати.
Високі комісії
Низька пропускна здатність Bitcoin, обмежена невеликою ємністю блоків, означала, що комісії також були порівняно набагато вищими, ніж сьогодні.
Ось простий спосіб зрозуміти цю проблему. Уявіть, що ви стоїте на вулиці в натовпі людей після перегляду театральної вистави. Усі з театру хочуть одночасно поїхати додому на таксі. Якщо таксі багато, то всім буде легко дістатися додому. Але якщо таксі лише кілька, люди можуть спробувати заплатити таксистам вищу ціну, щоб заохотити водія відвезти їх додому першими. Залежно від попиту, ціни на таксі можуть значно зрости порівняно зі звичайною ставкою.
Комісії Bitcoin працюють за тими ж принципами попиту та пропозиції. Якщо багато людей хочуть, щоб їхні транзакції були оброблені одночасно, деякі можуть вирішити заплатити більше комісій, щоб їхня транзакція була оброблена майнерами швидше. У періоди високого використання мережі Bitcoin перевантаження може призвести до конкуренції між користувачами, що може спричинити різке зростання комісій за транзакції.
Пластичність транзакцій
Ще одним притаманним нюансом роботи блоків Bitcoin була відома як пластичність транзакцій. До SegWit люди могли змінювати ідентифікатор транзакції до того, як вона отримувала достатньо підтверджень у блокчейні.
Взявши інформацію, пов’язану з конкретною транзакцією, і пропустивши її через хеш-функцію, створюється ідентифікатор транзакції. Ви можете дізнатися більше про хеш-функції в нашій статті Як криптовалюти використовують криптографію?
Але для простоти ви можете думати про ці ідентифікатори транзакцій як про цифрові відбитки, які використовуються для ідентифікації та посилання на транзакції в блокчейні.
Зміна ідентифікатора транзакції створює абсолютно новий хеш, який іноді може заплутати клієнтське програмне забезпечення блокчейну. Усі вузли запускають клієнтське програмне забезпечення для взаємодії з блокчейном і виконання важливих ролей, таких як перевірка даних.
Ця помилка пластичності в коді Bitcoin відкрила двері для зловмисних атак. Одним із найвідоміших прикладів атаки пластичності транзакцій був злам біржі Mt. Gox у 2014 році, відомий як найбільший злам Bitcoin в історії.
Експерти повідомили, що хакер або група хакерів спустошили гаманець Bitcoin біржі Mt. Gox. Вони зробили це частково, змінивши ідентифікатор транзакції своїх виведень.
Атака пластичності транзакцій створювала враження, ніби виведення коштів не підтверджувалося в блокчейні, хоча насправді це було не так.
Ця вразливість, у поєднанні з іншими векторами атаки, дозволила хакеру (хакерам) вивести понад 840 000 BTC з біржі.
Які покращення приніс SegWit? ⚙️
Учасник Bitcoin Пітер Вуйлле вперше представив оновлення SegWit на заході Bitcoin Hong Kong у 2015 році.
Його рішення було інноваційним у трьох аспектах. SegWit покращив масштабованість Bitcoin, усунув пластичність і дозволив вузлам прийняти нову структуру транзакцій. Найкраще те, що це можна було реалізувати без хардфорку мережі.
Окрема інформація про цифровий підпис і транзакцію
Пропозиція Вуйлле збільшила пропускну здатність блоків Bitcoin шляхом «відокремлення» даних «свідка» від блоку та переміщення їх до транзакції coinbase. Транзакції coinbase — це найперші транзакції в кожному новому блоці Bitcoin. Транзакція coinbase відповідає за випуск щойно викарбуваної криптовалюти в обіг як винагороду за процес майнінгу Bitcoin.
Майнери, які успішно виграють у змаганні Bitcoin на основі криптографічного доказу роботи, отримують ці щойно викарбувані токени як «винагороду за блок».
Дані свідка, також відомі як ScriptSig або Unlocking Script, включають інформацію про цифровий підпис і відкритий ключ, необхідну для розблокування переданого Bitcoin. Оновлення SegWit запровадило окреме «поле свідка» для частини ScriptSig транзакції.
Обробляючи інформацію про цифровий підпис окремо від поля введення транзакції, з’явилося більше місця для розміщення транзакцій у кожному блоці.
Більше транзакцій на блок означає вищу пропускну здатність транзакцій. Отже, замість 2–3 транзакцій на секунду, Bitcoin може обробляти від 7 до 10 транзакцій SegWit на секунду. Збільшена пропускна здатність також означає нижчі комісії, оскільки блокчейн Bitcoin може обробляти більший обсяг транзакцій.
Попри розділення, важливо зазначити, що вузли все ще обробляють як дані транзакції, так і дані свідка в ланцюжку. Жоден сайдчейн або протокол рівня 2 не використовуються.
Вага блоку
До SegWit майнери вимірювали блоки Bitcoin за розміром (у байтах). Ця система добре працювала, коли блоки містили як дані свідка, так і дані транзакції, але виникали проблеми, коли вони були розділені.
Щоб подолати це, оновлення запровадило метрику під назвою «вага блоку» для керування розміром блоків.
Згідно з цією концепцією, кожен 1-мегабайтний блок складається з 4 000 000 одиниць ваги (WU). Кожній транзакції присвоюється вага на основі наступної формули:
Базовий розмір транзакції в байтах (без даних свідка) * 3 + Загальний розмір транзакції в байтах.
Видаляючи дані поля свідка з розрахунку, транзакції SegWit мають набагато меншу вагу. З іншого боку, транзакція без SegWit все ще містить дані свідка. Це означає, що транзакції без SegWit завжди важать у 4 рази більше, ніж транзакції SegWit.
Ця концепція теоретично збільшує розмір блоку Bitcoin з 1 МБ до 4 МБ, якщо блок складається майже повністю з даних свідка. Однак на практиці це неможливо.
Основна перевага зваженої системи полягає в тому, що вона стимулює майнерів обробляти блоки, що містять переважно транзакції SegWit. Припускаючи, що транзакції SegWit мають ті ж комісії, що й старі блоки, майнер може обробляти набагато більше транзакцій SegWit на блок. Чим більше транзакцій вони обробляють на блок, тим більше комісій вони заробляють.
Виграш для обох сторін. Або так можна було б подумати.
Більше немає проблем з пластичністю транзакцій
У структурі SegWit хешований ідентифікатор транзакції містить лише інформацію про транзакцію, а не інформацію поля свідка.
Ця зміна усуває модифікований компонент транзакції Bitcoin, який раніше дозволяв атаки пластичності.
У результаті стали можливими вторинні рішення для масштабування, такі як Bitcoin Lightning Network.
Чому SegWit був суперечливим? 🤔
Багато хто в спільноті розробників вважав, що SegWit недостатньо вирішує проблеми масштабування Bitcoin.
Основні аргументи проти активації SegWit включають:
- Збільшена пропускна здатність Bitcoin у 7–10 транзакцій на секунду все ще недостатньо висока для децентралізованої глобальної платіжної системи.
- Комісії залишатимуться відносно високими, що робить такі речі, як мікротранзакції, фінансово нездійсненними.
- Майнери все ще можуть обробляти старі блоки транзакцій, що означає, що пластичність все ще є загрозою.
- Пізніше було виявлено, що SegWit нівелює механізм ASICBOOST від Bitmain; експлойт, який використовувався для значного підвищення ефективності майнінгових установок.
Приблизно через рік після пропозиції Вуйлле він та інші розробники Bitcoin Core, включаючи Еріка Ломброзо, підготували код до запуску в майбутньому оновленні Bitcoin Core 0.13.1. Єдиним кроком, що залишився для активації SegWit, було те, щоб майнери почали обробляти нові блоки SegWit.
Щоб закріпити його впровадження, понад 95% усіх майнерів Bitcoin мали б висловити підтримку SegWit протягом перших двох тижнів його ініціації — це була серйозна перешкода, враховуючи обставини того часу.
Софтфорк, активований користувачами
Зайве говорити, що великі майнінгові компанії, такі як Bitmain, все ще були незадоволені запропонованими змінами та відмовлялися підтримувати активацію SegWit.
На початку 2017 року псевдонімний розробник на ім’я «Shaolinfry» підняв питання про можливість примусового впровадження софтфорку вузлами Bitcoin у онлайн-дописі bitcoin-dev.
Софтфорк, активований користувачами, ніколи раніше не застосовувався в мережі Bitcoin, але він дозволив би розробникам впровадити SegWit за підтримки близько 51% майнерів. Ті, хто відмовлявся підтримувати нові блоки, ризикували, що їхні блоки будуть відхилені вузлами. Рішення не було без ризиків. Якщо SegWit не отримав би достатньої підтримки від майнерів, результат неминуче призвів би до розколу ланцюга.
Ті, хто був проти SegWit, натомість запропонували інше оновлення хардфорку SegWit 2X. Таке, що реалізувало б SegWit і збільшило розмір блоку Bitcoin до 2 МБ.
На відміну від попереднього оновлення, SegWit 2X не був би зворотно сумісним з попередніми версіями клієнта Bitcoin. Ці зміни означали, що вузли повинні були б оновити своє програмне забезпечення, щоб продовжувати працювати в мережі.
SegWit та Нью-Йоркська угода 🗽
Провідні компанії галузі зустрілися на Consensus 2017 і спільно підписали меморандум, названий «Нью-Йоркською угодою». Цей документ передбачав запуск SegWit влітку та збільшення розміру блоку Bitcoin до 2 МБ до листопада.
Напередодні листопада Shaolinfry розробив дві пропозиції щодо покращення Bitcoin (BIP); BIP148 та BIP149. Перша представляла швидке та рішуче рішення: сигналізувати про підтримку блоків SegWit, інакше вузли відхилять ваші блоки. Друга передбачала довший термін для майнерів, щоб вони приєдналися, встановивши кінцевий термін активації на липень наступного року.
Коли дата наближалася, інженер Bitmain Warranty Джеймс Хіллард запропонував новий BIP; BIP91. Його рішення мало на меті зробити SegWit 2X і BIP148 сумісними один з одним. Навіщо ризикувати розколом ланцюга через два конкуруючі оновлення SegWit, якщо можна зробити їх обох сумісними?
1 серпня достатня підтримка майнерів закріпила активацію SegWit. Однак другий етап Нью-Йоркської угоди не отримав такої ж підтримки.
Неможливість збільшити розмір блоку Bitcoin до 2 МБ призвела до створення Bitcoin Cash (BCH) — нового форкованого проєкту з блокчейну Bitcoin.
Важливість Дня незалежності Bitcoin
Впровадження SegWit та рішення спільноти відхилити збільшення розміру блоку стало знаковою подією для ширшої спільноти Bitcoin.
SegWit продемонстрував важливість консенсусу щодо змін у блокчейні Bitcoin, а також ступінь децентралізації влади, яку пропонував біткоїн.
Жодна окрема особа не змогла захопити мережу та реалізувати свою пропозицію.
Натомість спільнота обговорювала, ітерувала та продовжувала тривалий процес досягнення консенсусу як колективна група — а не за вказівкою однієї особи.
Почати купувати Bitcoin
Тепер, коли ви дізналися все про SegWit, чи готові ви продовжити свою криптоподорож і купити біткоїн?
Перегляньте наш посібник у Kraken Learn Center для отримання додаткової інформації про Як купити Bitcoin (BTC) та зареєструйте обліковий запис на Kraken сьогодні.