Seria Future of Blockchain

Tak, blockchain ma problem ze skalowalnością. Oto co to jest i co ludzie robią, aby go rozwiązać.

Bitwa o skalowalne rozwiązanie to księżycowy wyścig blockchaina. Bitcoin przetwarza 4,6 transakcji na sekundę. Visa wykonuje średnio około 1700 transakcji na sekundę (na podstawie obliczeń pochodzących z oficjalnego twierdzenia o ponad 150 milionach transakcji dziennie). Potencjał adopcji istnieje, ale jest wąskim gardłem obecnie przez skalowalność.

Badanie opublikowane przez Tata Communications w 2018 r. wykazało, że 44% organizacji w swoim badaniu przyjmuje blockchain, ale również nawiązuje do uniwersalnych problemów, które wynikają z wdrażania nowych technologii. Z poziomu architektury, nierozwiązany problem skalowalności wyłania się jako wąskie gardło dla adopcji blockchain i praktycznych zastosowań.

Jak ujął to Deloitte Insights, „systemy oparte na blockchain są stosunkowo powolne”. Powolna szybkość transakcji Blockchain jest poważnym problemem dla przedsiębiorstw, które są uzależnione od wysokowydajnych starszych systemów przetwarzania transakcji.” Świat otrzymał smak problemów ze skalowalnością w 2017 i 2018 roku: poważne opóźnienia transferu i wysokie opłaty w sieci Bitcoin, a także osławiona aplikacja Cryptokitties, która przeciążała sieć blockchain Ethereum (sieć, na której polegają tysiące zdecentralizowanych aplikacji).

Aby skalować blockchain, nie wystarczy zwiększenie rozmiaru bloku lub zmniejszenie czasu bloku poprzez zmniejszenie złożoności hashowania. W obu metodach zdolność do skalowania osiąga pułap, zanim będzie w stanie osiągnąć transakcje niezbędne do konkurowania z firmami takimi jak Visa, która „obsługuje średnio 150 milionów transakcji każdego dnia” lub około 1736 transakcji na sekundę (TPS).

Dla porównania, prędkości transakcji Bitcoin są ogromnie niższe. Obecnie rozmiar bloku jest ustawiony na 1MB (1,048,576 bajtów – chociaż przez SegWit, rozmiar ten może skalować się do teoretycznych 4MB), a średni rozmiar transakcji wynosi 380,04 bajtów (zakładając, że każda transakcja jest z jednego portfela do x innych portfeli – więc transakcja wsadowa będzie liczona jako jedna transakcja. Więcej o transakcjach wsadowych powiem później i dlaczego oznaczyłem je w ten sposób) i wydaje się, że ma tendencję wzrostową.Dlatego średnia ilość transakcji, które mogą zmieścić się w jednym z bloków Bitcoina, obecnie, jest obliczana jako:

Obecny czas generowania bloków Bitcoina wynosi 10 minut; tzn, co dziesięć minut, nowy blok jest wydobywany. W ciągu dziesięciu minut (600 sekund), Bitcoin może średnio około 2,759.12 transakcji w oparciu o poprzednie założenia. Innymi słowy, blockchain Bitcoin może obecnie zagwarantować tylko 4,6 transakcji na sekundę.

Increasing Block Size or Decreasing Block Generation Time Won’t Solve the Problem: A Look at Non-SegWit TPS

Problem skalowalności przychodzi w pakiecie z propozycjami wartości blockchain; dlatego nie można po prostu zwiększyć skalowalności poprzez zmianę parametrów w blockchain.

Społeczność Bitcoin może dostosować dwie zmienne, aby spróbować zwiększyć TPS. Jedną zmienną jest rozmiar bloku (B), który jest obecnie zakodowany na 1MB. Idealnie, B powinno być zwiększone w celu zwiększenia TPS. Drugą zmienną jest czas generowania bloku (TB), który jest regulowany poprzez zmianę złożoności łamigłówki haszującej. Idealnie, TB powinno być zmniejszone, aby zwiększyć TPS.

