Jak stworzyć zdecentralizowaną aplikację, która się skaluje? Używaj mniej blockchaina

Nie, uruchomienie zdecentralizowanej aplikacji (dapp) na blockchainie nie doprowadzi do udanego biznesu. Tak naprawdę większość użytkowników nawet nie zastanawia się nad tym, czy aplikacja działa na blockchainie – po prostu wybierają produkt, który jest tańszy, szybszy i prostszy.

Niestety, nawet jeśli blockchain ma swoje unikalne cechy i zalety, większość aplikacji, które na nim działają, jest znacznie droższa, wolniejsza i mniej intuicyjna niż ich scentralizowani konkurenci.

Jak stworzyć zdecentralizowaną aplikację, która się skaluje? Używaj mniej blockchaina

Dość często w oficjalnych dokumentach aplikacji zbudowanych na blockchainie można znaleźć akapit, który mówi: "Blockchain jest drogi i nie jest w stanie obsłużyć wymaganej liczby transakcji na sekundę. Na szczęście wielu mądrych ludzi pracuje nad skalowaniem blockchainu i do czasu uruchomienia naszej aplikacji stanie się ona dość skalowalna.”

W jednym prostym akapicie programista dapp może zrezygnować z głębszej dyskusji na temat kwestii skalowalności i alternatywnych rozwiązań problemów. Często prowadzi to do nieefektywnej architektury, w której inteligentne kontrakty działające na blockchainie służą jako zaplecze i rdzeń aplikacji.

Jednakże nadal istnieją nieprzetestowane podejścia do zdecentralizowanej architektury aplikacji, które pozwalają na znacznie lepszą skalowalność poprzez zmniejszenie zależności od blockchain. Na przykład Blockstack pracuje nad architekturą, w której większość danych i logiki aplikacji jest przechowywana poza łańcuchem.

Przyjrzyjmy się najpierw bardziej tradycyjnemu podejściu, które wykorzystuje blockchain jako bezpośredniego pośrednika między użytkownikami aplikacji i które nie jest szczególnie dobrze skalowalne.

Podejście nr 1: Blockchain jako backend

Aby było jaśniej, weźmy jako przykład branżę hotelarską. To ogromna branża, w której pośrednicy tacy jak Booking.com, pobierają ogromną opłatę do łączenia gości i hoteli.

W każdej sytuacji, w której będziemy chcieli pokonać takiego pośrednika stosując takie podejście, postaramy się odtworzyć jego logikę biznesową za pomocą inteligentnych kontraktów na blockchainie takim jak Ethereum.

Inteligentne kontrakty typu open source działające na „komputerze światowym” mogą łączyć sprzedawców z konsumentami bez pośrednictwa strony trzeciej, ostatecznie zmniejszając opłaty i prowizje pobierane przez pośrednika.

Jak pokazano na poniższym obrazku, hotele korzystają ze zdecentralizowanej aplikacji, aby publikować na blockchainie informacje o pokojach, ich dostępności i cenach w dni powszednie lub w weekendy, a być może nawet opis pokoi wraz ze wszystkimi innymi istotnymi informacjami.

Jak stworzyć zdecentralizowaną aplikację, która się skaluje? Używaj mniej blockchaina

Każdy, kto chce zarezerwować pokój, korzysta z tej aplikacji do wyszukiwania hoteli i pokoi hostowanych na blockchainie. Po wybraniu pokoju następuje rezerwacja poprzez przesłanie wymaganej ilości tokenów do hotelu w formie zadatku. W odpowiedzi inteligentny kontrakt aktualizuje informację w blockchainie, że numer nie jest już dostępny.

Problem skalowalności związany z tym podejściem ma dwie strony. Po pierwsze, maksymalna liczba transakcji na sekundę. Po drugie, ilość danych, które można przechowywać na blockchainie.

Zróbmy przybliżone obliczenia. Booking.com twierdzi, że ma w nim zarejestrowanych prawie 2 miliony hoteli. Załóżmy, że przeciętny hotel ma 10 pokoi i każdy z nich jest rezerwowany zaledwie 20 razy w roku – co daje nam średnio 13 rezerwacji na sekundę.

