Začněte psát a výsledky vyhledávání se zobrazí zde...

SegWit – Upgrade Bitcoinu, který umožňuje divy a řeší zásadní problém!

SegWit – Upgrade Bitcoinu, který umožňuje divy a řeší zásadní problém!
Zdroj: usethebitcoin.com

Pokud jste se o Bitcoin zajímali už v roce 2017, určitě vás nemohla minout plnohodnotná válka o zvýšení velikosti bloků. Obě znepřátelené strany se do sebe dennodenně pouštěly a celá situace nakonec vyústila v rozštěpení sítě – tzv. hard fork, jehož výsledkem byl vznik kryptoměny Bitcoin Cash, která měla natvrdo zvětšené bloky. Na druhé straně však byl Bitcoin původní, jehož vývojáři přišli s daleko elegantnějším řešením.

Tím byl právě SegWit. Kromě zvýšené propustnosti transakcí ale došlo také k vyřešení jednoho zásadního problému – transaction malleability.

Skulina, díky které bylo možné podvádět – Transaction Malleability

Spojení těchto dvou slov by se do češtiny přeložilo zhruba jako “tvarování/upravování transakcí”. I když jde jen o hrubý překlad, přesně odpovídá problému. Abychom ho pochopili, musíme alespoň povrchově rozumět fungování Bitcoinu a jeho transakcím.

Poznámka

Rychlokurz Bitcoinu

 

Síť se skládá ze dvou složek – těžaři a nody.

Node je část sítě, kterou může provozovat každý. V nejjednodušším podání se jedná o malý počítač, jehož jediným úkolem je ověřovat transakce. K tomu stačí disk s kopií blockchainu a připojení na internet. Když uživatel odešle transakci, posílá jí právě k nějakému nodu.

Transakce se následně rozesílá mezi zbytek nodů a ověřuje se. Jakmile tak udělá více než polovina sítě, transakce se stává validní a putuje do mempoolu – na čekací listinu.

Těžaři jsou druhá polovina rovnice. Jejich práce je zabezpečení a uzamykání bloků. Těžař vezme transakce z mempoolu a vloží je do bloku. Následně musí utratit velké množství energie a výpočetní síly na to, aby blok tzv. vyřešil a mohl ho uzavřít. Uzavřením se napojuje na blockchain a transakce v něm uložené jsou potvrzené.

Zdroj: Martin Thoma
Příklad blockchainu, proof of work je místo nonce
Příklad blockchainu

 

Jak funguje transakce

 

Každá transakce se skládá ze tří částí. Cílová adresa (respektive veřejný klíč příjemce), počet odesílaných jednotek a privátní klíč odesilatele.

Veřejný klíč slouží jako emailová adresa příjemce. Privátní klíč je naopak jako heslo k naší emailové adrese, které které nám dává přístup a umožňuje odesílání zpráv. Je to v zásadě podpis. Dohromady tvoří transaction ID.

Celý košík následně projde hashovací funkcí, která data převede do kódu. Ten má dvě zásadní vlastnosti – ze stejných dat vznikne vždy stejný hash a z hashe není možné zjistit původní data.

Cestu transakce už jsme si popsali výše. Když jí odešleme, nejprve putuje k nodům. Pokud je validní, tak jí zařadí na čekací listinu pro potvrzení – tzv. mempool. Jakmile se dostane na řadu (podle velikosti poplatků), vezmou si jí těžaři a vloží platbu do bloku. Tím proces končí.

Pokud chcete znát problematiku transakcí a těžby podrobněji, doporučujeme naše dva články:

Je zbytečné vysvětlovat SegWit, pokud dostatečně nepochopíme Bitcoin. Teď už se tedy můžeme vrhnout na věc.

Transaction Malleability

Transaction Malleability byl jeden z problémů, který umožňoval typ útoku, při kterém šlo ukrást bitcoiny. Jak toho bylo dosaženo?

Zdroj: Bloomberg
mtgox burza skandal
Transaction Malleability může částečně i za problémy burzy MtGox.

