blog 1AktualnościDevelopersEnterpriseBlockchain ExplainedWydarzenia i konferencjePrasaBiuletyny

Zapisz się do naszego newslettera.

Adres e-mail

Szanujemy twoją prywatność

HomeBlogBlockchain Poradnik

Stan skalowania Ethereum

Zwięzły przegląd wyzwań i rozwiązań dotyczących skalowania sieci Ethereum. Autor: ConsenSys 24 kwietnia 2018 r. Opublikowano 24 kwietnia 2018 r.

Narodziny Enterprise Ethereum w 2017 roku


Twórcy Ethereum od dawna wiedzą, że skalowanie sieci to temat warty dyskusji i inwestycji. Sprawa nie wypłynęła jednak ze społeczności deweloperów, jednak aż do końca 2017 roku, kiedy zdecentralizowana aplikacja (dApp) o nazwie CryptoKitties przyciągnęła tak duży ruch, że zaczęła spowalniać sieć. Oprócz opóźnień w sieci, cena gazu – opłata wymagana do uruchomienia każdej operacji w ramach kontraktu na łańcuchu blokowym Ethereum – wzrosła, gdy użytkownicy rywalizowali o walidację swoich transakcji.

Chociaż historia jest teraz przesadzona i wyczerpana, sytuacja CryptoKitties ujawniła, że ​​Ethereum w obecnym stanie może nie być przygotowane na ilość ruchu, który towarzyszyłby uruchomieniu udanego dApp. Niskie prędkości i zmienne koszty użytkowania odciągają ludzi od platform i aplikacji. Deweloperzy DApp zbliżają się do wydania pierwszej szeroko przyjętej aplikacji, więc programiści Ethereum muszą kontynuować pracę nad skalowaniem łańcucha bloków.

„Trilemma”

Jedna z teorii technologii blockchain mówi, że sieć może obsługiwać tylko dwa z następujących elementów: bezpieczeństwo, decentralizację i skalowalność. Ten „trylemat” – jak stał się znany – był wyzwaniem dla programistów Ethereum, którzy starają się zachować podstawowe założenia łańcucha blokowego (decentralizacja i bezpieczeństwo), jednocześnie skalując go pod kątem powszechnego przyjęcia i wdrożenia. Niektóre z bardziej bezpośrednich poprawek dotyczących skalowalności, na przykład, poważnie wpływają na bezpieczeństwo lub decentralizację:

  1. Sposób użycia altcoiny jest jednym z teoretycznych rozwiązań problemów związanych ze skalowalnością. Opcją jest porzucenie idei jednego łańcucha bloków, z którego odbywają się wszystkie transakcje, i zamiast tego przyjęcie modelu, w którym współistnieje wiele altcoinów, z których wszystkie działają na oddzielnych łańcuchach bloków. Zmniejszony ruch na łańcuch bloków pozwoliłby na skalowanie tej konstelacji łańcuchów bloków. Jednak z mniejszą liczbą węzłów działających na każdym łańcuchu bloków, każdy łańcuch bloków jest bardziej podatny na ataki i złośliwych użytkowników. Dlatego użycie altcoinów utrzymuje decentralizację i poprawia skalowalność, ale poważnie wpływa na bezpieczeństwo.
  2. Zwiększenie rozmiaru bloku to kolejne teoretyczne rozwiązanie problemów związanych ze skalowalnością. Gdyby społeczność Ethereum zagłosowała za zwiększeniem rozmiaru każdego bloku, wszystkie węzły mogłyby nadal wykonywać wszystkie operacje, ale więcej transakcji można by wykonać w tym samym czasie, przyspieszając w ten sposób sieć. Jednak przy większych rozmiarach bloków każda transakcja wymaga więcej energii, a coraz mniej węzłów będzie w stanie zużywać tę ilość energii. Rezultatem byłaby przyszłość, w której sieć jest utrzymywana przez kilka superkomputerów z ogromną mocą obliczeniową potrzebną do weryfikacji każdego bloku. W związku z tym zwiększony rozmiar bloku zapewnia bezpieczeństwo i poprawia skalowalność, ale znacznie zmniejsza stopień zdecentralizowanej sieci.

