Czyj jest i jak działa sharding?
Strona Główna
Artykuły
Czyj jest i jak działa sharding?

Czyj jest i jak działa sharding?

Średnio zaawansowany
Opublikowane Dec 4, 2023Zaktualizowane Jan 11, 2024
9m

TL;DR

  • Sharding to podział sieci blockchain na mniejsze tzw. shardy, czyli shardy, w celu rozwiązania problemu skalowalności związanego z sieciami warstwy pierwszej.

  • Sharding poprawia szybkość transakcji, minimalizuje koszty przetwarzania i przechowywania, a także zwiększa sprawność sieci.

  • Sharding ma potencjalne wady, np. problemy związane z bezpieczeństwem sieci i komplikacją transakcji między shardami.

Wprowadzenie

Technologia blockchain wnosi bezprecedensowy potencjał w zakresie decentralizacji, przejrzystości i bezpieczeństwa. Stoi jednak przed poważnym wyzwaniem: skalowalnością. Skalowalność jest jednym z elementów tzw. trylematu sieci blockchain, w którego skład wchodzi również bezpieczeństwo i decentralizacja. Osiągnięcie wszystkich trzech celów jednocześnie jest nieustającym problemem w świecie blockchain. W tym miejscu do gry wchodzą rozwiązania strategiczne, np. tzw. sharding.

Czym jest sharding?

Sharding to koncepcja zapożyczona z zarządzania tradycyjnymi bazami danych. Oznacza podział większej bazy danych na mniejsze części, zwane shardami, którymi łatwiej się zarządza. Jej zastosowanie w świecie blockchain ma na celu poprawę skalowalności przy jednoczesnym zachowaniu zasady decentralizacji. Zasadniczo sharding ma miejsce, kiedy sieć blockchain jest podzielona na mniejsze części, tzw. shards, z których każdy jest w stanie równolegle przetwarzać transakcje i smart kontrakty.

Jak działa sharding?

Aby zrozumieć sposób realizacji shardingu w sieci blockchain, trzeba zrozumieć, w jaki sposób zwykle odbywa się w niej zapis i przetwarzanie danych. Są różne sposoby przetwarzania danych. Zajmiemy się przetwarzaniem sekwencyjnym i równoległym.

Zazwyczaj każdy węzeł sieci blockchain odpowiada za obsługę całego wolumenu transakcji w sieci. Ten rodzaj przetwarzania danych powszechnie nazywa się przetwarzaniem sekwencyjnym. Oznacza to, że w każdym węźle muszą być trzymane i zapisane wszystkie krytyczne informacje, np. salda kont oraz historia transakcji. Zasadniczo każdy węzeł musi przetwarzać wszystkie operacje, dane i transakcje w sieci.

Wprawdzie taki model zwiększa bezpieczeństwo sieci blockchain poprzez rejestrowanie każdej transakcji na wszystkich węzłach, ale radykalnie spowalnia przetwarzanie danych. W tym miejscu do gry wkracza równoległe przetwarzanie danych, które umożliwia jednoczesne wykonywanie wielu operacji.

Sharding może być skutecznym rozwiązaniem tej trudnej sytuacji, ponieważ polega na podziale lub tzw. partycjonowaniu obciążenia transakcyjnego w sieci blockchain. Oznacza to, że nie wszystkie węzły muszą zarządzać całym obciążeniem sieci blockchain lub je przetwarzać.

Sharding segreguje bowiem obciążenie poprzez partycjonowanie poziome. Polega to na podziale danych na podzbiory poziome, a każdy z nich pełni rolę niezależnej bazy danych zdolnej do przetwarzania transakcji oddzielnie od pozostałych. 

Partycjonowanie poziome a pionowe

Partycjonowanie poziome i pionowe to dwie najważniejsze metody skalowania baz danych. Wprawdzie obie mają służyć do sprawniejszego zarządzania dużymi zbiorami danych, ale działają w zasadniczo odmienny sposób. Sharding jest powszechną metodą wdrażania partycjonowania poziomego.