Tabela 1: różne scenariusze zwiększenia TPS zostaną przeanalizowane w sekcji poniżej. Tylko w S1 i S2 blockchain Bitcoin może osiągnąć TPS podobny do Visy, ale oba scenariusze są niemożliwe ze względu na czas propagacji transakcji, który również zostanie omówiony w tej sekcji.

Scenariusze 1 & 2

Aby wzrosnąć z 4,4 do 1736 Visy, Bitcoin musiałby skalować swój TPS o 377,5x. Innymi słowy, B musiałoby zostać zwiększone z 1MB do 377,5MB (Tabela 1, S1) lub TB musiałoby zostać zmniejszone z dziesięciu minut do 1,6 sekundy (Tabela 1, S2). Trzeci scenariusz polegałby na dostosowaniu obu. Każdy z tych trzech scenariuszy jest nieosiągalny na blockchainie ze względu na trzeci, niekontrolowany czynnik: czas przekaźnika (TR) potrzebny do rozesłania nowego bloku do każdego węzła w sieci Bitcoin.

Obecnie szacuje się, że w sieci Bitcoin jest 10 198 węzłów. Przesłanie 1MB (1,048,576 bajtów) przez sieć peer-to-peer zajmuje trochę czasu. Karlsruhe Institute of Technology mierzy czas propagacji bloku Bitcoin, a średni czas propagacji bloku zgłoszony 17 stycznia 2019 r. wynosił 13 989,42 milisekund lub około 14 sekund na propagację do 99% sieci. TB nie może spaść poniżej 99% TR (TR99)=14, ponieważ gdyby tak się stało, wówczas nowy blok zostałby wygenerowany, zanim stary blok zostałby odebrany przez większość bloków w sieci. Im bardziej TB zbliża się do TR99, tym więcej pojawia się problemów z rozwidleniami, osieroconymi blokami i reorganizacją łańcucha oraz (w skrajnych przypadkach) lukami w zabezpieczeniach, takimi jak ataki typu double-spend.

Scenariusz 3

Nawet jeśli TB = TR99 = 14, przy rozmiarze bloku 1MB, blockchain Bitcoin byłby w stanie zwiększyć swoją prędkość tylko do 188 TPS (Tabela 1, S3). Chociaż ta skala reprezentuje 188-krotny wzrost TPS, nigdzie nie jest blisko 1736 TPS, które Visa przeprowadza codziennie; co więcej, nakłada na siebie wspomniane wcześniej ryzyko. Druga zmienna, B, może zostać zmieniona, ale nie bez wpływu na TR, co wpłynęłoby na TR99, a zatem na dolną granicę TB.

Scenariusz 4

Na przykład, podwajając rozmiar B (z 1MB do 2MB), czas potrzebny każdemu węzłowi w sieci na pobranie nowego bloku, TR, również by się zwiększył – o około 2x; zatem przy 2MB, TR99 = 28s, więc dolna granica TB również wynosiłaby 28s. Zwiększając B o dowolny czynnik, a następnie zwiększając TR o ten sam czynnik, TPS netto pozostałby taki sam – w tym przypadku około 188 TPS (tabela 1, S4). Jednym z rozwiązań pozwalających na zmniejszenie wpływu B na TR jest zwiększenie przepustowości pomiędzy wszystkimi węzłami w sieci Bitcoin. Niestety, ponieważ jest to sieć P2P, ta odpowiedzialność spada na kolana każdego peera w sieci.

Wyłonienie SegWit

W 2017 roku, Segregated Witness (SegWit) wszedł w życie we wszystkich węzłach Bitcoin. Uwaga – nie będę zagłębiał się we wszystkie szczegóły SegWit, ale jeśli chcesz poznać jego historię i rolę w pojawieniu się hard forka Bitcoin Cash, zajrzyj do tego artykułu:

Robi to, na co brzmi nazwa – segreguje część świadka każdej transakcji od rzeczywistych danych transakcji. Wystąpił jako miękki widelec, więc został wprowadzony bez większych skutków dla istniejącej sieci blockchain i kodu. Ze względu na sposób, w jaki transakcja świadka byłaby ważona, nowe bloki Bitcoin z obsługą SegWit mogłyby teoretycznie zostać zwiększone do 4MB bez zmiany rozmiaru bloku Bitcoin.

