Wycieczka do pubu i ciepły bulion – porozmawiajmy o skalowaniu warstwy drugiej.
Słynne przysłowie mówi: “Potrzeba matką wynalazków”. Nie inaczej jest w przypadku blockchaina, a obecnym wymaganiem jest doprowadzenie tej technologii do takiego stanu, aby mogła służyć równocześnie miliardom użytkowników, bez pogorszenia jakości usług.
Dzisiejszy wpis kontynuuje tematykę wyskalowania blockchaina. Jeżeli jeszcze nie miałeś okazji, to zajrzyj do tego wpisu, a tutaj możesz zapoznać się z rozwiązaniami dotyczącymi warstwy pierwszej. Teraz przechodzimy na “wyższy” poziom i porozmawiamy sobie o warstwie drugiej. W tym poście znajdziesz informacje na temat dwóch rozwiązań tego typu, a mianowicie kanałów oraz łańcuchów bocznych. Nie będzie to koniec tego tematu, ale o szczegółach dowiesz się na końcu:).
Wyjście na miasto
Niezależnie od dziedziny nauki, wydaje mi się, że zrozumienie nawet najtrudniejszych konceptów jest łatwiejsze, gdy znajdzie się analogiczny przykład z codziennego życia.
Jest piątkowy wieczór, a Ty wybierasz się właśnie do baru ze znajomymi. Ponieważ na Twoje konto przyszła wypłata z sowitą premią za ostatni miesiąc, postanawiasz pokryć wszystkim dzisiejsze wyjście. Twoi znajomi przez całą noc zamawiali różnego rodzaju procentowe napoje i wszystkie płatności były dokonywane przez Ciebie na bieżąco.
Kiedy na drugi dzień, po ciężkim poranku Twoje samopoczucie wróciło do normy, przyszedł czas na sprawdzenie konta bankowego. Można było spodziewać się, co takiego tam zastaniesz, bo nie było to Twoje pierwsze wyjście tego typu, jednak okazało się, że ubyła z niego zdecydowanie większa suma, niż można by zakładać. Zazwyczaj wynosiła kilkadziesiąt procent mniej.
Na szczęście masz nawyk kolekcjonowania paragonów i tym razem wszystkie wczorajsze są razem z Tobą. Spoglądasz na poszczególne rachunki. Na każdym z nich oprócz zamówionych napojów widnieje dodatkowa pozycja o nazwie opłata transakcyjna, która wynosi za każdym razem równe 5 zł. Dziwne, nigdy wcześniej czegoś takiego nie było, ale w takim wypadku kwota się zgadza.
Nie dawało Ci to spokoju, dlatego w jeden z wolnych dni odwiedzasz bar i dopytujesz barmana, o co z tymi opłatami chodzi. Wytłumaczył Ci, że ze względu na rosnące koszty transakcji bankowych, pub od pewnego czasu do każdej pojedynczej płatności kartą musi doliczac dodatkową kwotę, która jest stała i niezależna od liczby pozycji na paragonie.
Miesiąc później po raz kolejny wpadła ogromna premia na Twoje konto, więc postanawiasz powtórzyć wyjście. Tym razem na bazie ostatnich doświadczeń postanawiasz dogadać się z barmanem i prosisz go, aby stworzył otwarty rachunek, a na koniec Ty pokryjesz całą kwotę jedną płatnością. Przez cały wieczór obsługa pilnie zapisywała wszystkie wasze zamówienia. Na sam koniec przedstawiono Ci rachunek ze wszystkimi trunkami, plus jedna opłata transakcyjna. Tym razem opłata transakcyjna stanowiła jedynie marginalny koszt całego wyjścia, dlatego z ulgą pokrywasz rachunek i dajesz coś ekstra dla obsługi za jej pomoc.
Jeśli bywasz na takich wyjściach, to wiesz, że otwieranie rachunku na stolik jest standardową praktyką. Oczywiście głównym powodem raczej nie jest oszczędzanie na opłatach transakcyjnych, ponieważ te nie są aż takie wysokie w przypadku standardowych płatności, ale analogia ta pomaga zrozumieć, czym są blockchainowe kanały. W jednym zdaniu polega to na “wyniesieniu” większości operacji poza sieć, stąd nazwa off-chain. Dzięki temu w wielu przypadkach wystarczy wykonać nie więcej niż trzy transakcje na głównym blockchainie, a reszta może dziać się poza nim, ograniczając w ten sposób ruch oraz koszty.
Kanały
Wyróżnia się dwa rodzaje kanałów, czyli tzw. state channels oraz payments channels. Jak same nazwy mogą wskazywać, pierwszy typ służy do wykonywania transakcji związanych ze zmianą jakiegoś stanu np. z aktualizacją danej wartości, która przechowywana jest w smart kontrakcie. Dobrym przykładem mogłaby być rozgrywka szachowa, w której rozpoczęcie rozgrywki i jej ostateczny wynik zapisywane są na blockchainie, a wszystkie ruchy wykonywane są poza nim. Drugi, nieco uproszczony wariant kanałów, wykorzystywany jest do obsługi płatności. To właśnie od niego zacznę.
Aby utworzyć tego rodzaju kanał, osoby chcące w nim uczestniczyć muszą najpierw zablokować swoje środki na blockchainie, wykorzystując do tego np. smart kontrakty. Inaczej mówiąc, jeśli Piotrek z Jackiem chcieliby płacić etherem za swoje wzajemne usługi, to każdy z nich wpłaciłby najpierw pewną ilość kryptowaluty do protokołu, a dopiero potem zaczęliby wymieniać się wiadomościami na temat dokonanych płatności. Informacje te przesyłaliby sobie bez użycia samego blockchaina. Żeby zachować bezpieczeństwo, każda z tych wiadomości byłaby podpisana kluczem prywatnym, powiązanym z ich portfelami. Gdyby któryś z nich chciał ostatecznie odebrać swoje kryptowaluty na blockchainie, mógłby wykonać transakcję, do której dołączyłyby wcześniej podpisane wiadomości. W takim wypadku środki zgromadzone w smart kontrakcie zostałyby odblokowane, a ich właściciele otrzymaliby dokładnie to, co im przysługuje po dokonanych transakcjach.
W tym wypadku wystarczyło faktycznie wykonać jedynie trzy transakcje na blockchainie, aby cały proces się powiódł. Oczywiście jeżeli Piotrek z Jackiem chcieliby dokonać pojedynczej, prostej wymiany, to otwieranie kanału nie miałoby sensu. Ale jeżeli takich wzajemnych transakcji między sobą zrobiliby dziesiątki, setki albo tysiące, to oszczędność jest ogromna. Nie mówiąc już o prędkości samych płatności, ponieważ te wykonywane off-chain nie muszą czekać na zatwierdzenie bloków.
Kanały do zmiany stanu działają analogicznie do przedstawionego rozwiązania, jedynie z tą różnicą, że wiadomości, którymi wymieniają się użytkownicy, mogą zawierać nie tylko informację, ile monet komu się należy, ale również inne dane np. dotyczące wcześniej wspomnianych szachów.
W takim wypadku Piotrek z Jackiem na starcie dokonaliby transakcji, która posłużyłaby do stworzenia gry, a następnie zaczeliby wymieniać się podpisanymi wiadomościami na temat swoich ruchów. Ponownie działoby się to poza blockchainem. Po zakończeniu gry “wrzuciliby” informacje o jej przebiegu na blockchain i tym samym zapisaliby jej ostateczny wynik. Gdyby gra toczyła się o pieniądze, wtedy na samym początku mogliby również zablokować w takim kanale środki, a na koniec wygrany otrzymałby swoją należność.
Pewność przed wszystkim
Skoro da się dokonywać transakcji off-chain, a następnie wrzucać ich ostateczny wynik na blockchain, to po co mam najpierw blokować swoje środki? Jeżeli pojawiło Ci się takie pytanie w głowie, to już spieszę z wyjaśnieniem.
Gdyby nie ten mechanizm, to nie istniałaby jakakolwiek pewność, że po zamknięciu kanału wszyscy otrzymają należne im środki. Innymi słowy, ludzie mogliby oszukiwać. I tak jak blockchain ma służyć głównie jako rozwiązanie, które uniemożliwia różnego rodzaju machlojki, tak samo rozwiązania warstwy drugiej muszą być na nie odporne.
Wyobraź sobie sytuację, w której Piotrek i Jacek ustalili, że będą wymieniać się informacjami o płatnościach między sobą, a nawet mogą je podpisywać swoimi kluczami prywatnymi, ale żeby było “fajniej”, to nie blokują najpierw środków w protokole. Gdy Piotrek dowiedział się, że Jacek będzie zamykał kanał, w celu otrzymania środków na blockchainie, to przelał wszystkie swoje ethery na inny portfel. W takim przypadki Jacek nie może już nic zrobić. Pomimo że posiada podpisane transakcje, nie jest w stanie zareagować, bo żadne środki nie znajdują się w portfelu Piotrka.
Powyższe przykłady są oczywiście nieco uproszczoną wersją i obrazują jedynie najprostsze przypadki użycia. W rzeczywistości kanały mogą być zdecydowanie bardziej skomplikowane, przez co rozwiązania tego typu muszą być bardzo dobrze przemyślane. Zazwyczaj samo otworzenie kanału nie powinno stanowić problemu, ale dużo wyzwań może się pojawić w przypadku ich zamykania.
Co zrobić, gdy jedna z osób nagle przestanie przesyłać wiadomości? Czy powinniśmy pozwolić na zamknięcie takiego kanału? Jeśli tak, to co zrobić z zablokowanymi tam środkami? To tylko dwa z wielu pytań, które mogą pojawić się w tym procesie. Jeżeli nie masz problemu z angielskim, to polecam Ci dwa wykłady prowadzone przez Tadge Dryja, znajdujące się na platformie YouTube. Pierwszy z nich dogłębnie opisuje mechanizmy związane z kanałami, natomiast drugi skupia się na Lightning Network, czyli rozwiązaniu, które sprawia, że płatności bitcoinem są prawie darmowe i super szybkie. Wykorzystanie tej technologii znalazło zastosowanie chociażby w restauracji McDonald’s w Szwajcarii.
Kanały, pomimo wielu zalet, posiadają również wady. Pierwsze o czym warto wspomnieć, to fakt, że jest to rozwiązanie tworzone per konkretny przypadek, co sprawia, że zazwyczaj wymaga dodatkowych nakładów pracy.
Kolejna sprawa to wcześniej wspomniane blokowanie środków. O ile jest ono potrzebne do zachowania bezpieczeństwa, o tyle stanowi również pewnego rodzaju problem. A to dlatego, że środki do przyszłych wymian muszą być dostępne z wyprzedzeniem, przez co nie możemy ich używać równocześnie w innych celach.
Chociaż rozwiązanie to pozwala znacznie zwiększyć liczbę transakcji i równocześnie zmniejszyć ich koszt, to nie powinniśmy się ograniczać jedynie do niego.
Własny biznes
Jest rześki październikowy wieczór, a Ty relaksujesz się na kanapie z książką w ręku. Nagle przychodzi Ci do głowy genialny pomysł: „Chcę sprzedawać rosół!”. Wstajesz kolejnego dnia rano i od razu zabierasz się do pracy. Twoja nowo powstała firma jest dopiero na początku drogi do wielomilionowej korporacji, więc nie dysponujesz żadnymi wolnymi środkami. Wszystko jest na Twojej głowie. Na szczęście najważniejsze potrafisz, bo babcia nauczyła Cię robić najlepszą zupę tego typu.
Pomysł okazał się strzałem w dziesiątkę. Klientów przybywa, biznes się rozrasta i marka “Rosół i nic więcej” zdobywa coraz większą popularność, przez co w pewnym momencie ilość pracy zaczęła przekraczać Twoje możliwości. Dlatego w najlepszym momencie postanawiasz zacząć zatrudniać odpowiednie osoby. Przestajesz się zajmować podatkami, bo posiadasz księgowego, a o nowe relacje biznesowe dba spec od marketingu. To tylko wycinek ekipy, która została zatrudniona w ciągu kolejnych miesięcy.
Firma bardzo się rozrosła, ale dzięki temu, że w dobrym momencie zapadły właściwe decyzje, wszystko działa jak w szwajcarskim zegarku. Odpowiednia selekcja i wybór samych specjalistów sprawia, że “Rosół i nic więcej” wypłynął na międzynarodowe wody biznesu, a sprawy, które byłyby niemożliwe do zrealizowania przez Ciebie lub zajmowałyby za dużo czasu, są sprawnie załatwiane przez dedykowane osoby.
Można mieć wątpliwości, czy “Rosół i nic więcej” podbiły światowy rynek gastronomii, ale nie da się zaprzeczyć, że odpowiednie delegowanie pracy skaluje każdy biznes i zwiększa prawdopodobieństwo osiągnięcia sukcesu. Tak samo jest w przypadku blockchaina, a łańcuchy boczne mogą być właśnie postrzegane podobnie do zlecania zadań odpowiednim osobom.
Łańcuchy boczne
Z technicznego punktu widzenia, każdy łańcuch boczny to osobny blockchain, który jest niejako “związany” z tym głównym. Takie “splątanie” nazywane jest dwukierunkowym powiązaniem (ang. two-way-peg). Można je uzyskać poprzez blokowanie (ang. locking up) i odblokowywanie (ang. releasing) środków na poszczególnych blockchainach. Jak pewnie się domyślasz, wykorzystuje się do tego kryptowaluty. Tak jak kiedyś wspomniałem, pomimo że nie każde rozwiązanie wymaga tworzenia własnego cyfrowego aktywa, tak ich ogólne zastosowanie jest bardzo pożyteczne dla blockchaina.
Każdy łańcuch boczny, jako osobny blockchain, może rządzić się swoimi prawami. Oznacza to, że jego algorytm konsensusu nie musi być identyczny, jak na łańcuchu głównym. Dobrym przykładem była sieć Polygon, która oparta jest na Proof of Stake i jest równocześnie łańcuchem bocznym dla Ethereum, które do niedawna pracowało w oparciu o Proof of Work.
Ponieważ sieci takie odpowiadają za swoje zabezpieczenia i poprawną pracę, potrzebują własnych górników lub walidatorów. Z tego względu rozwiązania te mają również swoją natywną kryptowalutę, która wykorzystywana jest m.in. do pokrywania nagród dla osób utrzymujących sieć oraz opłat transakcyjnych.
Ogromną zaletą łańcuchów bocznych jest ich duża przepustowość. Zazwyczaj takie sieci są znacznie szybsze i tańsze niż główny blockchain, a dzieje się tak ze względu na poświęcenie decentralizacji. Wbrew pozorom w tej sytuacji nie jest to aż taki problem. Ostatecznie liczy się stan, który znajduje się na głównym łańcuchu, a ten nie zmieni swoich zasad.
Wrócę jeszcze na chwilę do splątania blockchainów. Proces blokowania i odblokowywania środków nie polega jedynie na ich zamrożeniu, ale służy do przeniesienia kryptowalut na łańcuch boczny i wykorzystywaniu ich w dostępnych tam aplikacjach. W odróżnieniu do kanałów, rozwiązanie to jest zdecydowanie bardziej elastyczne.
W całym procesie pomaga tzw. federacja (ang. federation). Jest to techniczne określenie na pośrednika, który blokuje i zwalnia nasze środki. Federacja może być zdecentralizowanym kodem, ale w praktyce jest też często taka jednostka powiązana z instytucją stojącą za konkretnym łańcuchem bocznym. Jej głównym zadaniem jest pilnowanie, aby środki które pojawiają się na łańcuchu bocznym odpowiadały temu, co zostało zablokowane na głównej sieci. W takim procesie zazwyczaj wykorzystuje się aplikację zwaną mostem (ang. bridge). Warto dodać, że nie każdy łańcuch boczny posiada federację, niemniej jednak często jednostka ta, mimo centralizacji, wnosi pozytywny wkład w rozwój danej sieci.
Jak widzisz idea przyświecająca łańuchom bocznym jest dosyć prosta. Tworzymy dodatkowy blockchain, po czym w razie potrzeby oddelegowujemy część pracy do niego, a najważniejsze wyniki i ogólny stan przechowujemy na głównej sieci.
Niektóre osoby często mylą ze sobą sharding, który został opisany poprzednim razem, z opisywanym rozwiązaniem. Nie jest to w sumie dziwne, ponieważ w obu przypadkach mówimy o wielu blockchainach, które działają równocześnie i współpracują w pewien sposób ze sobą, przy czym ta wzajemna zależność wygląda inaczej. Warto zapamiętać, że sharding to podział głównego łańcucha na wiele innych, ale każdy z nich działa na tych samych zasadach, a wszystko ostatecznie składa się na jedną sieć. W przypadku łańcuchów bocznych mówimy o całkowicie osobnych blockchainach.
Na dziś to by było tyle, ale nie jest to jeszcze koniec tematu skalowalności. Za tydzień dowiesz się, czym są tzw. rollupy oraz jak przekonać niewidomego, że go nie oszukujesz. Do zobaczenia:)