Finex.cz logo
Menu
Finex » Kryptoměny » 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!

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.

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?

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

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.

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

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.

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.

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.
Zdroj: coinatmradar.com

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.

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.

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.

Ohodnoťte tento článek!

Připojte se k diskuzi
Akcie
Komodity
Krypto
Indexy
ETF
Aktuální cena 24h
Tesla Inc. ---
N/A
ČEZ ---
N/A
Apple ---
N/A
Moneta ---
N/A
Komerční banka ---
N/A
Philip Morris ČR ---
N/A
Erste group ---
N/A

Velký test: Investujeme vlastní peníze do investičních platforem

Která přinese největší zhodnocení? Portu, Fondee, Indigo, Finax, nebo Fumbi?
Která přinese největší zhodnocení? Portu, Fondee, Indigo, Finax, nebo Fumbi?
Sledujte nás na Facebooku, ať vám nic neunikne!
Facebook icon Jít na Facebook
Finex.cz logo