W przypadku partycjonowania poziomego ma miejsce podział danych na wiersze oraz ich rozmieszczenie na różnych węzłach (lub bazach danych), z których każdy zawiera pewien podzbiór danych. Każdy wiersz w tabeli jest niepowtarzalną jednostką, więc ich oddzielenie nie prowadzi do utraty spójności danych. Dobitnym przykładem zastosowania partycjonowania poziomego jest rozproszenie sieci blockchain, np. Ethereum i Bitcoin.

W przypadku partycjonowania pionowego ma miejsce podział na kolumny, a nie na wiersze. Każda partycja w partycjonowaniu pionowym zawiera podzbiór danych przypadających na każdą jednostkę lub cały zestaw danych, ale tylko do określonego zestawu atrybutów. Rozważmy np. tabelę klientów z kolumnami – np. imię i nazwisko, status, opis oraz zdjęcie. W scenariuszu partycjonowania pionowego pola „Nazwa” i „Status” mogą być zapisane w jednej tabeli, a „Opis” i „Zdjęcie” w innej.

Dlaczego partycjonowanie poziome jest preferowane?

Partycjonowanie poziome jest ogólnie rzecz biorąc preferowane nad partycjonowaniem pionowym w sieciach blockchain z trzech głównych powodów: skalowalności, decentralizacji i bezpieczeństwa.

Skalowalność: Sharding zapewnia rozwiązanie polegające na dzieleniu danych na mniejsze „shardy”, którymi łatwiej się zarządza. Każdy shard może działać niezależnie, co umożliwia jednoczesne przetwarzanie większej liczby transakcji i poprawia szybkość oraz wydajność sieci. Natomiast w przypadku partycjonowania pionowego rozmieszczenie kolumn w różnych bazach danych może oznaczać większe komplikacje w przypadku pobierania pełnych informacji o transakcji lub bloku i ograniczać skalowalność.

Decentralizacja: Zgodnie z podstawowym etosem technologii blockchain partycjonowanie poziome sprzyja decentralizacji. Kiedy węzły muszą przetwarzać tylko część całości danych (shard), daje to możliwość uczestnictwa w sieci większej liczbie węzłów, ponieważ zmniejszają się obciążenia związane z obliczeniami i zapisem. Dla porównania partycjonowanie pionowe byłoby tu ograniczeniem, ponieważ każdy węzeł musiałby mieć dostęp do wszystkich partycji (wszystkich kolumn danych), aby zrozumieć i zweryfikować pełne dane bloku.

Bezpieczeństwo i spójność danych: Partycjonowanie poziome zapewnia utrzymanie spójności danych, ponieważ każdy shard (lub partycja) zawiera pełne dane transakcji, co daje pewność, że każdy węzeł będzie mieć pełną, dokładną kopię swojej części sieci blockchain. W przypadku partycjonowania pionowego podział danych przebiega zasadniczo przez różne węzły i utrudnia zapewnienie spójności oraz bezpieczeństwa danych, co jest nadrzędnym aspektem sieci blockchain.

Jakie są zalety shardingu?

Przyjrzyjmy się potencjalnym korzyściom, jakie sharding wnosi do technologii blockchain:

Zwiększenie szybkości transakcji: Sharding koordynuje równoległe przetwarzanie transakcji. Sharding umożliwia przetwarzanie transakcji jednocześnie, ale na różnych shardach, zamiast sekwencyjnie, jedna po drugiej. Każdy shard działa niezależnie, co znacznie zwiększa szybkość transakcji. To nie tylko przyspiesza transakcje, ale oznacza również, że cała sieć jest w stanie obsłużyć więcej użytkowników, co sprzyja masowemu upowszechnieniu.

Przykładem istniejącej sieci blockchain, która rozwiązuje problem skalowalności przy użyciu shardów, jest Ziliqa. Mechanizm shardingu w sieci Ziliqa umożliwia osiąganie tysięcy transakcji na sekundę.

