Skalowalność Blockchainów - Sidechainy i Kanały Płatności
HomeArticles

Skalowalność Blockchainów - Sidechainy i Kanały Płatności

Zaawansowany
4d ago
8m

Spis treści


Wprowadzenie

Pojęcie skalowalność odnosi się do zdolności wzrostu danego systemu, w celu zaspokojenia rosnącego popytu bądź zwiększającej się liczby użytkowników. Na przykład przeprowadzając obliczenia, jesteś w stanie zwiększyć wydajność swojego komputera, poprzez modernizację sprzętu. Wykonywanie niektórych zadań stanie się szybsze. Kiedy zaś odnosimy się do skalowalności blockchainów, mamy na myśli ich zdolność do obsługi większej liczby transakcji na sekundę.

Protokoły takie jak Bitcoin mają wiele mocnych stron, lecz skalowalność nie jest jedną z nich. Gdyby Bitcoin działał w oparciu o scentralizowaną bazę danych, administratorowi byłoby stosunkowo łatwo zwiększyć jej szybkość i przepustowość. Ale propozycja wartości Bitcoina (tj. odporność na cenzurę) wymaga, żeby wielu użytkowników zsynchronizowało swoje kopie blockchainu.


Problem skalowalności blockchainu

Uruchomienie węzła Bitcoina jest stosunkowo proste, a dodatkowo jesteśmy w stanie to zrobić na tanim sprzęcie. Niemniej, ponieważ tysiące węzłów muszą aktualizować i synchronizować się ze sobą w czasie rzeczywistym, istnieją ograniczenia ich przepustowości. 

Ograniczenia nałożone zostały na liczbę transakcji, które może w danym momencie przetworzyć łańcuch bloków kryptowaluty, aby nie dopuścić do lawinowego wzrostu blockchainu. Jeśli zbyt szybko stanie się zbyt duży, węzły nie będą w stanie nadążyć z synchronizacją. Co więcej, jeśli bloki są zbyt wielkie, propagowanie ich w sieci staje się nieefektywne.

W rezultacie może się wydawać, że znajdujemy się w sytuacji bez wyjścia. Ciekawą analogią blockchainu jest wyobrażenie go sobie jako pociągu, który odjeżdża w określonych odstępach czasowych. W każdym z wagonów znajduje się tylko ograniczona liczba miejsc. Jeśli pragniemy uzyskać bilet, wraz z innymi podróżnymi musimy wziąć udział w licytacji, aby wykupić jedno z dostępnych miejsc. Jeśli wszyscy będą chcieli wsiąść do pociągu w tym samym czasie, cena drastycznie wzrośnie. Podobnie sieć Bitcoina zapchana transakcjami będzie wymagać od użytkowników uiszczenia wyższych opłat, aby ich transakcje zostały uwzględnione przez górników jak najszybciej.

Jednym z rozwiązań byłoby dodanie kolejnych wagonów do pociągu. Oznaczałoby to więcej miejsc, wyższą przepustowość i niższe ceny biletów. Ale nie ma gwarancji, że nowe miejsca nie zapełnią się tak, jak kiedyś. Wagonów nie można stale poszerzać, tak samo jak bloki i opłaty sieciowe nie mogą być skalowane w nieskończoność. Ten ostatni fakt sprawia, że posiadanie pełnych węzłów w sieciach kryptowalut stałoby się kosztowne.

Twórca Ethereum, Vitalik Buterin, stworzył abstrakcyjny koncept określany jako Trylogię Skalowalności , aby zobrazować wyzwania, stojące przed systemami opartymi o blockchain. W swoim modelu Buterin teoretyzuje, że protokoły muszą iść na kompromis między skalowalnością, bezpieczeństwem i decentralizacją. Są to, w pewnym stopniu, sprzeczne ze sobą cechy - zbyt duże skupienie na dwóch właściwościach spowoduje, że trzecia będzie słabła.

