Wstęp

Skalowalność oznacza zdolność systemu do ewolucji w celu zaspokojenia rosnącego zapotrzebowania. W informatyce możesz poprawić wydajność swojego sprzętu, modernizując jego sprzęt, aby szybciej wykonywać określone zadania. Kiedy mówimy o skalowalności w blockchainach, mówimy o ich zdolności do obsługi większej liczby transakcji.

Protokoły takie jak Bitcoin mają wiele zalet, ale skalowalność nie jest jedną z nich. Jeśli Bitcoin miałby działać w scentralizowanej bazie danych, administratorowi stosunkowo łatwo byłoby zwiększyć szybkość i przepustowość transakcji, ale propozycja wartości Bitcoina (tj. odporność na cenzurę) wymaga od wielu uczestników sieci ciągłej synchronizacji kopii sieci blockchain.


Problem skalowania sieci blockchain

Uruchomienie węzła Bitcoin jest stosunkowo tanie i można to zrobić nawet na słabych technicznie urządzeniach. Ponieważ jednak tysiące węzłów muszą być świadome swoich działań, istnieją pewne ograniczenia dotyczące ich przepustowości. 

Wprowadzono limity na liczbę transakcji, które można przetworzyć w sieci, a wszystko po to, aby baza danych nie rozrosła się szybko do gigantycznych rozmiarów. Jeśli stanie się zbyt duży i szybki, węzły nie będą mogły szybko ze sobą współdziałać. Co więcej, jeśli bloki są zbyt duże, nie będzie można ich szybko przesłać w sieci.

Rezultatem jest złożona sytuacja z wąsko ukierunkowanymi rozwiązaniami. Blockchain można traktować jako pociąg odjeżdżający według dokładnego harmonogramu. Liczba miejsc w każdym wagonie jest ograniczona i aby otrzymać bilet, pasażerowie muszą złożyć określoną ofertę i zarezerwować miejsce. Jeśli wszyscy spróbują wejść do pociągu w tym samym czasie, cena miejsca gwałtownie wzrośnie. To samo dotyczy sieci zapchanej transakcjami oczekującymi, w przypadku której użytkownicy muszą uiścić wyższą opłatę, aby ich transakcja została dodana do przetwarzania w odpowiednim czasie.

Jednym z rozwiązań byłoby zwiększenie rozmiarów wagonów. Zapewni to więcej miejsc, większą pojemność i niższe ceny biletów. Nie ma jednak gwarancji, że miejsca nie zaczną się zapełniać tak, jak miało to miejsce wcześniej. Nie można ich stale rozszerzać, tak jak bloków lub limitów gazu w bloku, których po prostu nie można skalować w nieskończoność. To drugie sprawia, że ​​utrzymanie węzłów jest jeszcze droższe, gdyż ich właściciele będą potrzebować droższego sprzętu do synchronizacji z blockchainem.

Twórca Ethereum, Vitalik Buterin, ukuł trylemat skalowalności, aby opisać problem, przed którym stoją łańcuchy bloków. Teoretyzuje, że protokoły muszą zawierać kompromisy między skalowalnością, bezpieczeństwem i decentralizacją. Właściwości te są ze sobą nieco sprzeczne, choć skupiają się głównie na dwóch właściwościach, trzecia zostaje pominięta.

Z tego powodu wielu postrzega skalowalność jako coś, co należy osiągnąć poza łańcuchem, podczas gdy bezpieczeństwo i decentralizacja muszą być maksymalizowane w podstawowym łańcuchu bloków.


Co to jest skalowanie poza łańcuchem?

Skalowanie poza łańcuchem odnosi się do metod, które umożliwiają przeprowadzanie transakcji bez zwiększania liczby bloków w łańcuchu bloków. Protokoły łączące się z łańcuchem umożliwiają użytkownikom wysyłanie i odbieranie środków bez pojawiania się transakcji w głównym łańcuchu. Przyjrzymy się dwóm najbardziej znanym rozwiązaniom w tym kierunku: sidechainom i kanałom płatności.


Wprowadzenie do łańcuchów bocznych

Co to jest łańcuch boczny?

Sidechain, side chain (z ang. sidechain) to odrębny blockchain. Nie jest to jednak samodzielna platforma, ponieważ ma pewne połączenie z głównym łańcuchem. Mainchain i sidechain są interoperacyjne, co z kolei oznacza, że ​​zasoby mogą swobodnie przemieszczać się z jednego łańcucha do drugiego.

Sposobów na zapewnienie tzw. przeniesienia środków jest kilka. W niektórych przypadkach aktywa są przenoszone z głównego łańcucha poprzez wysyłanie monet na specjalny adres. W rzeczywistości nie są one nigdzie wysyłane; zamiast tego monety te są blokowane na adresie nadawcy, a odpowiednia kwota jest przydzielana w sidechainie. Prostszą (aczkolwiek scentralizowaną) opcją jest przesłanie waluty do uczestnika odpowiedzialnego za przechowywanie i dystrybucję środków, którego zadaniem jest wymiana waluty pomiędzy sieciami.