Aby spojrzeć na tę liczbę, warto zauważyć, że Ethereum może przetwarzać około 15 transakcji na sekundę.

Jednocześnie warto wziąć pod uwagę, że nasza aplikacja będzie zawierała także transakcje z hoteli - umożliwiające pobieranie i stałą aktualizację informacji o ich pokojach. Hotele aktualizują ceny pokoi bardzo często, czasem nawet codziennie, a każda zmiana ceny lub opisu wymaga transakcji na blockchainie.

Występują tu również problemy z rozmiarem – waga łańcucha bloków Ethereum niedawno przekroczyła granicę 2 TB. Gdyby aplikacje wykorzystujące takie podejście stały się naprawdę popularne, sieć Ethereum stałaby się wyjątkowo niestabilna.

Taki system oparty na blockchainie może wykluczyć osoby z zewnątrz ze względu na swoją bezstronność i brak centralizacji, czyli główne zalety technologii blockchain. Ale blockchain ma też inne cechy – jest dystrybuowany, a nie przepisywany, to są doskonałe cechy, ale trzeba za nie płacić szybkością i prowizją od transakcji.

Dlatego twórcy dapp muszą dokładnie ocenić, czy każda funkcja wykorzystująca łańcuch bloków naprawdę wymaga dystrybucji i braku możliwości zapisu.

Na przykład: jaka jest korzyść z dystrybucji danych każdego hotelu na setkach komputerów na całym świecie i przechowywania ich tam na stałe? Czy naprawdę ważne jest, aby dane historyczne dotyczące cen i dostępności pokoi były zawsze uwzględniane w blockchainie? Prawdopodobnie nie.

Jeśli zaczniemy zadawać tego typu pytania, zaczniemy dostrzegać, że niekoniecznie potrzebujemy wszystkich kosztownych funkcji blockchain do wszystkich naszych funkcji. Jaka jest więc alternatywa?

Podejście nr 2: Architektura inspirowana blokami

Chociaż główny nacisk Blockstack w aplikacjach, w których użytkownicy są właścicielami swoich danych (np tekst lotniczy, BentenSound, Optymalizator obrazu lub grafit), blockstack ma również filozofię lekkiego korzystania z blockchainu – tylko wtedy, gdy jest to absolutnie konieczne. Ich głównym argumentem jest to, że blockchain jest powolny i kosztowny, dlatego powinien być używany tylko w przypadku pojedynczych lub rzadkich transakcji. Pozostała część interakcji z aplikacjami powinna odbywać się w trybie peer-to-peer, tj. użytkownicy zdecentralizowanych aplikacji muszą udostępniać dane bezpośrednio sobie nawzajem, a nie za pośrednictwem łańcucha bloków. W końcu najstarsze i odnoszące największe sukcesy zdecentralizowane aplikacje, takie jak BitTorrent, poczta e-mail i Tor, powstały przed samą koncepcją blockchain.

Jak stworzyć zdecentralizowaną aplikację, która się skaluje? Używaj mniej blockchaina
Po lewej: Pierwsze podejście, w którym użytkownicy wchodzą w interakcję za pośrednictwem blockchainu. Po prawej: Użytkownicy komunikują się ze sobą bezpośrednio, a łańcuch bloków służy wyłącznie do identyfikacji i tym podobnych.

Wróćmy do przykładu rezerwacji hotelu. Chcemy bezstronnego, niezależnego i otwartego protokołu łączenia gości z hotelami. Innymi słowy, chcemy usunąć scentralizowanego pośrednika. Nie musimy na przykład stale przechowywać cen pokoi we wspólnej rozproszonej księdze.

Dlaczego po prostu nie umożliwimy gościom i hotelom bezpośredniej interakcji, a nie poprzez blockchain. Hotele mogą przechowywać swoje ceny, dostępność pokoi i wszelkie inne informacje w miejscu, w którym będą one dostępne dla wszystkich – na przykład IPFS, Amazon S3, a nawet własny lokalny serwer. Dokładnie tak nazywa się zdecentralizowany system przechowywania Blockstack Gaia. Pozwala użytkownikom wybrać, gdzie chcą przechowywać swoje dane i kontrolować, kto może uzyskać do nich dostęp za pomocą podejścia zwanego pamięć dla wielu użytkowników.