Z tego powodu wielu postrzega skalowalność jako coś, co można osiągnąć rozwiązaniami off-chain (systemami "dodatkowymi", nie będącymi bezpośrednio opartymi o dany blockchain, lecz pomagającymi mu), podczas gdy bezpieczeństwo i decentralizacja powinny być maksymalizowane na samym blockchainie (z ang. first layer).


Czym są rozwiązania off-chain w zakresie skalowalności?

Skalowanie off-chain polega na przekierowaniu części transakcji poza główny łańcuch bloków - możemy to zrobić stosunkowo bezpiecznie, na przykład z mikrotransakcjami. Protokoły, które podłączają się do głównego blockchainu, pozwalają użytkownikom wysyłać i odbierać środki, bez zawierania transakcji w głównym łańcuchu (mniejsze transakcje zbiera się w grupy). Teraz omówimy dwie z najbardziej znaczących technologii mających to umożliwić: sidechainy oraz kanały płatności.


Wprowadzenie do sidechainów

Czym jest sidechain?

Sidechain to po prostu dodatkowy blockchain (łańcuch boczny). Nie działa on jednak w pełni samodzielnie, ponieważ jest zawsze w pewnym stopniu połączony z nadrzędnym blockchainem. Łańcuch główny i boczny są interoperacyjne, co oznacza swobodny przepływ zasobów cyfrowych między jednym a drugim.

Istnieje wiele sposobów na przeniesienie środków z blockchainu na sidechain. W niektórych przypadkach aktywa przenoszone są z głównego łańcucha poprzez zdeponowanie ich na specjalnym adresie. Nie są tak naprawdę wysyłane - zamiast tego blokuje się je na danym adresie, w zamian za co sieć sidechainu "wydaje" Tobie adekwatną ilość środków, które dowolnie możesz wykorzystywać w jej obrębie. Bardziej bezpośrednią (aczkolwiek scentralizowaną opcją) jest wysyłanie środków do powiernika, który później wymienia depozyt na środki w sidechainie.


Jak dokładnie działa sidechain?

Załóżmy, że nasza przyjaciółka Alice posiada pięć bitcoinów. Chce wymienić je na pięć równoważnych jednostek w łańcuchu bocznym Bitcoina – nazwijmy je sidecoins'ami. Łańcuch boczny, o którym mowa, używa dwukierunkowego peg, co oznacza, że użytkownicy mogą przenosić swoje zasoby z łańcucha głównego do łańcucha bocznego i odwrotnie. 

Pamiętaj, że sidechainy to blockchain. Będzie więc miał różne bloki, węzły i odmienny mechanizm konsensusu. Jeśli Alice chce pozyskać "sidecoins", musi wysłać swoje 5 bitcoinów na inny adres. Może być on własnością osoby, która po otrzymaniu bitcoinów przypisze jej adresowi w sidechainie pięć sidecoinów. Alternatywnie, zamiast polegać na czynnikowi ludzkiemu, możliwe jest stworzenie oprogramowania minimalizującego potrzebę powierzania komukolwiek zaufania. Taki software przyznawałby sidecoiny automatycznie, po tym jak Alice wyśle na dany adres swoje bitcoiny.


Sidechain scaling


Alice przekształciła teraz swoje bitcoiny w coiny na sidechainie, jednak w każdym momencie jest w stanie odwrócić ten proces. Teraz, gdy weszła już w łańcuch boczny, może śmiało dokonywać transakcji na tym oddzielnym łańcuchu bloków. Może wysyłać sidecoiny lub odbierać je od innych, tak jak w głównym blockchainie.

Alice mogłaby na przykład zapłacić Bobowi jednym sidecoinem za bluzę Binance. Gdy będzie chciała powrócić do sieci Bitcoin, może wysłać pozostałe cztery monety boczne na specjalny adres. Po potwierdzeniu transakcji cztery bitcoiny zostaną odblokowane i dostarczone na adres, który Alice kontroluje w głównym łańcuchu bloków.


Po co wykorzystuje się sidechainy?

