Co to jest fragmentacja? Wyjaśnienie koncepcji skalowania Ethereum

As debata na temat skalowania w kryptowalutach, 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ą Dowód stawki konsensus jest postrzegany jako bardzo potrzebny mechanizm, dzięki któremu sieć może skalować się do praktycznych poziomów dla aplikacji, zachowując jednocześnie swoją decentralizację i bezpieczeństwo.

Sharding to złożony temat, zwłaszcza w przypadku zdecentralizowanej sieci peer-to-peer takie jak Ethereum gdzie globalny stan sieci jest stale aktualizowany.

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

Wprowadzenie do dzielenia na fragmenty i przetwarzania rozproszonego

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

  • Zasadniczo sharding jest szczególną metodą partycjonowania poziomego danych w bazie danych.
  • Bardziej ogólnie, baza danych jest podzielona na małe kawałki zwane „odłamkami”, które po zsumowaniu 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.
  • 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.

Odłamywanie Ethereum

Używając Ethereum jako przykładu, pełny węzeł w Ethereum sieć przechowuje cały stan łańcucha bloków, w tym salda kont, pamięć masową i kod umowy.

Niestety, gdy sieć rozrasta się w tempie wykładniczym, konsensus rośnie tylko liniowo. To ograniczenie wynika z komunikacji potrzebnej między węzłami potrzebnej do osiągnięcia konsensusu.

Węzły w sieci nie mają specjalnych uprawnień, a 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 napięta. ten sieć jest tak szybki, jak poszczególne węzły, a nie suma jego części.

Sharding pomaga złagodzić te problemy, dostarczając ciekawego, ale złożonego rozwiązania. Koncepcja obejmuje grupowanie podzbiorów węzłów w fragmenty, które z kolei przetwarzają transakcje specyficzne dla tego fragmentu. Pozwala to systemowi na równoległe przetwarzanie wielu transakcji, co znacznie zwiększa przepustowość.

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

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

Albo jeszcze lepiej, w Vitalik Buterinwłasne słowa:

 „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 każdy należący do tej wyspy, tj. konta, może wchodzić ze sobą w interakcje 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 podzielenia sieci na bardziej wydajne części pozwala sieci funkcjonować jako suma jej części, a nie być ograniczona 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, ponieważ jest to najbardziej znane i żmudne próby shardingu na arenie blockchain, ponieważ programiści Ethereum wdrażają to, co jest znane jako „podział stanu".

Obecny stan blockchain Ethereum jest znany jako „stan globalny” i jest to, co każdy może zobaczyć, patrząc na blockchain w określonej instancji.

Trudną częścią implementacji shardingu w Ethereum jest to, ż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, jednocześnie zapewniając, że jest prawidłowy.

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