Aby zapewnić zaufanie, wszystkie dane hotelu są podpisywane kryptograficznie przez sam hotel. Niezależnie od tego, gdzie te dane są przechowywane, ich integralność można zweryfikować za pomocą kluczy publicznych powiązanych z tożsamością hotelu przechowywanych na blockchainie.

W przypadku Blockstack w blockchainie przechowywane są wyłącznie informacje o Twojej tożsamości. Informacje o sposobie uzyskania danych każdego użytkownika są przechowywane w plikach strefowych i rozpowszechniane poprzez sieć peer-to-peer za pomocą węzłów. I po raz kolejny nie trzeba ufać danym, które podają węzły, ponieważ ich autentyczność można zweryfikować porównując je z hashami przechowywanymi w blockchainie i innymi użytkownikami.

W uproszczonej wersji systemu goście będą korzystać z sieci peer-to-peer Blockstack w celu wyszukiwania hoteli i uzyskiwania informacji o swoich pokojach. Autentyczność i integralność wszystkich otrzymanych danych można zweryfikować za pomocą przechowywanych kluczy publicznych i skrótów obwód wirtualny Blockstack.

Architektura ta jest bardziej złożona niż pierwsze podejście i wymaga bardziej kompleksowej infrastruktury. W rzeczywistości właśnie tu wkracza Blockstack, dostarczając wszystkie niezbędne komponenty do stworzenia takiego zdecentralizowanego systemu.

Jak stworzyć zdecentralizowaną aplikację, która się skaluje? Używaj mniej blockchaina

Dzięki tej architekturze przechowujemy w łańcuchu bloków tylko te dane, które naprawdę wymagają dystrybucji i nie są nadpisywane. W przypadku Blockstack wystarczy, że dokonasz transakcji na blockchainie, aby się zarejestrować i wskazać, gdzie Twoje dane mają być przechowywane. Jeśli chcesz zmienić którekolwiek z tych informacji, może być konieczne dokonanie większej liczby transakcji, ale nie jest to zdarzenie powtarzające się.

Co więcej, logika aplikacji, w przeciwieństwie do pierwszego podejścia, działa po stronie klienta, a nie na inteligentnych kontraktach. Dzięki temu programista może zmienić tę logikę bez kosztownych, a czasem nawet niemożliwych aktualizacji inteligentnych kontraktów. Utrzymując dane aplikacji i logikę poza łańcuchem, zdecentralizowane aplikacje mogą osiągnąć poziom wydajności i skalowalności tradycyjnych systemów scentralizowanych.

wniosek

Aplikacje działające na Blockstack mogą skalować się znacznie lepiej niż konwencjonalne aplikacje blockchain, ale jest to młodsze podejście z własnymi problemami i pytaniami bez odpowiedzi.

Na przykład, jeśli zdecentralizowana aplikacja nie działa na inteligentnych kontraktach, zmniejsza to zapotrzebowanie na tokeny użytkowe. Może to powodować problemy dla firm, biorąc pod uwagę, że ICO były głównym źródłem finansowania zdecentralizowanych aplikacji (w tym samego Blockstack)

Tutaj również pojawiają się problemy techniczne. Przykładowo stosunkowo łatwo jest zaimplementować funkcję rezerwacji hotelu w inteligentnym kontrakcie, gdzie w operacji atomowej dokonuje się rezerwacji pokoju w zamian za tokeny. I nie jest zbyt oczywiste, jak rezerwacja będzie działać w aplikacji Blockstack bez inteligentnych kontraktów.

Aplikacje kierowane na rynki globalne i mające potencjał dla milionów użytkowników, aby odniosły sukces, muszą być bardzo dobrze skalowane. Błędem jest poleganie wyłącznie na blockchainach, aby osiągnąć ten poziom skalowalności w najbliższej przyszłości. Aby móc konkurować z dużymi scentralizowanymi graczami na rynku, takimi jak Booking.com, zdecentralizowani twórcy aplikacji powinni rozważyć alternatywne podejścia do projektowania swoich aplikacji, takie jak to oferowane przez Blockstack.

Źródło: www.habr.com

Dodaj komentarz