Głównym problemem związanym z rozwojem łańcucha bloków było bezpieczeństwo i decentralizacja. Dlatego podstawową przeszkodą w skalowalności jest to, że każdy węzeł musi obecnie przetwarzać każdą transakcję. Chociaż niewątpliwie bezpieczny i zdecentralizowany proces nie pozostawia wiele miejsca na skalowalny wzrost. Pojawia się zatem pytanie, jak zaprojektować Ethereum, aby móc skalować bez narażania bezpieczeństwa i decentralizacji?

W opracowywaniu są cztery podstawowe protokoły, które będą rozwiązywać problemy skalowalności. Sharding, Plasma i Raiden zostały zaproponowane specjalnie, aby pomóc w skalowaniu Ethereum. Czwarty protokół, Casper, ma znacznie szerszy zakres, ale oprócz wielu innych będzie miał wpływ na skalowalność.

Sharding

Sharding to jedna z metod skalowania, która utrzymuje wszystkie transakcje w oryginalnym łańcuchu bloków, a zatem nazywana jest rozwiązaniem „on-chain”. Sharding rozwiązuje problem polegający na tym, że wszystkie transakcje w Ethereum są sekwencyjne, ponieważ każdy węzeł musi przetwarzać każdą transakcję. Sharding pozwala na jednoczesne wykonywanie operacji obok siebie, zwiększając w ten sposób liczbę transakcji na sekundę, jaką może przetworzyć cały łańcuch bloków. Dzięki shardingowi sieć Ethereum jest podzielona na wiele grup węzłów. Każda z tych grup jest fragmentem, a każdy fragment przetwarza wszystkie transakcje, które występują w tej grupie. Dzięki temu wszystkie fragmenty mogą jednocześnie przetwarzać różne transakcje

W każdym fragmencie określone węzły zwane „kolatorami” regularnie tworzyłyby „zestawienie” lub zestaw informacji o tym fragmencie. Każde zestawienie zawiera następujące informacje:

  1. Informacje o tym, z którego fragmentu pochodzi zestawienie.
  2. Informacje o stanie fragmentu przed zastosowaniem transakcji.
  3. Zostaną zastosowane informacje o stanie odłamka po transakcjach.
  4. Podpisy cyfrowe od ⅔ kolatorów potwierdzające informacje w zestawieniu

W całej sieci zestawienia z każdego fragmentu są agregowane w jeden blok i dodawane do łańcucha bloków Ethereum. Dlatego sharding umożliwia tym grupom węzłów przetwarzanie i weryfikację transakcji, podczas gdy jedyną informacją dodawaną do łańcucha blokowego są rozwodnione informacje znalezione w zestawieniach. Jeśli, na przykład, istnieje dziesięć fragmentów, a każdy fragment przetwarza pięć transakcji, to następny blok będzie zawierał zapis pięćdziesięciu transakcji w łańcuchu bloków, a nie tylko kilka, które uruchamiałyby transakcje sekwencyjnie.

Z fragmentowaniem pojawiają się dwa problemy. Po pierwsze, każdy fragment musi zawierać wystarczającą liczbę węzłów, aby zapewnić bezpieczeństwo sieci. Jeśli fragment zawiera zbyt mało węzłów, ⅔ kolatorów może zostać przejęte i zacząć działać złośliwie. Po drugie, nie ma łatwego sposobu na przetworzenie transakcji, która ma miejsce między dwoma fragmentami zamiast w jednym (problem, który nie istnieje w przypadku jednego, całego łańcucha bloków). Obecna metoda wymaga nieporęcznej serii pokwitowań i dowodów.

Osocze

Plazma to kolejna metoda skalowania, która przetwarza transakcje „poza łańcuchem”, tj. Nie na podstawowym łańcuchu blokowym Ethereum. Plazma pozwala, aby wiele łańcuchów bloków (zwanych „łańcuchami potomnymi”) wywodziło się z oryginalnego łańcucha bloków (zwanego „łańcuchem korzeni”). Dlatego każdy łańcuch podrzędny może przetwarzać i utrzymywać własne zapisy transakcji, polegając na podstawowych zabezpieczeniach łańcucha głównego. W przypadku Plazmy łańcuch główny jest globalnym wykonawcą obliczeń zachodzących na wszystkich łańcuchach potomnych. Jednak łańcuch główny należy obliczyć tylko wtedy, gdy w jednym z łańcuchów podrzędnych pojawi się spór. Ta metoda pozwala całej sieci łańcuchów potomnych na podzielenie wszystkich transakcji w łańcuchu blokowym w celu jak najlepszej optymalizacji szybkości i wydajności. Jeśli węzły w łańcuchu potomnym chcą, mogą przesłać transakcję wyjściową i wyeksportować zapis swoich transakcji do łańcucha głównego.