Ograniczenie kosztów przetwarzania i przechowywania danych: Konwencjonalna konstrukcja sieci blockchain zobowiązuje każdy węzeł do przechowywania wszystkich transakcji, co zwiększa zapotrzebowanie na sprzęt w miarę rozrostu sieci blockchain. Jednak w przypadku shardingu każdy węzeł odpowiada za przetwarzanie i przechowywanie zaledwie ułamka danych całej sieci – zmniejsza to zasoby potrzebne węzłowi do uczestnictwa w sieci.

W związku z tym więcej uczestników może dołączać w charakterze walidatorów, co zwiększa decentralizację sieci bez ponoszenia wygórowanych kosztów. Trudność, która polega na tym, że tylko podmioty dysponujące wysokiej klasy drogimi zasobami obliczeniowymi mogą realnie uczestniczyć w procesie, ulega zmniejszeniu przy jednoczesnym zachowaniu zdemokratyzowanego charakteru sieci blockchain.

Większa sprawność sieci: Sharding może pomóc w poprawie ogólnej sprawności i wydajności sieci. W tradycyjnych sieciach blockchain wraz ze wzrostem liczby węzłów uczestniczących w sieci wydajność paradoksalnie spada ze względu na konieczność większej komunikacji i synchronizacji danych między węzłami.

Jednak sharding zmienia ten scenariusz. Ponieważ każdy shard działa oddzielnie i współbieżnie, system jest w stanie przetwarzać więcej transakcji i obliczeń. Kiedy dochodzi nowy węzeł, można go dodać do sharda zamiast do całej sieci, co zwiększa zdolność sieci do skalowania. Poprawia się wydajność, a to upłynnia transakcje i poprawia wygodę użytkowania.

Należy pamiętać, że przyszłe postępy i ulepszenia technologii shardingu mogą przynieść inne korzyści lub rozszerzyć te istniejące, co będzie prowadzić do stałego ulepszania ekosystemu blockchain.

Jakie są ograniczenia shardingu?

Chociaż sharding ma kilka potencjalnych zalet, które mogą ułatwić zwiększenie sprawności sieci blockchain, wnosi również szereg specyficznych trudności. Oto kilka potencjalnych luk w zabezpieczeniach, jakie wnosi sharding: 

Ataki polegające na przejęciu jednego sharda: W warunkach shardingu moc obliczeniowa potrzebna do przejęcia pojedynczego sharda jest znacznie mniejsza niż moc konieczna do przejęcia kontroli nad całą siecią. Oznacza to, że te pojedyncze shardy są bardziej podatne na tzw. atak jednoprocentowy, czyli przejęcie sharda – przy czym potencjalnie może dojść do przejęcia pojedynczego sharda przez podmiot atakujący, który dysponuje niewielką ilością zasobów w porównaniu z całą siecią.

Transakcje cross-shard: Transakcje odbywające się pomiędzy różnymi shardami (cross-shard) stanowią wyjątkową trudność. Transakcje cross-shard są złożone i przy nieuważnym zarządzaniu mogą potencjalnie prowadzić do podwójnego wydatkowania. Jeżeli jeden shard nie będzie dokładnie odwzorowywać stanu drugiego podczas transakcji, użytkownicy mogą to wykorzystać do tzw. podwójnego wydatkowania.

Problemy z dostępnością danych: Z uwagi na sharding utrzymanie całego stanu sieci staje się zadaniem skomplikowanym. Jeżeli niektóre shardy nie będą dostępne kiedy trzeba (ponieważ węzły utrzymujące te shardy będą w trybie offline), może to prowadzić do problemów z dostępnością danych i zakłóceń działania całej sieci.

Bezpieczeństwo sieci: Sharding wymaga wdrożenia solidnego protokołu, który równoważy obciążenie pomiędzy shardami. Nieprawidłowe wdrożenie może prowadzić do nierównomiernego rozmieszczenia danych lub braku równowagi zasobów, a potencjalnie do niestabilności sieci.