Ethereum rozbija sieć na określone fragmenty. Do każdego fragmentu przypisywana jest określona grupa transakcji, która jest określana przez grupowanie określonych kont (w tym inteligentnych kontraktów) we fragment. Każda grupa transakcji ma nagłówek i treść, które składają się z następujących elementów.

  • Identyfikator fragmentu grupy transakcji
  • Przeznaczenie walidatorów przez losowe pobieranie próbek (zweryfikuj transakcje w shard)
  • State Root (stan merkle root shardu 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.

Po weryfikacji transakcji zmienia się stan sieci i aktualizowane są salda kont, pamięć masowa itp. Aby grupa transakcji została zweryfikowana jako prawidłowa, katalog główny grupy transakcji stanu wstępnego musi być zgodny z katalogiem głównym fragmentu w stanie globalnym. Jeśli są zgodne, grupa transakcji jest weryfikowana, a stan globalny jest aktualizowany przez konkretny katalog główny stanu 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 jest katalogiem głównym wszystkich grup transakcji z określonych fragmentów dla tego bloku transakcji.

Zasadniczo istnieje merkle root 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 katalogiem głównym stanu.

Zastosowanie koncepcji drzewa merkle w tej strukturze ma kluczowe znaczenie dla zapewnienia ważności łańcucha bloków. Zrozumienie, w jaki sposób drzewo merkle a konkretnie praca z korzeniami merkle, może pomóc ci znacznie łatwiej zrozumieć te koncepcje.

Co to jest drzewo Merkle

Czytać: Co to jest drzewo Merkle?

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

Zapewnia to nie tylko ostateczność konsensusu, który jest niezbędny w odłamkach, ale także zapewnia szczególną obronę przed atakiem, który Blockchain dowodu pracy byłby podatny w tym przypadku.

Moc mieszania wymagana do przekroczenia określonego fragmentu w sieci z fragmentacją PoW jest drastycznie zmniejszona, a zdolność złośliwego aktora do przejęcia fragmentu przez moc obliczeniową jest możliwa.

Dzięki temu 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 shardingu. Losowy wybór walidatorów w ramach fragmentu pozwala na stłumienie tego typu ataku, ponieważ zły aktor nie będzie wiedział, w którym odłamku został umieszczony, zanim faktycznie zostanie w nim umieszczony.

Ponadto do wyboru walidatorów, które są: faktycznie walidacja z tego losowego zbioru walidacji.

Protokół komunikacyjny ma kluczowe znaczenie dla poprawnego działania architektury shardingowej w systemie. Możesz myśleć o protokole komunikacyjnym jako o uniwersalnym języku, który jest spójny wśród stanów będących częścią większych Stanów Zjednoczonych.

Jednak zaprojektowanie tego protokołu jest bardzo trudne i należy go wykonać 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 znana jako komunikacja cross-shard.

Komunikacja cross-shard realizowana jest poprzez zastosowanie koncepcji pokwitowań transakcji. Rachunek za transakcję jest przechowywany w merkle root, który można łatwo zweryfikować, ale który nie jest częścią stanu root.

Odłamek odbierający transakcję z innego odłamka sprawdza korzeń merkle, aby upewnić się, że paragon nie został wydany. Zasadniczo paragony są przechowywane w pamięci współdzielonej, która może być weryfikowana przez inne fragmenty, ale nie może być zmieniana. Dlatego poprzez rozproszone przechowywanie paragonów odłamki są w stanie komunikować się ze sobą.

Sharding Moving Forward

Oczekuje się, że sharding w Ethereum zostanie zaimplementowany po Casper Aktualizacja PoS. Ostatnio tam nastąpiły pewne zmiany dotyczące Ethereum 2.0 które wiążą się z wdrożeniem obu Casper i sharding.

Sharding został również zaimplementowany na kilku innych platformach, przede wszystkim Zilliqa. Jednak Zilliqa nie wdraża obecnie shardingu stanu, a zamiast tego koncentruje się na zapewnieniu łańcucha bloków o wysokiej przepustowości poprzez wykorzystanie shardingu transakcyjnego i obliczeniowego.

ZilliqaPrzeczytaj nasz Przewodnik po Zilliqa

Wnioski

Sharding służy obecnie oferowaniu obiecujących rozwiązań słoniowi w pokoju platform blockchain, skalowalności.

Podczas gdy błyskawiczna sieć Bitcoina znajduje się w fazie testów i jak dotąd wykazuje bardzo obiecujące postępy, rozwiązanie Ethereum niesie ze sobą kilka unikalnych wyzwań, ponieważ jest ustalone jako światowy komputer, który jest kompletny.

Sharding będzie działał bezpośrednio tylko na poziomie protokołu, więc dla użytkownika końcowego lub programisty dapp może nie być konieczne poznanie tego.

Niezależnie od tego, próba Ethereum shardingu stanu dla ogromnej, zdecentralizowanej sieci jest imponującym przedsięwzięciem i będzie ogromnym osiągnięciem, jeśli zostanie pomyślnie wdrożona.

Źródło: https://blockonomi.com/sharding/