Ta metoda ma jedną szczególną moc. Każdy łańcuch plazmy może mieć własne cechy i zestaw standardów. Oznacza to, że różne łańcuchy podrzędne mogą obsługiwać transakcje o różnych wymaganiach (np. Prywatności), a wszystkie nadal występują w tym samym, bezpiecznym ekosystemie.

Raiden

Raiden to kolejne rozwiązanie do skalowania poza łańcuchem, które umożliwia węzłom utrzymywanie rekordów między nimi bez konieczności weryfikowania każdej transakcji przez łańcuch główny. Dwa węzły mogą otworzyć między sobą „kanał stanu”, który jest dwukierunkowym kanałem między użytkownikami. „Wiadomości” – w postaci transakcji – występują między dwoma węzłami i są podpisywane przez każdą ze stron w celu zapewnienia niezmienności. Raiden jest szczególnie przydatny w przypadku płatności, które są częste i oczekiwane – tj. Użytkownik, który wie, że zapłaci firmie 10 dolarów tygodniowo za usługę lub użytkownik, który wie, że będzie regularnie wydawał pieniądze w lokalnym sklepie spożywczym. Dzięki rejestrowaniu i weryfikowaniu transakcji między tymi dwoma węzłami, a nie w każdym bloku, łańcuch główny jest wolny od ogromnej ilości ruchu. W dowolnym momencie każdy uczestnik kanału państwowego może zdecydować o zamknięciu transakcji, a wynik netto wszystkich transakcji jest eksportowany do głównego łańcucha bloków i włączany do następnego bloku. Oznacza to, że po roku abonamentu na usługę 10 USD / tydzień użytkownik mógłby zlecić blokowi weryfikację jednej transakcji za 520 USD zamiast 52 oddzielnych transakcji za 10 USD.

Rozwiązanie Raiden ma jedno podstawowe zastrzeżenie i jedną podstawową korzyść. Zastrzeżenie polega na tym, że węzły mogą komunikować się tylko ze swoimi „sąsiadami” – co oznacza, że ​​jeśli węzeł A i węzeł B mają otwarty kanał stanu, a węzeł B i węzeł C mają otwarty kanał instrukcji, węzeł A nie może wysyłać środków bezpośrednio do węzła C. Jednak transakcje mogą być przekazywane kanałami w taki sposób, że nie można ich ukraść ani zablokować po drodze. Węzeł A mógłby wysłać transakcję do węzła C przy użyciu węzła B jako pośrednika w taki sposób, że węzeł B nie mógłby ukraść środków. Główną korzyścią jest to, że Raiden drastycznie obniża ceny gazu dla każdej transakcji. Transakcje poza łańcuchem między węzłami wymagają mniej gazu do przetworzenia niż transakcje, które występują w łańcuchu głównym.

Kacper

Casper to protokół, za pomocą którego obecny model Proof of Work (PoW) Ethereum zostanie zmieniony na Proof of Stake (PoS). Dzięki PoW górnicy muszą obecnie zużywać energię, aby rozwiązać równanie kryptograficzne i wydobyć blok. Są wynagradzani, jeśli rozwiążą równanie, ale proces ten wymaga ogromnej energii (i będzie wymagał coraz więcej). Jest to kosztowne i nieefektywne energetycznie, a utrzymanie modelu PoW kosztuje obecnie 1,2 miliarda USD rocznie.

W PoS „walidatory” zastępują górników i „sprawdzają” (zamiast moich) bloki w łańcuchu bloków. Zamiast wydawać energię na określony blok, walidatory stawiają swoje fundusze na określonym bloku. Blok, na który postawiono najwięcej środków, jest weryfikowany i dodawany do łańcucha bloków. Zasadniczo walidatory „zakładają”, że określony blok zostanie dodany do łańcucha, blokując ich środki w kontrakcie do czasu dodania następnego bloku. Są nagradzani, jeśli postawili zakład na właściwy blok. Tracą swoje fundusze, jeśli działają złośliwie, próbując zweryfikować blok z niepoprawnymi lub uszkodzonymi informacjami.

