Co to jest fragmentowanie?

Ponieważ debata na temat skalowania w kryptowalutach trwa, niektóre potencjalne rozwiązania są opracowywane już od dłuższego czasu.

W szczególności w przypadku Ethereum, gdzie duży nacisk kładzie się na decentralizację i bezpieczeństwo kosztem skalowalności, zastosowanie shardingu w połączeniu z implementacją konsensusu Proof of Stake jest postrzegane jako bardzo potrzebny mechanizm, dzięki któremu sieć może się skalować praktyczne poziomy aplikacji przy jednoczesnym zachowaniu decentralizacji i bezpieczeństwa.

Sharding to złożony temat, szczególnie w przypadku zastosowania w zdecentralizowanej sieci peer to peer, takiej jak Ethereum, gdzie globalny stan sieci jest stale aktualizowany.

Czym dokładnie jest sharding i jak może pomóc w skalowaniu sieci blockchain?

Sharding and Distributed Computing Background

Sharding jest w rzeczywistości znacznie starszy niż technologia blockchain i został wdrożony w różnych systemach, od optymalizacji biznesowych baz danych po Globalna baza danych Spanner firmy Google.

  • Zasadniczo fragmentowanie to szczególna metoda poziomego partycjonowania danych w bazie danych.
  • Mówiąc bardziej ogólnie, baza danych jest podzielona na małe fragmenty zwane „fragmentami”, które po zagregowaniu tworzą oryginalną bazę danych.
  • W rozproszonych sieciach blockchain sieć składa się z szeregu węzłów połączonych w formacie peer to peer, bez centralnego organu.
  • Podobnie jak w przypadku obecnych systemów blockchain, każdy węzeł przechowuje wszystkie stany sieci i przetwarza wszystkie transakcje.
  • Chociaż zapewnia to wysoki poziom bezpieczeństwa poprzez decentralizację, szczególnie w systemach Proof of Work, takich jak Bitcoin i Ethereum, prowadzi to do uzasadnionych problemów ze skalowaniem.

Ethereum Sharding

Na przykładzie Ethereum pełny węzeł w sieci Ethereum przechowuje cały stan łańcucha bloków, w tym salda kont, pamięć masową i kod umowy.

Niestety, wraz ze wzrostem rozmiaru sieci w tempie wykładniczym konsensus rośnie tylko liniowo. To ograniczenie wynika z komunikacji między węzłami potrzebnej do osiągnięcia konsensusu.

Węzły w sieci nie mają specjalnych uprawnień i każdy węzeł w sieci przechowuje i przetwarza każdą transakcję. W rezultacie w sieci wielkości Ethereum problemy takie jak wysokie koszty gazu i dłuższe czasy potwierdzenia transakcji stają się zauważalnymi problemami, gdy sieć jest obciążona. Sieć jest tak szybka, jak poszczególne węzły, a nie suma jej części.

Sharding pomaga złagodzić te problemy, zapewniając interesujące, ale złożone rozwiązanie. Koncepcja obejmuje grupowanie podzbiorów węzłów w fragmenty, które z kolei przetwarzają transakcje specyficzne dla tego fragmentu. Umożliwia systemowi przetwarzanie wielu transakcji równolegle, co znacznie zwiększa przepustowość.

Prostszym sposobem byłoby wyobrażenie sobie podziału Stanów Zjednoczonych na stany.

Chociaż każdy stan (w tym przypadku fragment) jest częścią większej części Stanów Zjednoczonych (sieć Ethereum), mają one swoje własne, specyficzne zasady, granice i podzbiory populacji. Jednak dzielą uniwersalny język i kulturę jako część większej sieci, która tworzy kraj.

Albo jeszcze lepiej, słowami Vitalika Buterina:

 „Wyobraź sobie, że Ethereum zostało podzielone na tysiące wysp. Każda wyspa może robić swoje. Każda z wysp ma swoje unikalne cechy i wszyscy należący do tej wyspy, tj. Konta, mogą ze sobą współdziałać ORAZ mogą swobodnie korzystać ze wszystkich jej funkcji. Jeśli chcą skontaktować się z innymi wyspami, będą musieli użyć jakiegoś protokołu ”.

