SegWit: решението за мащабиране на Биткойн

SegWit: решението за мащабиране на Биткойн

Ludmil Ivanov септември 22, 2023
1 мин четене

Сегрегираният свидетел (SegWit ) беше въведен през 2017 г., когато войната в биткойн общността за размера на блоковете достигна своя връх.

Имаше хора, които настояваха за увеличаване на ограничението за размера на блоковете отвъд 1 MB, което първоначално беше определено от създателя му Сатоши Накамото. Аргументът беше, че тъй като биткойн продължава да се разраства, все повече хора ще го използват и размерът на блока от 1 MB ще се разглежда като ограничение, тъй като може да обработва само ограничен брой трансакции в секунда.

Това ограничение доведе до известния “дебат за размера на блока”, като различни части от общността се застъпваха за различни решения. Някои искаха да се увеличи размерът на блока, докато други предпочитаха решения извън веригата или на вторичния слой.

Несъгласието относно подхода за мащабиране на Биткойн доведе до няколко разклонения в криптосферата.

Биткойн Кеш (BCH), друга криптовалута, беше създадена в резултат на несъгласие по този въпрос и започна с ограничение на размера на блока от 8 MB, което по-късно беше увеличено.

В тази статия няма да навлизаме в подробности относно войната за размера на блоковете, но ако ви интересува, можете да разгледате книгата “Войната за размера на блоковете” на Джонатан Биер.

Внедряването на SegWit в мрежата на Биткойн

SegWit беше представен първо като решение на проблема с малката гъвкавост на транзакциите, а по-късно и като метод за увеличаване на ефективния размер на блоковете, без да е необходимо твърдо разклонение. Разработчикът на Биткойн Питер Вуйле го представи за първи път на конференцията Scaling Bitcoin през декември 2015 г

Реализация в ядрото на Bitcoin

Разработчиците интегрираха кода на SegWit в кодовата база на ядрото на Bitcoin. Като се има предвид важността на тази промяна, кодът беше подложен на обстоен преглед и тестване

Той беше внедрен в Биткойн като мека вилица. Софтфоркът е обратно съвместим начин за надграждане на блокчейн. Това означава, че неактуализираните възли все още могат да участват в мрежата. Те често се наричат “наследени възли” (Legacy nodes)

Активиране на миньори чрез BIP 9

За внедряването на SegWit се използват битове на версиите на BIP 9. Това означаваше, че SegWit ще се активира, след като 95% от миньорите сигнализират за подкрепа в рамките на един период на регулиране на трудността (приблизително две седмици). Получаването на достатъчна подкрепа от миньорите обаче отнемаше време

Надграждане на мрежата

След като се активираха, възлите на Биткойн в цялата мрежа започнаха да разпознават и валидират трансакциите SegWit. След това портфейлите и другите доставчици на услуги интегрираха поддръжка за SegWit транзакциите – процес, който продължи през следващите месеци и години

Продължаващо приемане

След активирането по-широката екосистема (портфейли, борси, доставчици на платежни услуги) започна да приема и поддържа SegWit – процес, който беше постепенен

С течение на времето все по-голям процент от трансакциите с Биткойн използваха SegWit, възползвайки се от намалената му структура на таксите

Какво представлява Segregated Witness (SegWit)?

Преди въвеждането на SegWitв блокчейн мрежата на биткойн (и други криптовалути) съществуваше предизвикателство, свързано с възможността за подправяне на трансакциите

В същността си подменяемостта на трансакциите се отнася до възможността някой да промени уникалния идентификатор на трансакцията (наречен идентификатор на трансакцията или TXID) на трансакция, преди тя да бъде потвърдена, без да се променят действителните съществени елементи на трансакцията (т.е. изпращач, получател и сума)

След активирането на SegWit беше въведена промяна във формата на трансакциите на биткойн, която не само реши проблема с подправянето на трансакциите, но и направи възможно ефективното увеличаване на размера на блоковете, без да се увеличава лимитът на блоковете

Как Segregated Witness (SegWit) реши проблемите

