The Future of Blockchain Series

Ano, blockchain má problém se škálovatelností. Tady se dozvíte, jaký to je, a tady se dozvíte, co lidé dělají pro jeho vyřešení.

Boj o škálovatelné řešení je měsíčním závodem blockchainu. Bitcoin zpracuje 4,6 transakce za sekundu. Visa provádí v průměru asi 1 700 transakcí za sekundu (na základě výpočtu odvozeného z oficiálního tvrzení o více než 150 milionech transakcí za den). Potenciál pro přijetí existuje, ale v současné době je omezen škálovatelností.

Studie zveřejněná společností Tata Communications v roce 2018 ukázala, že 44 % organizací v jejím průzkumu přijímá blockchain, ale také naráží na univerzální problémy, které vznikají při zavádění nových technologií. Z architektonické úrovně se jako překážka přijetí blockchainu a jeho praktického využití ukazuje nevyřešený problém škálovatelnosti.

Jak uvádí společnost Deloitte Insights, „systémy založené na blockchainu jsou relativně pomalé. Pomalá rychlost transakcí v blockchainu je hlavním problémem pro podniky, které jsou závislé na vysoce výkonných starších systémech zpracování transakcí“. Svět okusil problémy se škálovatelností v letech 2017 a 2018: závažná zpoždění převodů a vysoké poplatky v síti Bitcoin a nechvalně proslulá aplikace Cryptokitties, která zahltila blockchainovou síť Ethereum (síť, na kterou se spoléhají tisíce decentralizovaných aplikací).

K tomu, aby bylo možné blockchain škálovat, nestačí zvětšit velikost bloku nebo zkrátit dobu bloku snížením složitosti hashování. Při použití obou metod dosáhne schopnost škálování stropu dříve, než dosáhne počtu transakcí potřebného k tomu, aby mohl konkurovat podnikům, jako je Visa, která „zpracovává v průměru 150 milionů transakcí denně“ nebo přibližně 1 736 transakcí za sekundu (TPS).

Pro srovnání, rychlost transakcí u Bitcoinu je nesmírně nižší. V současné době je velikost bloku nastavena na 1 MB (1 048 576 bajtů – i když díky SegWitu lze tuto velikost škálovat až na teoretické 4 MB) a průměrná velikost transakce je 380,04 bajtu (za předpokladu, že každá transakce je z jedné peněženky do x dalších peněženek – takže dávková transakce by se počítala jako jedna transakce. O dávkových transakcích budu mluvit později a proč jsem je takto označil) a zdá se, že roste. proto se průměrná velikost transakcí, které se vejdou do jednoho bloku Bitcoinu, v současné době počítá jako:

Současná doba generování bloku Bitcoinu je 10 minut; tj, každých deset minut je vytěžen nový blok. Za deset minut (600 sekund) může Bitcoin na základě předchozích předpokladů provést v průměru přibližně 2 759,12 transakcí. Jinými slovy, blockchain Bitcoinu může v současné době zaručit pouze 4,6 transakce za sekundu.

Zvětšení velikosti bloku ani zkrácení doby generování bloku problém nevyřeší: pohled na TPS bez SegWitu

Problém škálovatelnosti přichází v balíčku s hodnotovými propozicemi blockchainu; proto nelze jednoduše zvýšit škálovatelnost změnou parametrů v blockchainu.

Komunita Bitcoinu může upravit dvě proměnné a pokusit se zvýšit TPS. Jednou proměnnou je velikost bloku (B), která je v současné době pevně zakódována na 1 MB. V ideálním případě by se B měla zvýšit, aby se zvýšila TPS. Druhou proměnnou je doba generování bloku (TB), která se upravuje změnou složitosti hashovací hádanky. V ideálním případě by se TB měl snížit, aby se zvýšilo TPS.

Tabulka 1: různé scénáře pro zvýšení TPS budou zkoumány v následující části. Pouze v S1 a S2 může bitcoinový blockchain dosáhnout TPS podobného Visa, ale oba scénáře jsou nemožné kvůli době šíření transakcí, která bude v této části také diskutována.

Scénáře 1 & 2

Aby Bitcoin vzrostl ze 4,4 na 1 736 Visa, musel by svůj TPS škálovat 377,5x. Jinými slovy, B by se muselo zvýšit z 1 MB na 377,5 MB (tabulka 1, S1) nebo TB by se musel zkrátit z deseti minut na 1,6 sekundy (tabulka 1, S2). Třetím scénářem by bylo upravit obojí. Žádný z těchto tří scénářů není v blockchainu dosažitelný kvůli třetímu, neovlivnitelnému faktoru: době přenosu (TR) potřebné k odvysílání nového bloku do každého uzlu v síti Bitcoin.

V současné době se odhaduje, že v síti Bitcoin je 10 198 uzlů. Vyslání 1 MB (1 048 576 bajtů) prostřednictvím sítě peer-to-peer trvá určitou dobu. Technologický institut v Karlsruhe měří dobu šíření bloků Bitcoinu a průměrná doba šíření bloků uváděná 17. ledna 2019 byla 13 989,42 milisekundy, tedy přibližně 14 sekund na šíření do 99 % sítě. TB nemůže klesnout pod 99 % TR (TR99)=14, protože pokud by se tak stalo, pak by byl nový blok vygenerován dříve, než by starý blok obdržela většina bloků v síti. Čím více se TB blíží hodnotě TR99, tím více problémů vzniká s forky, osiřelými bloky a reorganizací řetězce a (v extrémních případech) bezpečnostními zranitelnostmi, jako jsou útoky typu double-spend.