Jak widać, koncepcja fragmentacji sieci na bardziej wydajne części pozwala sieci funkcjonować jako suma jej części, a nie być ograniczana przez prędkość każdego pojedynczego węzła.

Jak działa sharding w łańcuchach bloków?

Będziemy nadal używać Ethereum jako przykładu w tym zakresie, ponieważ jest to najbardziej znane i żmudne próby shardingu na arenie blockchain, ponieważ programiści Ethereum wdrażają to, co jest znane jako „state sharding”.

Obecny stan łańcucha bloków Ethereum jest znany jako „stan globalny” i każdy może go zobaczyć, patrząc na łańcuch bloków w konkretnym przypadku.

Trudność we wdrażaniu shardingu w Ethereum polega na tym, że dzieląc węzły na mniejsze podzbiory, podzbiory te muszą być w stanie przetwarzać określone zestawy transakcji, jednocześnie aktualizując stan sieci, przy jednoczesnym zapewnieniu, że jest on prawidłowy.

Sharding w Ethereum ma zostać wdrożony w dwóch fazach, bardziej niż prawdopodobne po wdrożeniu Proof of Stake w sieci. Faza pierwsza będzie warstwą danych składającą się z konsensusu co do tego, jakie dane znajdują się we fragmentach. Faza druga to warstwa stanu. Wszystko to jest bardzo płynne, więc ogólny opis tego, jak może działać, znajduje się poniżej.

Ethereum dzieli sieć na określone fragmenty. Każdy fragment ma przypisaną określoną grupę transakcji, która jest określana przez zgrupowanie określonych kont (w tym kontraktów inteligentnych) we fragment. Każda grupa transakcji ma nagłówek i treść, które składają się z następujących elementów.

nagłówek

  • Identyfikator fragmentu grupy transakcji
  • Przypisywanie walidatorów poprzez losowe pobieranie próbek (weryfikacja transakcji w shard)
  • State Root (stan katalogu głównego merkle shard przed i po dodaniu transakcji)

Ciało

  • Wszystkie transakcje należące do grupy transakcji, które są częścią określonego fragmentu.

Transakcje są specyficzne dla każdego fragmentu i występują między kontami natywnymi dla tego fragmentu.

Gdy transakcje są weryfikowane, zmienia się stan sieci, salda kont, magazyn itp. Są aktualizowane. Aby grupa transakcji została zweryfikowana jako poprawna, katalog główny grupy transakcji sprzed stanu musi być zgodny z katalogiem głównym fragmentu w stanie globalnym. Jeśli są zgodne, grupa transakcji jest sprawdzana, a stan globalny jest aktualizowany za pośrednictwem określonego stanu głównego identyfikatora fragmentu.

Zamiast zawierać tylko katalog główny stanu, każdy blok łańcucha bloków Ethereum zawiera teraz zarówno katalog główny stanu, jak i katalog główny grupy transakcji. Katalog główny grupy transakcji to katalog główny Merkle wszystkich grup transakcji z określonych fragmentów dla tego bloku transakcji.

Zasadniczo istnieje katalog główny Merkle wszystkich różnych fragmentów, które zawierają zaktualizowane i zweryfikowane grupy transakcji. Ten katalog główny jest przechowywany w łańcuchu bloków wraz ze zaktualizowanym stanem głównym.

Wykorzystanie koncepcji drzewa Merkle w tej strukturze ma kluczowe znaczenie dla zapewnienia ważności łańcucha blokowego. Zrozumienie, jak działa drzewo Merkle, a zwłaszcza korzeń Merkle, może pomóc ci w łatwiejszym zrozumieniu tych pojęć.

Co to jest drzewo Merkle

Przeczytaj: Co to jest drzewo Merkle ?

Konsensus w obrębie fragmentu jest osiągany poprzez konsensus Proof of Stake dla losowo wybranych węzłów, które są stosowane do fragmentu w określonej rundzie konsensusu.