решение за транзакции с биткойн

Преди SegWit, в оригиналния протокол на Биткойн, TXID се изчисляваше чрез хеширане на цялата транзакция, включително данните на свидетелите (подписите). Тъй като подписите можеха да бъдат леко променени, без да се променя действителният смисъл на транзакцията, TXID можеше да бъде променен от трета страна, преди транзакцията да бъде потвърдена.

SegWit е съкращение от Segregated Witness (отделен свидетел), а “Witness” означава подпис. Така че от името можем да получим доста прилична представа за това какво прави този ъпгрейд.

То “премахва” подписа от транзакцията. Това отделяне означава, че данните на свидетеля (подписът) не се включват при изчисляването на идентификатора на транзакцията, което прави формата на транзакцията по-гъвкав и решава въпроса с деформируемостта на транзакциите.

Повече място в блоковете

С отделянето на данните на свидетелите на практика във всеки блок има повече място за транзакции. Макар че това не е пряко увеличение на размера на блока, то е корекция на начина, по който се изчислява размерът на блока. Тази промяна, наречена “тегло на блока”, позволи повече трансакции да се поберат в един блок, което от своя страна помага за леко облекчаване на проблемите с мащабируемостта.

Въвеждане на концепцията за теглото на блока

Със SegWit понятието за размер на блока беше донякъде предефинирано. Вместо обикновения размер на блока от 1 MB, Биткойн въведе система за “тегло на блока”. Тази система дава различна “тежест” на различните части на транзакцията.

  • Основната част на транзакцията (без данните на свидетелите) има тегло от 1 байт на байт.
  • Данните на свидетелите (например подписите) имат тегло 1/4 байта на байт.

Следователно при тази система за претегляне един блок може да има максимална тежест от 4 милиона единици. Това на практика означава, че в зависимост от състава на транзакциите блоковете могат да бъдат по-големи от 1 MB, до теоретичния лимит от 4 MB, ако са съставени изцяло от данни на свидетели (което е малко вероятен краен сценарий). В действителност блоковете със SegWit Tx често са с размер малко над 1 MB, като 2 MB са по-практична горна граница за средните комбинации от транзакции.

Повишена сигурност

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

Макар да предлага различни предимства, приемането му беше постепенно.

Не всички доставчици на услуги, портфейли и борси веднага поддържаха трансакциите SegWit. С течение на времето, когато все повече субекти го приеха, мрежата започна да реализира пълните му предимства. Наблюдавайки данните за транзакциите, може да се види, че с течение на времето нараства процентът на транзакциите в мрежата, използващи Segwit.

Ефектът върху транзакциите в Биткойн следSegWit:

Чрез разделянето на Подписа (Свидетеля) стана възможно повече трансакции да се поберат в един блок. Това намали конкуренцията за място в блока, което доведе до намаляване на таксите за трансакции

С повече място в блоковете трансакциите можеха да се потвърждават по-бързо, особено в периодите на голям трафик

След въвеждането на SegWit започнаха да набират популярност нови адресни формати, като bech32

Докато адресите, започващи с “1”, са наследени адреси Тези, които започват с “bc1”, са собствени за SegWit и позволяват пълноценно използване на предимствата на надстройката

Примери:

Bech32: bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq

Наследство: 157fRrqAKrDyGHr1Bx3yDxeMv8Rh45aUet

Как SegWit проправи пътя на мрежата Lightning:

Мрежата Lightning (LN) е решение от второ ниво за Биткойн, предназначено да улесни по-бързите и мащабируеми трансакции.

Мрежата Lightning Network разчита на верижни трансакции за поемане на задължения.

Ако злонамерен участник може да промени TXID на по-ранна трансакция във веригата, това ще направи невалидни последващите трансакции за поемане на задължения, тъй като те се позовават на TXID на предишната трансакция.

Това би дестабилизирало и потенциално компрометирало сигурността на каналите на LN.

Ролята на SegWit

SegWit решава проблема с фалшифицирането на транзакциите, като премахва данните за подписа (данните за свидетеля) от частта от данните за транзакцията, която се хешира, за да се създаде TXID.