Výše jsme si vysvětlili, že transakce je košík dat, který se následně zahashuje do kódu. Hash je vždy specifický – stačí změna jediného znaku a bude celý jiný. Stejně tak se nedá zpětně rozluštit z čeho je hash složený.

Pokud odešleme transakci, vždy si můžeme dohledat Transaction ID/hash, pod kterým najdeme údaje, které jsme zadávali.

Bitcoinový systém však umožňoval jednu nemilou věc. Útočník zvládl jen lehce upravit privátní klíč nepotvrzené transakce tak, že z pohledu systému byla transakce stále validní, avšak hash byl úplně jiný.

Jako příklad si můžeme uvést dvě čísla – 3 a 03.

Z matematického pohledu se jedná o stejná čísla – vždy je to trojka. Hashovací algoritmus však bere každý znak a každý výsledný hash se změní.

Transakce s jiným hashem následně vyruší původní údaje platby, avšak díky matematice bude stále platit. Pro odesilatele se bude zdát jako odmítnutá (nezvládne ji najít), nicméně transakce je stále v mempoolu a čeká na potvrzení.

Otevírá to cestu k jednoduchému útoku.

Stačí aby útočník změnil údaj a odesílatele informoval o tom, že se transakce odmítla a aby odeslal novou. Pokud to odesilatel udělá, fakticky vytvoří transakci navíc. Protože jsou platby nevratné, po potvrzení obou plateb už s tím nezvládne nic dělat.

SegWit na scénu!

Řešení je překvapivě jednoduché. Přišel s ním Pieter Wuille a spočívá v oddělení privátního klíče a zbytku dat – segregated witness, neboli zkráceně SegWit.

Zdroj: 99Bitcoins (YouTube.com)
SegWit vynáší citlivé údaje do vedlejšího chainu
SegWit vynáší citlivé údaje do vedlejšího chainu

Zatímco původní transakce a transaction ID se skládá z privátního klíče, veřejného klíče a zbytku dat, SegWit přesouvá citlivé údaje do postranního chainu. Transaction ID se tak skládá už jen z nezměnitelných dat. Tím se řeší problém popsaný transaction malleability. Útočník už nedokáže přepsat transakci a podvést odesilatele, jelikož Transaction ID už se nedá změnit.

Problém škálovatelnosti

Škálovatelnost je schopnost obsloužit větší množství uživatelů – v případě Bitcoinu se jedná o vyšší propustnost transakcí. Ať už se na problém budeme koukat jakkoliv, základní vrstva Bitcoinu je v tomto směru velmi pomalá. Za sekundu zvládne zpracovat kolem 4,5 transakce.

Poznámka

Není to sice vhodné porovnání (nejedná se o stejné systémy a využití), nicméně Visa jich zvládne za stejný čas 1700.

SegWit částečné řeší i tento problém. Rovnou ze dvou směrů.

Více místa v blocích

Pokud se znovu podíváme na obrázek, bude nám to hned jasné. Witness data zabírala až 60 % místa v každé transakci. Oddělením do sidechainu se tak v zásadě zdvojnásobil prostor pro transakce.

Hned v úvodu jsme také zmiňovali, jak elegantní SegWit vlastně je. V této věci je nejdůležitějším faktem to, že se jedná o soft fork. Zatímco tvrdé zvýšení bloku vyžaduje hard fork a to prakticky znamená vytvoření nové měny, soft fork je zpětně kompatibilní a od provozovatelů nodů nevyžaduje nic. Každý si může dát načas a síť bude stále fungovat naprosto perfektně.

Další vrstvy Bitcoinu

Bitcoin na své základní vrstvě nikdy nebude dostatečně rychlý pro celosvětovou adopci jako platební prostředek. Technicky to prostě není možné, respektive není to možné bez ohrožení základních principů jako je decentralizace a bezpečnost.

Řešením jsou další vrstvy. Ty ale potřebují bezchybný systém, na kterém mohou stavět. Transaction malleability byl problém, který bránil vzniku podobným aplikacím. Jakmile se odstranil, otevřelo to dveře například systému Lightning Network, který už je velmi podobný společnosti Visa.