Jak to działa?

Załóżmy, że nasza przyjaciółka Alicja ma pięć bitcoinów. Chce je wymienić na pięć równoważnych jednostek w sidechainie Bitcoina, nazwijmy je sidecoinami. Docelowy łańcuch boczny wykorzystuje kołek dwukierunkowy, co oznacza, że ​​użytkownicy mogą przenosić swoje zasoby z łańcucha głównego do łańcucha bocznego i odwrotnie.

Pamiętaj, że sidechain lub sidechain to odrębny łańcuch bloków. Zatem jego bloki, węzły i mechanizmy walidacji będą się różnić od głównego łańcucha. Aby otrzymać sidecoiny, Alicja wysłała pięć bitcoinów na inny adres. Może należeć do kogoś, kto po otrzymaniu płatności przekaże jej adresowi sidechain pięć sidecoinów. Alternatywnie może mieć jakąś konfigurację minimalnego zaufania, w której sidecoiny są automatycznie dodawane, gdy oprogramowanie wykryje płatność.


Sidechain scaling


Gdy Alicja zamieni swoje monety na sidecoiny, może w dowolnym momencie odwrócić ten proces. Teraz, kiedy już weszła do sidechaina, może swobodnie wykonywać transakcje na sidechainie. Alice może wysyłać i odbierać sidecoiny od innych użytkowników, tak jak w głównym łańcuchu.

Na przykład mogłaby zapłacić Bobowi jednego sidecoina za bluzę Binance. Kiedy będzie chciała wrócić do Bitcoina, będzie musiała wysłać pozostałe cztery sidecoiny na specjalny adres. Po potwierdzeniu transakcji cztery bitcoiny zostaną odblokowane i dostarczone pod kontrolowany przez nią adres w głównym łańcuchu.


Do czego służą łańcuchy boczne?

Być może zastanawiasz się, jaki jest w tym sens? Dlaczego nie możemy po prostu użyć łańcucha bloków Bitcoin?

Odpowiedź jest taka, że ​​sidechain może robić rzeczy, których Bitcoin nie może zrobić. Blockchainy to starannie zaprojektowane systemy kompromisów. Chociaż Bitcoin jest najbezpieczniejszą i zdecentralizowaną kryptowalutą, nie jest najlepszy pod względem przepustowości. Chociaż transakcje Bitcoin są szybsze niż tradycyjne, nadal są stosunkowo powolne w porównaniu do innych systemów blockchain. Bloki wydobywane są co dziesięć minut, a opłaty mogą znacznie wzrosnąć, gdy sieć jest przeciążona.

Oczywiście drobne, codzienne płatności nie wymagają takiego poziomu bezpieczeństwa. Jeśli Alicja kupi kawę, nie będzie miała najmniejszej ochoty stać i czekać na potwierdzenie transakcji. Ona utrzyma kolejkę, a poza tym jej drink wystygnie, zanim dotrze.

Łańcuchy boczne nie są powiązane tym samym zestawem reguł. W rzeczywistości nie muszą nawet używać algorytmu Proof of Work, aby działać. Takie systemy mogą korzystać z dowolnego mechanizmu konsensusu, ufając jednemu walidatorowi, lub tworzyć konkretny zestaw ustawień z dowolną liczbą parametrów. Mają także dostęp do przeprowadzania aktualizacji, które nie istnieją w głównym łańcuchu, tworzenia większych bloków i zwiększania szybkości rozliczeń pieniężnych.

Ciekawostką jest to, że w przypadku wystąpienia błędów krytycznych łańcuchy boczne mogą działać bez wpływu na łańcuch główny. Dzięki temu można je wykorzystywać jako platformy do przeprowadzania różnych eksperymentów i wdrażania nowych funkcji, które w innym przypadku wymagałyby konsensusu większości uczestników sieci.

Pod warunkiem, że użytkownicy czują się komfortowo w obliczu kompromisów sieciowych, łańcuchy boczne mogą stanowić integralny krok w kierunku wydajnego skalowania. Węzły łańcucha głównego nie muszą przechowywać każdej transakcji z łańcucha bocznego. Alicja może wejść do sidechainu za pomocą jednej transakcji w sieci Bitcoin i wykonać sto różnych transakcji przy użyciu sidecoinów, a następnie opuścić sidechain. Oznacza to, że w łańcuchu bloków Bitcoin wykona tylko dwie transakcje – jedną dla wejścia i jedną dla wyjścia.

Ethereum Plasma ma podobne cechy do podobnego rozwiązania, jednak istnieje między nimi wiele różnic. Więcej szczegółów znajdziesz w artykule: „Co to jest Ethereum Plasma?”


Wprowadzenie do kanałów płatności

Co to jest kanał płatności?

