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 鈥濶azwa鈥 i 鈥濻tatus鈥 mog膮 by膰 zapisane w jednej tabeli, a 鈥濷pis鈥 i 鈥瀂dj臋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 鈥瀞hardy鈥, 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.