Powiadam teoretycznie, ponieważ istnieją dodatkowe czynniki, które przyczyniają się do ostatecznego rozmiaru bloku SegWit. W rzeczywistości, jeśli sprawdzisz eksplorator blockchain Bitcoin, zobaczysz, że (przynajmniej w czasie, gdy ten artykuł został opublikowany) średni rozmiar bloku jest nadal poniżej 1MB.

Źródło: https://www.blockchain.com/charts

Ale to nie znaczy, że bloki nie mogą przekroczyć 1MB. Na początku 2018 roku byliśmy świadkami jednego z największych (prawdopodobnie nadal największego) wygenerowanych rozmiarów bloków, który ważył około 2,1MB. Soft fork SegWit pomógł poprawić rozmiar bloku bez zmian w kodzie rdzeniowym, ale nadal nie poprawia TPS w skalowalny sposób.

Podczas analizy poprzednich czterech scenariuszy w ramach konsensusu proof-of-work widzieliśmy, że samo zwiększenie rozmiaru bloku lub zmniejszenie złożoności wydobycia może nas zaprowadzić tylko tak daleko. Nawet kombinacja tych rozwiązań byłaby ograniczona ze względu na czas propagacji transakcji. Próba wydobywania nowych bloków szybciej niż stare bloki mogą się propagować doprowadzi do dość poważnych problemów z bezpieczeństwem. SegWit pomógł złagodzić niektóre z problemów TPS w międzyczasie, ale bardziej skalowalne rozwiązanie jest nadal potrzebne do osiągnięcia TPS podobnego do Visa.

Wydaje się, że przeniesienie dowolnego elementu na miejsce w celu zwiększenia TPS przenosi inny element z miejsca gdzieś indziej w układance blockchain; niezależnie od tego, istnieją projekty i startupy pracujące nad osiągnięciem odpowiedzi TPS potrzebnych do popchnięcia adopcji blockchain do skalowalnego etapu.

Istniejące i przyszłe podejścia do rozwiązania problemu skalowalności

Podczas poszukiwania potencjalnej odpowiedzi na problem skalowalności pojawia się wiele innych kwestii. Na przykład, jeśli odpowiedź ma zastosowanie tylko do jednego konkretnego blockchaina, to opiera się na założeniu, że ten konkretny blockchain będzie tym, który potrzebuje tej skalowalności w przyszłości; w przeciwnym razie wysiłek jest niepotrzebny lub źle ulokowany. Inną kwestią jest zrozumienie, jaki może być kompromis. W tej chwili wszystkie dostępne rozwiązania mają ograniczenia.

Płatności wsadowe w jedną transakcję

Zalety: Zmniejsza rozmiar rekordu transakcji poprzez umieszczenie wielu transakcji w jednym, pozwalając na więcej transakcji ogółem na blok, który może zwiększyć TPS do zakresu.

Konsekwencje: Nie może wsad transakcji wielu portfeli razem; ryzykuje prywatność

Płatności wsadowe był cechą Bitcoin (i dlatego widelce Bitcoin w tym Digibyte, Dogecoin, Bitcoin Cash, itp.) przez RPC sendmany. Giełdy już to robią i możesz to zobaczyć, gdy spróbujesz sprawdzić swój identyfikator transakcji na eksploratorze blockchain. Co może skończyć się widząc jeden portfel wysyłający do wielu różnych portfeli. W tym przypadku jest to transakcja wsadowa.

Zaletą tego jest to, że umieszczenie go w jednej transakcji oznacza, że 1) trzeba zapłacić tylko jedną opłatę transakcyjną, a 2) nie trzeba pisać pełną transakcję, która jest, jak opisałem wcześniej, około 380 bajtów, dla każdej transakcji. W rzeczywistości, z 380 bajtów, które może mieć transakcja, tylko 34 bajty z tego mogą być informacjami o transakcji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.