Synchronizacja węzłów: Synchronizacja węzłów może powodować opóźnienia w sieci ze względu na czas potrzebny na udostępnianie i aktualizowanie informacji w różnych węzłach. Co więcej, jeżeli węzeł z wolniejszymi możliwościami w zakresie przetwarzania lub połączeniem sieciowym pozostaje w tyle, może to spowolnić cały proces synchronizacji i zmniejszyć ogólną wydajność sieci blockchain.

Czy sharding jest zaimplementowany w sieci Ethereum?

Ethereum ma w planach wdrożenie shardingu w ramach aktualizacji Ethereum 2.0. Aktualizacja Ethereum 2.0, zwana również Eth2 lub Serenity, to aktualizacja sieci blockchain Ethereum, która ma zwiększyć szybkość, sprawność i skalowalność sieci, co umożliwi przetwarzanie większej liczby transakcji i zmniejszenie zatorów.

Obecnie aktualizacja jest wdrażana etapami, a ostatnia faza (Faza 2) obejmuje pełne wdrożenie shardingu. Deweloperzy Ethereum mają nadzieję, że te ulepszenia rozwiążą część bieżących trudności związanych ze skalowalnością i kosztami transakcji, w obliczu których stoi sieć.

Należy jednak zauważyć, że wdrożenie shardingu to oddzielny zbiór problemów, szczególnie w zakresie utrzymania bezpieczeństwa i decentralizacji sieci. Dlatego też deweloperzy Ethereum intensywnie myślą nad tą zmianą i prowadzą testy, aby mieć pewność, że po pełnym wdrożeniu aktualizacja będzie udana.

Wnioski Końcowe

Ogólnie rzecz biorąc, sharding stanowi godny uwagi krok w kierunku rozwiązania trylematu technologii blockchain. Choć wprowadza nowe komplikacje i możliwe wady, szansa, że zwiększy skalowalność bez uszczerbku dla decentralizacji jest wielką nadzieją na przyszłość sieci blockchain.

Nic dziwnego, że różne sieci blockchain rozważają sharding jako potencjalne rozwiązanie. Technologia shardingu wchodzi w skład aktualizacji Ethereum 2.0 i ma rozwiązać problemy związane ze skalowalnością. Według przewidywań wdrożenie to nastąpi w ramach aktualizacji Cancun, która jest kluczowym elementem ogólnego planu ulepszeń. Niemniej jednak – podobnie jak w przypadku każdej innej rozwijającej się technologii – sukces będzie zależał od ciągłych badań, rozwoju i rygorystycznych testów wdrożeniowych shardingu.

Dalsza Lektura

Wyłączenie odpowiedzialności: Niniejsza treść jest prezentowana użytkownikowi bez rękojmi, wyłącznie w celach ogólnoinformacyjnych i edukacyjnych, bez jakichkolwiek gwarancji. Nie należy jej interpretować jako porady finansowej, prawnej ani innego rodzaju porady specjalistycznej. Nie ma ona również charakteru zachęty do zakupu jakiegokolwiek konkretnego produktu ani usługi. Użytkownik powinien zasięgnąć własnej porady u odpowiednich zawodowych doradców. Jeżeli artykuł jest napisany przez osobę z zewnątrz, należy pamiętać, że wyrażone poglądy są poglądami tej osoby i nie muszą odzwierciedlać poglądów Akademii Binance. Więcej informacji można znaleźć w naszym pełnym wyłączeniu odpowiedzialności tutaj. Ceny aktywów cyfrowych bywają zmienne. Możliwe, że wartość Twojej inwestycji spadnie lub wzrośnie i nie odzyskasz zainwestowanej kwoty. Ponosisz wyłączną odpowiedzialność za swoje decyzje inwestycyjne, a Akademia Binance nie ponosi odpowiedzialności za ewentualne straty. Niniejszego materiału nie należy interpretować jako porady z zakresu finansów, prawa ani innej dziedziny. Aby uzyskać więcej informacji, zapoznaj się z naszymi Warunkami Użytkowania i Ostrzeżeniem o Ryzyku.