Możesz się słusznie zastanawiać, o co w tym wszystkim chodzi. Dlaczego Alice nie użyje po prostu łańcucha bloków Bitcoina?

Odpowiedź brzmi następująco: sidechain może być zdolny do rzeczy, których Bitcoin nie jest w stanie wykonać. Blockchain to starannie opracowane systemy kompromisów. Chociaż Bitcoin jest najbezpieczniejszą i zdecentralizowaną kryptowalutą, nie jest najlepszy pod względem przepustowości. Chociaż transakcje bitcoinami są szybsze niż konwencjonalne metody transferów zagranicznych, wciąż są stosunkowo wolne, w porównaniu z innymi blockchainami. Bloki Bitcoina wydobywa się co dziesięć minut, a opłaty mogą znacznie wzrosnąć, gdy sieć jest przepełniona.

Trzeba przyznać, że ten poziom bezpieczeństwa prawdopodobnie nie jest potrzebny w przypadku drobnych, codziennych płatności. Jeśli Alice płaci za kawę, nie będzie czekać godziny na potwierdzenie transakcji. Zajmowałaby kolejkę, a jej kawa już dawno wystygła.

Sidechainy nie podlegają tym samym regułom. W rzeczywistości nie muszą nawet używać Proof of Work, aby funkcjonować. Możesz użyć dowolnego mechanizmu konsensusu, zaufać pojedynczemu walidatorowi lub dostosować dowolną liczbę parametrów. Jesteś w stanie dodać ulepszenia, które nie istnieją w głównym łańcuchu, produkować większe bloki i wymuszać szybkie rozliczenia transakcji.

Co ciekawe, łańcuch boczny może doświadczyć krytycznych problemów i mimo tego nie zaszkodzić w żadnym stopniu głównemu blockchainowi. Dzięki temu możemy wykorzystywać sidechainy jako platformy do eksperymentów i wdrażania funkcji, które w innym przypadku wymagałyby konsensusu od większości sieci.

Pod warunkiem, że użytkownicy są zadowoleni z kompromisów, łańcuchy boczne mogą stanowić integralny krok w kierunku skutecznego skalowania. Nie jest wymagane, aby węzły w łańcuchu głównym przechowywały każdą transakcję z sidechainów. Alice może "wejść" w sidechain za pomocą pojedynczej transakcji - konwersji bitcoinów na sidecoiny, wykonać setki transakcji w łańcuchu bocznym, a następnie wyjść z niego. Z perspektywy blockchainu Bitcoina, Alice wykonała zaledwie dwie transakcje – konwersja bitcoinów na sidecoiny i odwrotnie. Wejście i wyjście.

Mogliście słyszeć o technologii zwanej Ethereum Plasma. Jest ona podobna, lecz charakteryzuje się kilkoma ważnymi różnicami. Jeśli chciałbyś się dowiedzieć więcej na ten temat, koniecznie przeczytaj: Co to jest Ethereum Plasma?


Wprowadzenie do kanałów płatności

Czym jest kanał płatności?

Kanały płatności służą temu samemu celowi, jeśli chodzi o skalowalność, co sidechainy, choć zasadniczo różnią się od siebie. Podobnie jak łańcuchy boczne, kanały płatności przekierowują i przejmują transakcje z głównego łańcucha, aby zapobiec zapchaniu się sieci. W przeciwieństwie jednak do sidechainów, nie wymagają one osobnego łańcucha bloków do działania.

Kanał płatności stosuje smart kontrakty, aby umożliwić użytkownikom przesyłanie transakcji bez ogłaszania ich w blockchainie. Odbywa się to poprzez stosowanie umowy między dwoma uczestnikami w zakresie egzekwowania oprogramowania.


W jaki sposób działa kanał płatności?

W modelach, takich jak popularna Lightning Network, dwie strony najpierw wpłacają coiny pod wspólny adres. Wykorzystuje się tzw. adresy multisignature, wymagające dwóch lub więcej podpisów do wydania środków. Tak więc, jeśli Alice i Bob utworzą taki adres, fundusze można by przenieść tylko za zgodą obu stron.