Koncepcyjnie ta zmiana powinna chronić łańcuch bloków przed złośliwymi atakami. W przypadku PoW nieudany atak na łańcuch bloków kosztuje atakującego czas i siłę. W przypadku PoS nieudany atak na łańcuch bloków bezpośrednio kosztuje użytkownika, ponieważ natychmiast traci wszystkie środki postawione na niewłaściwy blok.

Ostateczne wdrożenie Casper zostanie poprzedzone dwiema iteracjami protokołu: Casper FFG i Casper CBC. Te iteracje zostaną wdrożone w Ethereum w celu przetestowania PoS w sieci i zidentyfikowania potencjalnych problemów przed całkowitym przełączeniem.

Casper FFG

Casper FFG (Friendly Finality Gadget) będzie pierwszą iteracją Caspera, prawdopodobnie wydaną podczas kolejnego hard forka Ethereum, Konstantynopola. W Casper FFG bloki są nadal wydobywane za pomocą PoW. Jednak co pięćdziesiąt bloków weryfikatorzy wkraczają, aby przetestować mechanizm PoS. Ten „punkt kontrolny” wykorzystuje protokół PoS do oceny i potwierdzenia ostateczności. Ostateczność oznacza, że ​​operacja jest kompletna i całkowicie niezmienna. W FFG walidatorzy stawiają fundusze na sfinalizowanie poprzednich pięćdziesięciu bloków w łańcuchu.

Casper CBC

Casper CBC (Correct-by-Construction) będzie drugą iteracją Caspera. Zazwyczaj protokół jest formalnie określony, a następnie udowadnia, że ​​spełnia wszystkie podane właściwości. W przypadku CBC protokół PoS jest tylko częściowo określany, a następnie dostosowywany w celu spełnienia właściwości, do których miał się stosować. Zasadniczo, zamiast być w pełni zdefiniowanym od samego początku, protokół jest tworzony aktywnie i stale. Osiąga się to poprzez implementację dowodu zwanego „idealnym przeciwnikiem”, który jest w stanie zgłosić wyjątki, błędy i przyszłe awarie protokołu.

Ostateczny protokół Casper zostanie prawdopodobnie wdrożony wraz z nauką zarówno z FFG, jak i CBC. Protokół ma znacznie szerszy zakres niż tylko skalowalność, w tym także ulepszenia energetyczne i bezpieczeństwa. Mniejsza energia na węzeł wymagana do dodania bloku do łańcucha oznacza jednak, że sieć poprawi obecne trudności związane ze skalowalnością. Chociaż Casper nie jest opracowywany specjalnie w celu rozwiązania problemów związanych ze skalowaniem, z pewnością będzie miał pozytywny wpływ na zdolność sieci do obsługi większego ruchu.

Patrząc w dół drogi

Cztery powyższe propozycje nie wykluczają się wzajemnie – mogą i prawdopodobnie zostaną wdrożone w pewnym stopniu, aby pomóc sieci Ethereum skalować się w czasie. Skalowanie będzie najważniejsze dla programistów Ethereum w 2018 r. W miarę opracowywania i uruchamiania coraz bardziej popularnych dapps, będziemy świadkami ciągłego dostosowywania dostępnych opcji skalowania, aby umożliwić Ethereum pełen potencjał..

Biuletyn Zapisz się do naszego newslettera, aby otrzymywać najnowsze wiadomości dotyczące Ethereum, rozwiązania dla przedsiębiorstw, zasoby dla programistów i nie tylko.Ethereum Raport DeFi za III kwartał 2020 rRaport

Ethereum Raport DeFi za III kwartał 2020 r

Ethereum Raport DeFi za II kwartał 2020 rRaport

Ethereum Raport DeFi za II kwartał 2020 r

Kompletny przewodnik po sieciach biznesowych BlockchainPrzewodnik

Kompletny przewodnik po sieciach biznesowych Blockchain

Jak zbudować udany produkt BlockchainWebinar

Jak zbudować udany produkt Blockchain

Wprowadzenie do tokenizacjiWebinar

Wprowadzenie do tokenizacji

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me