Monad to nowa platforma inteligentnych kontraktów warstwy 1, która niedawno zebrała 225 milionów dolarów od firmy venture capital Paradigm.
Chociaż Monad nie został jeszcze uruchomiony, oczekuje się, że zostanie uruchomiony w publicznej sieci testowej pod koniec 2024 r., a wdrożenie w sieci głównej planowane jest na początek 2025 r.
Monad to równoległy projekt maszyny wirtualnej Ethereum (EVM) i podobnie jak podobne projekty, takie jak Aurora (zbudowany na protokole Near) czy Sei, próbuje zrównoleglić wykonywanie instrukcji EVM, aby sieć mogła przetwarzać wiele transakcji jednocześnie. Umożliwia to obsługę większego wolumenu transakcji, zwiększa przepustowość i obniża koszty.
Paralelizacja polega na rozbiciu wykonywania transakcji na mniejsze, niezależne zadania, które mogą być przetwarzane jednocześnie. Monad wprowadza cztery optymalizacje w celu poprawy konsensusu, wykonywania i przechowywania danych: MonadBFT, odroczone wykonywanie, równoległe wykonywanie i MonadDb.
MonadBFT
MonadBFT to potokowy, dwufazowy algorytm odporny na błędy bizantyjskie, zaprojektowany w celu zwiększenia skalowalności i wydajności łańcucha bloków. Jest pochodną algorytmu HotStuff zoptymalizowaną do działania w warunkach częściowo synchronicznych.
Ta optymalizacja jest ważna, ponieważ większość rzeczywistych sieci nie wykazuje idealnie synchronicznego zachowania z powodu zmiennych czasów dostarczania wiadomości spowodowanych przeciążeniem sieci, opóźnieniami i innymi czynnikami. Dostosowując się do tych częściowo synchronicznych warunków, MonadBFT zapewnia przyzwoitą wydajność i niezawodność w praktycznych wdrożeniach.
Algorytm HotStuff to protokół konsensusu zaprojektowany dla systemów blockchain w celu osiągnięcia tolerancji błędów bizantyjskich (BFT), czyli zdolności systemu komputerowego do kontynuowania działania, nawet jeśli niektóre z jego węzłów działają złośliwie lub są wadliwe.
Osiąga tę solidność poprzez serię rund komunikacji między węzłami w celu uzgodnienia następnego bloku w łańcuchu. HotStuff wymaga trzech rund komunikacji, aby osiągnąć konsensus, co może stać się wąskim gardłem dla skalowalności i wydajności. MonadBFT ulepsza HotStuff, zmniejszając liczbę rund komunikacji wymaganych do osiągnięcia konsensusu z trzech do dwóch.
Mechanizm konsensusu działa w fazach. Węzeł lidera proponuje bloki, a walidatorzy je sprawdzają. W każdej rundzie lider wysyła nowy blok z certyfikatem kworum (QC) lub certyfikatem limitu czasu (TC) dla poprzedniej rundy. QC jest dowodem, że blok został zatwierdzony przez większość walidatorów, wskazując, że zgadzają się oni co do ważności bloku.
TC z drugiej strony wskazuje, że wymagana liczba walidatorów nie osiągnęła konsensusu w danym przedziale czasowym. Działa to jako mechanizm awaryjny, zapobiegający zatrzymaniu się systemu.
Walidatorzy głosują nad nowym blokiem zaproponowanym przez lidera. Jeśli wystarczająca liczba walidatorów (dwie trzecie) zatwierdzi, blok jest finalizowany w kolejnych rundach i wydawane są QC.
Jeśli walidatorzy nie otrzymają prawidłowego bloku na czas, wysyłają podpisane komunikaty o przekroczeniu limitu czasu, które mogą zostać zagregowane w TC. Ten TC jest następnie wysyłany bezpośrednio do następnego lidera. Blok jest finalizowany, gdy walidatorzy widzą dwa kolejne certyfikowane bloki.
Ta dwufazowa reguła zatwierdzania zapewnia szybką finalizację bloku przy jednoczesnym zachowaniu bezpieczeństwa sieci i tolerancji błędów. Podobnie jak we wszystkich asynchronicznych ustawieniach BFT, dwie trzecie węzłów walidatora Monad musi być nieantagonistycznych i mieć równą wagę udziału w głosowaniu, aby zachować bezpieczeństwo.
Odroczone wykonanie
Odroczone wykonanie oddziela wykonywanie transakcji od konsensusu. W przeciwieństwie do tradycyjnych blockchainów, takich jak Ethereum, gdzie węzły muszą wykonywać transakcje przed ustanowieniem konsensusu, konsensus MonadBFT koncentruje się wyłącznie na kolejności transakcji.
W Ethereum węzły muszą osiągnąć konsensus zarówno w odniesieniu do listy transakcji w bloku, jak i korzenia drzewa Merkle'a dla stanu wykonania po transakcji. Oznacza to, że lider konsensusu musi wykonać transakcje przed przesłaniem bloku, a wszystkie węzły weryfikujące muszą powtórzyć to wykonanie przed oddaniem głosu.
Czasy blokowania mogą zatem stać się dość długie, a złożoność obliczeń, które może obsłużyć sieć, jest zmniejszona. Mechanizm konsensusu MonadBFT określa jedynie kolejność transakcji i umożliwia niezależne wykonywanie po osiągnięciu konsensusu.
Aby zapewnić prawidłowe wykonanie, Monad opóźnia uzgodnienie pierwiastka Merkle stanu o bloki D. D to parametr systemowy, którego wartość obecnie oczekuje się na poziomie 10.
Ta konstrukcja łagodzi ryzyko związane ze złośliwym węzłem, który nie wykonuje transakcji poprawnie. Gdy sieć osiągnie konsensus w bloku N większością dwóch trzecich głosów, tym samym zgadza się również na stan reprezentowany przez drzewo Merkle'a w bloku N-D.
Jeśli jakikolwiek węzeł odkryje błąd podczas wykonywania bloku N-D, głosuje przeciwko propozycji dla bloku N. Powoduje to wycofanie do stanu końcowego bloku N-D-1, a następnie ponowne wykonanie transakcji z bloku N-D. Węzeł może weryfikować i korygować wyniki wykonania względem innych węzłów w sieci, sprawdzając własny korzeń Merkle'a. Lekkie węzły mogą wyszukiwać pełne węzły w celu uzyskania dowodów Merkle'a dotyczących wartości zmiennych stanu.
Wykonywanie równoległe
Popularne blockchainy wykorzystujące równoległe wykonywanie zadań są albo deterministyczne, albo optymistyczne.
Monada wykorzystuje optymistyczne wykonywanie w celu osiągnięcia równoległego przetwarzania transakcji. Ta metoda jest w pewnym stopniu analogiczna do spekulatywnego wykonywania stosowanego przez jednostki centralne (CPU), gdzie procesory przewidują ścieżkę instrukcji rozgałęzienia i wykonują je z wyprzedzeniem.
Silnik wykonawczy Monad rozpoczyna przetwarzanie nowych transakcji jeszcze przed sfinalizowaniem wykonywania poprzednich, co zwiększa ogólną przepustowość.
Jednak ta strategia, zwana optymistyczną kontrolą współbieżności, może prowadzić do błędów, gdy kolejne transakcje są od siebie zależne. Jeśli zostanie wykryty konflikt (np. gdy dwie transakcje próbują zmodyfikować to samo saldo konta), dotknięte nim transakcje są ponownie wykonywane w celu skorygowania rozbieżności.
W najgorszym przypadku transakcja musi zostać wykonana dwa razy, ale łącznie dodaje to tylko 1,5% narzutu. Monad wykorzystuje również statyczny analizator kodu, aby przewidzieć zależności między transakcjami z wyprzedzeniem. Ta statyczna analiza pozwala Monad zidentyfikować potencjalne konflikty przed wykonaniem i, chociaż nie zapobiega wszystkim konfliktom, pomaga zoptymalizować początkowe planowanie transakcji w celu bardziej wydajnego, optymistycznego równoległego wykonania.
Sei stosuje również optymistyczną paralelizację, zakładając, że transakcje nie będą kolidować, ale stosuje odrębne podejście do obsługi konfliktów. Podczas procesu paralelizacji Sei śledzi, które części stanu modyfikuje każda transakcja. Jeśli wykryje, że dwie transakcje kolidują, co oznacza, że próbują zmodyfikować tę samą część stanu, system tymczasowo wstrzymuje wykonywanie i ponownie przetwarza kolidujące transakcje sekwencyjnie, podobnie jak Monad.
Jednakże wykorzystanie przez Monad statycznego analizatora kodu pozwala na bardziej efektywne planowanie transakcji, zmniejszając tym samym prawdopodobieństwo wystąpienia konfliktu, podczas gdy Sei po prostu rozwiązuje konflikty w miarę ich pojawiania się w trakcie wykonywania.
Optymistyczne wykonanie eliminuje również potrzebę skomplikowanych algorytmów harmonogramowania i analizy zależności, które są wymagane w przypadku metodologii deterministycznych. W podejściu deterministycznym stosowanym przez Sui i Solana transakcje muszą zadeklarować, do których części stanu uzyskają dostęp przed wykonaniem.
Ta wstępna deklaracja pozwala systemowi zaplanować transakcje w sposób, który unika konfliktów podczas wykonywania. Podstawową zaletą tej metody jest przewidywalność: ponieważ zależności są znane z góry, system może zapewnić, że transakcje nie będą ze sobą kolidować, co skutkuje spójnymi i niezawodnymi wynikami.
Jednak ta przewidywalność ma swoją cenę. Analiza zależności i planowanie transakcji wymaga wyrafinowanych algorytmów, które muszą uwzględniać wszystkie potencjalne interakcje między transakcjami i wprowadzać obciążenie obliczeniowe, co skutkuje wyższymi wymaganiami sprzętowymi.
Do złożoności przyczynia się również konieczność przeprowadzania analiz i planowania w czasie rzeczywistym, ponieważ system musi stale monitorować i dostosowywać kolejność wykonywania zadań, aby zapobiegać konfliktom.
Ponadto podejście deterministyczne może napotkać wyzwania w zakresie wydajnego skalowania. Wraz ze wzrostem liczby transakcji złożoność analizy zależności rośnie wykładniczo.
MonadDB
MonadDB to niestandardowa baza danych zaprojektowana specjalnie w celu optymalizacji implementacji równoległego wykonywania zadań. W tradycyjnych blockchainach, takich jak Ethereum, dostęp do wejścia/wyjścia (I/O) staje się istotnym wąskim gardłem, głównie dlatego, że systemy te opierają się na synchronicznych operacjach I/O.
Procesy muszą czekać na zakończenie każdej operacji odczytu lub zapisu przed przejściem do następnej, co poważnie ogranicza przepustowość i ogólną wydajność. Aby pokonać to ograniczenie, MonadDB wykorzystuje asynchroniczne operacje dyskowe, które pozwalają systemowi na jednoczesne inicjowanie wielu operacji odczytu i zapisu bez czekania na zakończenie każdej z nich. Zwiększa to ogólną szybkość przetwarzania transakcji, szczególnie w połączeniu z równoległym wykonywaniem.
Wniosek
Monad stanowi znaczący postęp w technologii blockchain. Wykorzystuje innowacyjne techniki, takie jak optymistyczne wykonanie, odroczone wykonanie i niestandardową bazę danych MonadDB, w celu zwiększenia skalowalności i wydajności.
Optymistyczna metoda paralelizacji, podobna do spekulatywnego wykonywania w procesorach, pozwala na uzyskanie wysokiej przepustowości dzięki równoczesnemu przetwarzaniu transakcji i ponownemu wykonywaniu kolidujących transakcji tylko wtedy, gdy jest to konieczne.
W połączeniu ze statyczną analizą kodu ta metoda optymalizuje harmonogramowanie transakcji i zmniejsza prawdopodobieństwo konfliktów. W porównaniu do innych równoległych projektów EVM, takich jak Sei i deterministycznych systemów, takich jak Sui i Solana, podejście Monad równoważy wydajność i złożoność, zapewniając solidne rozwiązanie dla dużych wolumenów transakcji.
Wprowadzenie MonadBFT, dwufazowego algorytmu opartego na potoku, odpornego na błędy bizantyjskie, zapewnia szybką finalizację bloków i bezpieczeństwo sieci.
Monad przygotowuje się do uruchomienia publicznej sieci testowej pod koniec 2024 r. i wdrożenia sieci głównej na początku 2025 r., pozycjonując się jako poważny gracz na rynku nowej generacji skalowalnych platform blockchain.