Kanały płatności służą temu samemu celowi, co sidechains, ale różnią się zasadniczo. Podobnie jak łańcuchy boczne, przenoszą transakcje z głównego łańcucha, aby zapobiec rozdęciu łańcucha bloków, ale w przeciwieństwie do łańcuchów bocznych to rozwiązanie nie wymaga osobnego łańcucha bloków.

Kanał płatności korzysta z inteligentnej umowy, która umożliwia użytkownikom dokonywanie transakcji bez publikowania ich na blockchainie. Osiąga się to poprzez umowę programową pomiędzy dwoma uczestnikami.


Jak to działa?

W modelach takich jak popularna Lightning Network dwie strony najpierw wpłacają monetę na wspólny adres. Jest to specjalny adres z wieloma podpisami, na który można wydać środki tylko w przypadku obecności dwóch podpisów. Zatem jeśli Alicja i Bob utworzyli taki adres, wówczas środki można przelać jedynie za zgodą obu stron.

Załóżmy, że każdy z nich wpłaca 10 BTC na adres docelowy, po czym saldo portfela wyniesie 20 BTC. Na blockchainie dość łatwo jest sprawdzić ich początkowe saldo, co może potwierdzić każdemu, że Alicja i Bob mają po 10 BTC. Jeśli Alicja daje Bobowi jedną monetę, może ją zaktualizować, aby zrozumieć – Alicja ma 9 BTC, Bob ma 11 BTC. Nie będą musieli publikować danych w łańcuchu bloków, ponieważ ogólne saldo adresu pozostanie takie samo.


how a payment channel works


Może jednak nadejść czas, kiedy Alicja będzie miała 5 BTC, a Bob będzie miał 15 BTC. Mogą łatwo utworzyć transakcję, która po podpisaniu i przesłaniu transakcji do sieci przekaże prawidłowe salda na ich osobiste adresy.

Alicja i Bob mogą mieć w swoim bilansie dziesięć, sto lub tysiąc transakcji. Ale jeśli chodzi o blockchain, dokonali oni w łańcuchu tylko dwóch transakcji: jednej w ramach początkowego depozytu i jednej po ostatecznym rozdzieleniu środków między sobą. Oprócz tych dwóch wszystkie pozostałe transakcje są bezpłatne i niemal natychmiastowe, ponieważ mają miejsce poza łańcuchem. Jednocześnie Alicja i Bob nie płacili górnikom i nie czekali na potwierdzenie transakcji w blokach.

Powyższy przykład wymaga jednak współpracy obu stron, co nie jest sytuacją idealną dla obcych osób. Jednak za pomocą specjalnych mechanizmów wszelkie oszukańcze działania zostaną zarejestrowane, a sprawca naruszenia zostanie ukarany, dzięki czemu strony będą mogły spokojnie i co najważniejsze bezpiecznie współdziałać, nie ufając sobie nawzajem. 


Kierowanie płatności

Oczywiście kanały płatności są wygodne dla dwóch stron, które chcą wymienić dużą liczbę transakcji, ale za pomocą routingu płatności ich funkcje stają się jeszcze lepsze. Załóżmy, że sieć tych kanałów może się rozwijać, co oznacza, że ​​Alicja może płacić podmiotowi, z którym nie jest bezpośrednio połączona. Jeśli Bob ma otwarty kanał z Carol, Alicja może przekazać jej środki, pod warunkiem, że są wystarczające środki. Aby to zrobić, przekazuje monety Bobowi, który z kolei przekazuje je Carol. Jeśli Carol jest połączona z innym uczestnikiem, na przykład Danem, może zrobić to samo.

Taka sieć ewoluuje w kierunku rozproszonej topologii sieci, która łączy się z kilkoma urządzeniami równoczesnymi. W takiej sieci często będzie kilka tras do miejsca docelowego, a użytkownicy będą mogli wybrać tę najbardziej odpowiednią i efektywną. 


Wniosek

Omówiliśmy dwa podejścia do skalowalności, które umożliwiają przeprowadzanie transakcji bez obciążania bazowego łańcucha bloków. Zarówno sidechains, jak i technologia kanałów płatności nie są jeszcze dojrzałe, jednak coraz częściej korzystają z nich użytkownicy chcący ominąć wady transakcji na poziomie podstawowym.

W miarę upływu czasu i coraz większej liczby użytkowników dołączających do sieci, niezwykle ważne jest utrzymanie jej decentralizacji. Można to osiągnąć jedynie poprzez nałożenie ograniczeń na rozwój łańcucha bloków, aby nowe węzły mogły łatwo przyłączać się. Zwolennicy rozwiązań w zakresie skalowalności poza łańcuchem uważają, że z biegiem czasu główny blockchain będzie używany wyłącznie do rozliczania dużych transakcji finansowych lub do łączenia przychodzących/wychodzących sidechainów oraz kanałów otwierania/zamykania.