По този начин, дори ако данните на свидетеля са променени, TXID остава същият. С решаването на този проблем, свързан с подправянето на данните, се създава основата за надеждни и сигурни LN канали.

Ефективност на блоковото пространство

Макар да не е строга необходимост за LN, SegWit също така направи използването на блоковото пространство по-ефективно чрез разделяне на данните на свидетелите

Това косвено помага на LN, тъй като отварянето и затварянето на LN каналите включва транзакции във веригата. По-ефективното използване на блоковото пространство означава, че тези трансакции са по-икономични, което допълнително стимулира използването на LN

Повишена гъвкавост на интелигентните договори

Промените в системата за скриптове на Биткойн, въведени от SegWit, позволяват по-голяма гъвкавост. Това е от полза и за по-сложните интелигентни договори и решенията извън веригата като LN.

В обобщение, макар че теоретичните основи на Lightning Network можеха да бъдат разработени и без SegWit, решенията на последния за конкретни технически предизвикателства направиха възможно практическото и сигурно внедряване на LN.

Заключение

Сегрегираният свидетел, ключово подобрение в протокола на Биткойн, реши проблема с променливостта на транзакциите, като същевременно оптимизира пространството на блоковете. Нейното прилагане проправи пътя за подобрена мащабируемост. Чрез намаляване на таксите то създаде предпоставки за усъвършенствани решения като Мълниеносната мрежа. Като доказателство за адаптивността на Биткойн, SegWit демонстрира ангажимента на мрежата за непрекъснато развитие в отговор на нейните предизвикателства.

Ако искате да се потопите по-дълбоко и да научите повече за Биткойн, можете да разгледате нашия Биткойн хъб за още полезни статии!

ЧЕСТО ЗАДАВАНИ ВЪПРОСИ:

1. Какво е Segregated Witness (SegWit)? SegWit е надстройка на протокола, която променя начина на съхранение на данните в транзакциите на Биткойн, като увеличава капацитета на блокчейна и решава проблема с неизправността на транзакциите

2. Защо беше въведен SegWit? SegWit беше въведен, за да се подобри мащабируемостта на мрежата на Биткойн, позволявайки ѝ да обработва повече трансакции, без да увеличава значително размера на блоковете. Той също така реши проблема с неизправността на трансакциите

3. Как работи SegWit? SegWit отделя данните за свидетелите (подписите) от данните за транзакциите. Това прави трансакциите по-малки по размер, като позволява повече трансакции да се поберат в един блок

4. Какво представлява променливостта на транзакциите? Възможността за промяна на трансакциите се отнася до възможността за промяна на уникалния идентификатор на трансакцията, без да се променя нейното съдържание. SegWit решава този проблем, като гарантира, че данните от подписа не влияят на идентификатора на трансакцията

5. Как SegWit влияе на таксите за трансакции? Чрез оптимизиране на пространството в блоковете SegWit може да доведе до намаляване на таксите за трансакции, тъй като в един блок се побират повече трансакции

6. SegWit е твърда или мека вилица? SegWit беше въведена като мека разклонена версия, което означава, че е обратно съвместима с възли, които не са се обновявали

7. Влияе ли SegWit върху сигурността на Биткойн? Не, SegWit запазва сигурността на мрежата на Биткойн, като същевременно оптимизира капацитета ѝ за транзакции

8. Как SegWit проправи пътя за Lightning Network? Чрез решаването на проблема с променливостта на трансакциите SegWit направи по-възможно разработването на решения от второ ниво като Lightning Network

9. Поддържат ли всички биткойн портфейли SegWit? Въпреки че много съвременни портфейли поддържат транзакции SegWit, винаги е добре да проверите при конкретния доставчик на портфейл

10. Как мога да разбера дали даден биткойн адрес поддържа SegWit? Адресите, поддържащи SegWit, обикновено започват с “3” (формат P2SH) или “bc1” (формат bech32). Не всички адреси, започващи с “3”, обаче са SegWit адреси.