Opinia Odwieczny wyścig blockchainów pod względem wydajności i przepustowości dał początek wielu interesującym rozwiązaniom. Jednym z nich jest równoległa realizacja transakcji. Jak to działa i jakie korzyści przynosi?
Badanie Binance
Giełda kryptowalut Binance opublikowała całe badanie poświęcone równoległemu wykonywaniu w blockchainie. Samo rozwiązanie pojawiło się dość dawno temu, ale analitycy już teoretycznie podsumowali wieloletni rozwój. Technologia znana jest przede wszystkim dzięki projektowi Solana, jednak rozwiązanie w różnej formie wykorzystują firmy Vara, TON, Sui, Sei, Aptos, Linera, Fuel i Monad.
Problem wykonania sekwencyjnego
Tym, co powstrzymuje przepustowość blockchainu, jest problem wykonywania sekwencyjnego. W rozwiązaniu do realizacji sekwencyjnej każda transakcja musi zostać zweryfikowana przez całą sieć, co skutkuje znacznym zużyciem energii i zwiększonym obciążeniem górników lub walidatorów.
Wykonanie równoległe ma na celu rozdzielenie zadań i przetwarzanie większej liczby transakcji jednocześnie, co powinno korzystnie wpłynąć na przepustowość i zapewnić lepsze skalowanie sieci.
Eksperci z Binance zwracają uwagę, że ewolucja maszyn obliczeniowych zmierza w stronę wielozadaniowości i wielowątkowości. Dowodem może być fakt, że częstotliwości procesorów nie wzrosły znacząco w ciągu ostatnich 20 lat – zamiast tego wzrosła liczba rdzeni. Jest to rozwiązanie bardziej wydajne, gdyż zdecydowaną większość zadań obsłuży kilka słabszych rdzeni szybciej niż jeden mocny.
Programowanie wpisuje się w ten trend – nowoczesne rozwiązania pisane są w taki sposób, aby maksymalizować pozytywny efekt wielowątkowości. Dlatego modne są rozwiązania, w których wiele problemów rozwiązuje się równolegle.
Jak działa wykonanie równoległe w blockchainie
Mówiąc najprościej, wykonanie równoległe pozwala na przetwarzanie wielu transakcji jednocześnie. W warunkach dużej mocy obliczeniowej i wielozadaniowości rozwiązanie równoległe wydaje się najskuteczniejsze.
Ale jest wiele problemów, dzięki czemu spójne rozwiązania blockchain są bardziej niezawodne i bezpieczne. Transakcje główne – zależne. A co jeśli równolegle przetwarzane są dwie transakcje, w których np. ten sam adres wysyła kryptowaluty na dwa różne adresy. Jeśli transakcje te zostaną przeprowadzone całkowicie równolegle, właściciel portfela będzie mógł wydać swoje monety dwukrotnie. A to nie jest mile widziane.
Dlatego transakcje zależne mogą być wykonywane tylko sekwencyjnie. Zależność od transakcji jest pojęciem kluczowym, co oznacza, że:
-
Wynik jednego zadania jest zapisywany na wejściu innego – np. Alicja przekazuje ETH Bobowi (wyjście), a Wasia (wejście) przekazuje ETH Carol.
-
Dane wyjściowe wielu zadań są zapisywane w tej samej lokalizacji pamięci – na przykład zarówno Alicja, jak i Carol przesyłają ETH do Vasyi (wyjście).
Z tego wynika, że równolegle można łączyć tylko zadania niezależne od siebie. To z kolei oznacza, że prędkość równoległego blockchainu będzie zawsze ograniczona przez najdłuższy łańcuch zależnych zadań. A mimo to niezależnych zadań jest całkiem sporo, więc w blockchainie jest sporo miejsca na rozwiązania równoległe.
Różne metody wykonywania równoległego
-
Sharding. Eksperci Binance sklasyfikowali sharding jako wykonanie równoległe. Dzieje się tak na poziomie makro (fragmenty faktycznie przetwarzają swoje transakcje równolegle), ale na poziomie mikro każdy fragment sam w sobie przetwarza transakcje sekwencyjnie.
-
Równoległość zadań. Dzieje się tak, gdy jednocześnie przetwarzanych jest wiele transakcji. Na przykład, jeśli węzeł ma 16 rdzeni, może jednocześnie przetwarzać 16 transakcji.
-
Równoległość danych – jedna instrukcja dla wielu danych (pojedyncza instrukcja, wiele danych, SIMD). SIMD to rozwiązanie niskiego poziomu, które pozwala wydajniej pracować z danymi. Jest to przydatne do mieszania i weryfikacji.
Wady wykonywania równoległego
W porównaniu do prostych rozwiązań sekwencyjnych, projekty równoległe nie zawsze wyglądają korzystnie. Wręcz przeciwnie, są znacznie mniej bezpieczne, przewidywalne i proste.
Autorzy badania podsumowały podatności na wykonanie równoległe i zidentyfikowały kilka krytycznych:
sytuacja wyścigowa (niepewność wyniku powstająca w przypadku nieprawidłowego zdefiniowania niezależnych transakcji);
problemy z ponownym zalogowaniem;
Zakleszczenie ma miejsce wtedy, gdy dwa lub więcej zadań czeka na siebie w nieskończoność. Żaden z nich nie może zostać wykonany, dopóki nie zostanie wykonany drugi;
niekomponowalność, gdy sam kod programu może być poprawny, ale powodować błędy krytyczne, gdy jest używany w innych warunkach.
Dwa kolejne problemy są również uważane za warunkowo krytyczne (czyli krytyczne w określonych sytuacjach):
odwrócenie priorytetu, czyli stan, w którym zadanie o niskim priorytecie może pośrednio zablokować zadanie o wyższym priorytecie z powodu nieprawidłowego działania harmonogramu;
niedobór zasobów, gdy niektóre zadania zużywają więcej zasobów, niż powinny, pozbawiając inne zadania potrzebnych zasobów.
Wniosek
Pogoń za przepustowością może być dość kosztowna. Wykonanie równoległe to złożony projekt, który wprowadza wiele problemów, ale zapewnia znaczny wzrost wydajności.
Источник: bits.media