Zdroj: coinatmradar.com
princip lightning network
Princip fungování Lightning Network. Je to stejné jako lístek v hospodě. Dávám si piva bez placení, zapisují se na lístek a protože má hospodský mou peněženku, nemusí se bát o podvod. Na konci dne se vyrovnáme – on dostane peníze a já šrajtofli se zbytkem mincí. A nebo se nevyrovnáme a zapisuje se jen “kdo komu dluží”. Já si dám pivo za 20 (dlužím ti 20), prodám mu chleba za 50 (dluží mi 30). Takových transakcí může každý z nás udělat tisíce za sekundu. To vše na nejbezpečnější síti světa. Visa zde nesahá ani po kotníky.

A proč to něčemu bránilo? Dovedete si představit, že Visa zprostředkuje 1700 transakcí za sekundu a na konci dne zjistí, že jsou všechny neplatné? Zboží už se odeslalo, každý už dostal nějakou službu… reálně ale nikdo nezaplatil. Byl by to naprostý chaos.

Realita a praktické využití

Formáty adres

Dnes Bitcoin používá tři formáty:

  • Legacy – začíná číslem 1 a je nejdražší
  • SegWit – začíná číslem 3
  • Native SegWit – začíná znaky bc1 a je nejlevnější

Všechny jsou spolu kompatibilní a můžeme mezi nimi volně posílat jednotky. Přináší s sebou ale velký rozdíl mezi poplatky.

Změna z velikosti transakce na transaction weight

Můžeme si to přeložit jako váha transakce, která se začala využívat namísto prosté velikosti dat. To má dalekosáhlé důsledky především ve smyslu poplatků, které se platí právě dle váhy.

Poznámka

Váha se počítá jako: Velikost základní transakce x 3 + Velikost celkové transakce

U legacy adres/transakcí s velikostí např. 1000 by výsledná váha byla 4000, jelikož se transakce na začátku i na konci skládá z těch samých údajů.

Pokud však využijeme SegWit, základní transakce se očistí o witness data a bude tak “vážit” mnohem méně – poplatky budou mnohem menší.

Využitím SegWit a Native SegWit adres můžeme zredukovat poplatky až o 50 %.

Problémem může být jen to, že ne každá peněženka podporuje segwitové adresy. Jaká je naše rada? Držte se od takových peněženek dál. Nedělejte business s někým, kdo není schopný implementovat takto důležitou změnu.

Poznámka

Nějakou dobu byl v plánování update jménem SegWit2X. Ten měl zvýšit velikost bloků z 1MB na 2MB – to by však znamenalo hard fork. Změna nakonec neprošla.

V podstatě se jedná o stejné řešení jako v případě Bitcoin Cash. Byl zde však jeden rozdíl. SegWit2X měl přemístit celou komunitu na nový chain (dobrovolně a se souhlasem), zatímco zastánci Bitcoin Cash se oddělili jako děti – ze vzteku.

Má cenu využívat SegWit a Native SegWit?

V každém případě. Kromě bezpečnostních vylepšení bychom se připravovali i o saty v podobě ohromných poplatků. Dnes už nemá význam využívat jiný typ adres – preferujte proto vždy Native SegWit.

Líbil se vám tento článek?
22
0

Autor

Můj zájem o finance začal v roce 2017. První ránu jsem dostal od kryptoměn. Jejich růst mi kouzlil úsměv na tváři, avšak propad v roce 2018 byl studenou sprchou. Jako další cestu jsem zvolil akcie, u kterých jsem zůstal dva roky. V roce 2020 se dostavil další kryptoměnový bull-run a společně s ním se znovu objevil i můj zájem o Bitcoin.

Tentokrát jsem ale věc vzal za správný konec. Nejprve vzdělávání.

Kryptoměny pro mě znamenají nový finanční systém a věřím, že se postupně dostanou i do běžných životů občanů. Psaní článků zde na Finex.cz mě především pozitivně motivuje k prohlubování znalostí, které mohu následně předat čtenářům.

Přečíst více

Sdílejte tento článek

Mohlo by vás zajímat

Diskuze (0 komentářů)

Připojte se k diskuzi

Tento článek zatím nikdo neokomentoval. Přihlašte se a buďte první! Napište svůj názor a zahajte diskuzi.