Zapewnia to nie tylko ostateczność konsensusu, który jest niezbędny w obrębie odłamków, ale także zapewnia szczególną ochronę przed atakiem, na który w tym przypadku podatny byłby łańcuch typu Proof of Work..

Moc mieszania wymagana do przekroczenia określonego fragmentu w podzielonej na fragmenty sieci PoW jest drastycznie zmniejszona, a możliwość przejęcia odłamka przez złośliwego aktora za pomocą mocy obliczeniowej jest możliwa.

W ten sposób zły aktor może zaatakować inne odłamki za pośrednictwem protokołu komunikacyjnego, który jest jedną z bardziej skomplikowanych i ważnych cech architektury fragmentacji. Losowy dobór walidatorów we fragmencie pozwala zdusić ten typ ataku, ponieważ zły aktor nie będzie wiedział, w którym fragmencie zostanie umieszczony, zanim zostanie w nim faktycznie umieszczony.

Ponadto losowe próbkowanie zostanie użyte do wybrania walidatorów, które faktycznie przeprowadzają walidację z tego losowego zbioru walidacyjnego.

Protokół komunikacyjny jest niezbędny do poprawnego działania architektury shardingu w systemie. Możesz myśleć o protokole komunikacyjnym jako o uniwersalnym języku, który jest spójny we wszystkich stanach jako część większych Stanów Zjednoczonych.

Jednak zaprojektowanie tego protokołu jest bardzo trudne i musi być wykonywane tak, aby był używany tylko wtedy, gdy jest to konieczne. Staje się to konieczne, gdy określony węzeł wymaga informacji, które nie są przechowywane w jego własnym fragmencie i musi znaleźć fragment z wymaganymi informacjami. Ta komunikacja jest nazywana komunikacją między fragmentami.

Komunikację między fragmentami osiąga się poprzez zastosowanie koncepcji potwierdzeń transakcji. Potwierdzenie transakcji jest przechowywane w katalogu głównym Merkle, który można łatwo zweryfikować, ale który nie jest częścią katalogu głównego stanu.

Fragment odbierający transakcję z innego fragmentu sprawdza katalog główny Merkle, aby upewnić się, że potwierdzenie nie zostało wydane. Zasadniczo pokwitowania są przechowywane w pamięci współdzielonej, którą można zweryfikować za pomocą innych fragmentów, ale nie można ich zmienić. Dlatego dzięki rozproszonemu przechowywaniu paragonów shards mogą komunikować się ze sobą.

Sharding Moving Forward

Oczekuje się, że sharding w Ethereum zostanie wdrożony po uaktualnieniu Casper PoS. Ostatnio tam nastąpiły pewne zmiany dotyczące Ethereum 2.0 które obejmują implementację Caspera i shardingu.

Sharding został również zaimplementowany na kilku innych platformach, w szczególności Zilliqa. Jednak Zilliqa nie implementuje obecnie shardingu stanu i zamiast tego koncentruje się na zapewnieniu łańcucha bloków o wysokiej przepustowości poprzez wykorzystanie transakcji i fragmentacji obliczeniowej.

ZilliqaPrzeczytaj nasz przewodnik po Zilliqa

Wniosek

Sharding oferuje teraz kilka obiecujących rozwiązań dla słonia w pokoju platform blockchain, skalowalności.

Podczas gdy błyskawiczna sieć Bitcoin jest w fazie testów i jak dotąd wykazuje bardzo obiecujący postęp, rozwiązanie Ethereum niesie ze sobą pewne unikalne wyzwania, ponieważ jest postrzegane jako komputer świata, który jest kompletny w Turingu.

Sharding będzie działał bezpośrednio tylko na poziomie protokołu, więc dla użytkownika końcowego lub programisty dapp niekoniecznie musi być istotne poznanie.

Niezależnie od tego, próba Ethereum polegająca na podzieleniu na części stanu dla rozległej, zdecentralizowanej sieci jest imponującym przedsięwzięciem i będzie ogromnym osiągnięciem, jeśli zostanie pomyślnie wdrożona.

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