Scénář 3

I kdyby TB = TR99 = 14, při velikosti bloku 1 MB by byl bitcoinový blockchain schopen zvýšit svou rychlost pouze na 188 TPS (tabulka 1, S3). Tento rozsah sice představuje 188násobné zvýšení TPS, ale ani zdaleka se neblíží 1 736 TPS, které denně provádí společnost Visa; navíc vrství výše zmíněná rizika. Druhou proměnnou, B, lze upravit, ale ne bez vlivu na TR, což by ovlivnilo TR99, a tedy spodní hranici TB.

Scénář 4

Například zdvojnásobením velikosti B (z 1 MB na 2 MB) by se také prodloužila doba, kterou potřebuje každý uzel v síti ke stažení nového bloku, TR, a to přibližně 2x; při velikosti 2 MB by tedy TR99 = 28 s, takže spodní hranice TB by byla také 28s. Zvýšením B o libovolný faktor a následným zvýšením TR o stejný faktor by čistý TPS zůstal stejný – v tomto případě přibližně 188 TPS (tabulka 1, S4). Jedním z řešení, jak snížit vliv B na TR, je zvýšit šířku pásma mezi všemi uzly v síti Bitcoin. Bohužel, protože se jedná o síť P2P, padá tato odpovědnost do klína každému peeru v síti.

Vznik SegWit

V roce 2017 vstoupil v platnost Segregated Witness (SegWit) ve všech uzlech Bitcoinu. Poznámka – nebudu zabíhat do všech podrobností SegWitu, ale pokud se chcete dozvědět o jeho historii a jeho roli při vzniku hard forku Bitcoin Cash, podívejte se na tento článek:

Dělá to, jak zní jeho název – odděluje svědeckou část každé transakce od skutečných transakčních dat. Došlo k němu jako k soft forku, takže byl zaveden bez větších dopadů na stávající blockchainovou síť a kód. Vzhledem ke způsobu, jakým by byla svědecká část transakce vážena, by se nové bloky Bitcoinu s podporou SegWit mohly teoreticky zvětšit až na 4 MB, aniž by se změnila velikost bloku Bitcoinu.

Říkám teoreticky, protože existují další faktory, které přispívají ke konečné velikosti bloku SegWit. Ve skutečnosti, pokud se podíváte do průzkumníka blockchainu Bitcoinu, zjistíte, že (alespoň v době vydání tohoto článku) je průměrná velikost bloku stále pod 1 MB.

Zdroj: https://www.blockchain.com/charts

To však neznamená, že bloky nemohou překročit 1 MB. Na začátku roku 2018 jsme byli svědky jedné z největších (pravděpodobně stále největších) velikostí vygenerovaného bloku, který vážil kolem 2,1 MB. Soft fork SegWit pomohl zlepšit velikost bloků beze změn v základním kódu, ale stále nezlepšuje TPS škálovatelným způsobem.

Při zkoumání předchozích čtyř scénářů v rámci konsensu proof-of-work jsme viděli, že pouhé zvětšení velikosti bloku nebo snížení složitosti těžby nás může dovést jen do určité míry. Dokonce i jejich kombinace by byla omezená kvůli době šíření transakcí. Snaha těžit nové bloky rychleji, než se mohou šířit staré bloky, povede k dost velkým bezpečnostním problémům. SegWit mezitím pomohl zmírnit některé problémy s TPS, ale k dosažení TPS podobného Visa je stále zapotřebí škálovatelnější řešení.

Zdá se, že přesunutí jakéhokoli dílku na místo za účelem zvýšení TPS posune jiný dílek z místa někde jinde v blockchainové skládačce; bez ohledu na to existují projekty a startupy, které pracují na dosažení odpovědí na TPS potřebných k posunutí přijetí blockchainu do škálovatelné fáze.

Stávající a budoucí přístupy k řešení škálovatelnosti

Při hledání potenciální odpovědi na problém škálovatelnosti vyvstává několik dalších otázek. Například pokud je odpověď použitelná pouze pro jeden konkrétní blockchain, pak se opírá o předpoklad, že právě tento konkrétní blockchain bude v budoucnu tuto škálovatelnost potřebovat; v opačném případě je vynaložené úsilí zbytečné nebo nemístné. Další úvahou je pochopit, jaký může být kompromis. V tuto chvíli všechna dostupná řešení přicházejí s omezeními.

Dávkové platby do jedné transakce

Pros:

Nevýhody: Nelze dávkovat transakce více peněženek dohromady; ohrožuje soukromí

Dávkové platby byly vlastností Bitcoinu (a tedy i jeho forků včetně Digibyte, Dogecoinu, Bitcoin Cash atd.) prostřednictvím RPC sendmany. Burzy to již dělají a můžete to vidět, když se pokusíte vyhledat ID své transakce v průzkumníku blockchainu. To, co nakonec můžete vidět, je jedna peněženka odesílající do více různých peněženek. V takovém případě se jedná o dávkovou transakci.

Výhodou je, že vložení do jedné transakce znamená, že 1) musíte zaplatit pouze jeden transakční poplatek a 2) nemusíte pro každou transakci psát celou transakci, která má, jak jsem popsal dříve, přibližně 380 bajtů. Ve skutečnosti z 380 bajtů, které transakce může mít, může být pouze 34 bajtů informací o transakci.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.