Powiedzmy, że każdy z nich wpłaca 10 BTC na adres, na którym obecnie znajduje się 20 BTC. Łatwo byłoby im zachować bilans, który zaczyna się od stwierdzenia, że Alice i Bob mają po 10 BTC każdy. Gdyby Alice chciała dać Bobowi bitcoiny, mogliby zaktualizować swoją wewnętrzną księgę rozrachunkową, od teraz mówiącą, że Alice ma 9 BTC, a Bob 11 BTC. Nie muszą ogłaszać żadnych nowych transakcji w głównym łańcuchu bloków - wszystko pozostaje w obrębie ich własnej księgi rozliczeniowej - kanału płatności. 


how a payment channel works


Kiedy jednak nadejdzie odpowiedni czas, powiedzmy, że Alice posiada 5 BTC, a Bob 15 BTC. Mogą następnie utworzyć transakcję, która wyśle te salda na adresy będące własnością konkretnych stron, podpisz je i wyemituj.

Alice i Bob mogli zarejestrować dziesięć, sto lub tysiąc transakcji w swoim kanale płatności. Lecz jeśli chodzi o blockchain, wykonali tylko dwie operacje: jedną dla początkowej transakcji wysyłającej BTC na kanał płatności i drugą, aby dokonać realokacji sald po ich zakończeniu. Oprócz tych dwóch, wszystkie inne transakcje były bezpłatne i niemal natychmiastowe, ponieważ występują poza łańcuchem. Nie ma opłaty górniczej do zapłaty i bloków, na które trzeba czekać.

Oczywiście powyższy przykład wymaga współpracy obu stron, co nie jest idealną sytuacją dla nieznajomych. Na szczęście jesteśmy w stanie zastosować specjalne mechanizmy, aby ukarać każdą próbę oszustwa, dzięki czemu strony mogą bezpiecznie wchodzić w interakcje bez ufania sobie. 


Przekierowywanie płatności

Kanały płatnicze stanowią wygodne rozwiązanie dla dwóch stron, spodziewających się dużej liczby transakcji między sobą. Sieć kanałów płatności można rozwinąć, co oznacza, że Alice może zapłacić stronie, z którą nie jest bezpośrednio połączona. Jeśli Bob posiada otwarty kanał z Carol, Alice może jej zapłacić, pod warunkiem, że kanał jest wystarczająco pojemny. Popchnie fundusze na stronę kanału Boba, który z kolei przekaże je Carol. Jeśli Carol połączona jest z innym użytkownikiem, nazwijmy go Danem, łańcuch transakcji można kontynuować. 

Taka sieć ewoluuje w rozproszoną topologię, w której każdy łączy się z wieloma równorzędnymi kanałami. Często do jednego celu będzie wiele dróg, a użytkownicy będą mogli wybrać najbardziej efektywną. 


Wnioski końcowe

Omówiliśmy dwa podejścia do rozwiązania problemu skalowalności kryptowalut, które umożliwiają dokonywanie transakcji bez obciążania bazowego łańcucha bloków. Zarówno sidechainy, jak i kanały płatności nie są jeszcze dojrzałymi technologiami, ale coraz częściej są wykorzystywane przez użytkowników, którzy pragną ominąć wady transakcji w warstwie podstawowej (base/first layer).

Kiedy do ekosystemu kryptowalut dołącza coraz więcej nowych uczestników, ważne jest utrzymanie odpowiedniego poziomu decentralizacji. Można to osiągnąć tylko poprzez wymuszenie ograniczeń wzrostu blockchainu, aby nowe węzły były w stanie łatwo dołączyć do sieci. Zwolennicy rozwiązań skalowalności poza łańcuchem (off-chain) są przekonani, że z czasem główny łańcuch będzie wykorzystywany wyłącznie do rozliczania transakcji o wysokiej wartości lub do ustalania/zamykania sidechainów oraz otwierania/zamykania kanałów płatności.