Nie, uruchomienie zdecentralizowanej aplikacji (dapp) na blockchainie nie doprowadzi do sukcesu biznesowego. W rzeczywistości większość użytkowników nawet nie myśli o 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 zrozumiała niż ich scentralizowani konkurenci.

Bardzo często w whitepaperach aplikacji zbudowanych na blockchainie można znaleźć akapit, w którym napisano: "blockchain jest drogi i nie jest w stanie obsługiwać wymaganego liczby transakcji na sekundę. Na szczęście wiele inteligentnych ludzi pracuje nad skalowaniem blockchaina i w momencie uruchomienia naszej aplikacji stanie się on wystarczająco skalowalny."
W jednym prostym akapicie twórca dapp’a może zrezygnować z głębszej dyskusji na temat problemów z skalowalnością i alternatywnych rozwiązań. Często prowadzi to do nieefektywnej architektury, gdzie backendem i rdzeniem aplikacji są smart kontrakty działające na blockchainie.
Jednakże istnieją jeszcze nieprzetestowane podejścia w architekturze zdecentralizowanych aplikacji, które pozwalają na znacznie lepszą skalowalność dzięki zmniejszeniu zależności od blockchaina. Na przykład, Blockstack pracuje nad architekturą, w której większość danych i logiki aplikacji jest przechowywana poza blockchainem.
Najpierw przyjrzyjmy się bardziej tradycyjnemu podejściu, w którym blockchain jest bezpośrednim pośrednikiem między użytkownikami aplikacji, które nie skalują się zbyt dobrze.
Podejście #1: Blockchain jako backend
Aby było to bardziej przejrzyste, weźmy przemysł hotelarski jako przykład. To ogromna branża, w której pośrednicy tacy jak Booking.com, za łączenie gości z hotelami.
W każdej sytuacji, gdy chcemy pokonać takiego pośrednika, stosując to podejście, będziemy próbować powtórzyć jego logikę biznesową, używając smart kontraktów na takim blockchainie jak Ethereum.
Smart kontrakty z otwartym kodem źródłowym, uruchomione na "globalnym komputerze", mogą łączyć sprzedawców z konsumentami bez pośredników, co w efekcie zmniejsza opłaty i prowizje pobierane przez pośredników.
Jak pokazano na poniższym obrazku, hotele wykorzystują zdecentralizowaną aplikację do przechowywania w blockchainie informacji o pokojach, ich dostępności i cenach w dni robocze lub weekendy, a także możliwe opisy pokoi wraz z innymi istotnymi informacjami.

Każdy, kto chce zarezerwować pokój, używa tej aplikacji do wyszukiwania hoteli oraz pokoi dostępnych w blockchainie. Gdy użytkownik wybierze pokój, rezerwacja dokonuje się przez przesłanie wymaganej kwoty tokenów do hotelu jako zaliczki. W odpowiedzi smart kontrakt aktualizuje informacje w blockchainie, informując, że pokój jest już niedostępny.
W tym podejściu pojawiają się dwa problemy z zakresu skalowalności. Po pierwsze, maksymalna liczba transakcji na sekundę. Po drugie, ilość danych, które mogą być przechowywane w blockchainie.
Zróbmy przybliżone obliczenia. Booking.com podaje, że mają zarejestrowanych prawie 2 miliony hoteli. Zakładając, że średnio w hotelu jest 10 pokoi, a każdy z nich jest rezerwowany tylko 20 razy w roku — daje nam to średnio 13 rezerwacji na sekundę.
Warto zauważyć, że Ethereum może obsługiwać około 15 transakcji na sekundę.
Należy również pamiętać, że w naszej aplikacji będą również transakcje od hoteli — dotyczące ładowania i stałego aktualizowania informacji o ich pokojach. Hotele bardzo często aktualizują ceny pokoi, czasami nawet codziennie, a każda zmiana ceny lub opisu wymaga transakcji w blockchainie.
Istnieje również problem z rozmiarem — waga blockchaina Ethereum niedawno przekroczyła 2TB. Gdyby aplikacje o podobnym podejściu stały się naprawdę popularne, sieć Ethereum mogłaby stać się niezwykle niestabilna.
Taki system oparty na blockchainie może wykluczyć pośredników ze względu na jego bezstronność i brak centralizacji — główne zalety technologii blockchain. Ale blockchain ma też inne cechy — jest rozproszony i niezmienny, to doskonałe właściwości, ale za to trzeba płacić prędkością i prowizją za transakcje.
Dlatego deweloperzy dapp’ów muszą dokładnie ocenić, czy każda funkcja korzystająca z blockchaina rzeczywiście potrzebuje rozproszenia i niemożliwości zapisania na nowo.
Na przykład: jakie są korzyści z rozdzielenia danych każdego hotelu na setki maszyn na całym świecie i ich stałego przechowywania tam? Czy rzeczywiście ważne jest, aby historyczne dane dotyczące cen i dostępności pokojów były zawsze zawarte w blockchainie? Prawdopodobnie nie.
Jeśli zaczniemy zadawać takie pytania, to zaczniemy dostrzegać, że nie wszystkie drogie cechy blockchaina są potrzebne do każdej naszej funkcji. Jak więc wygląda alternatywa?
Podejście #2: Architektura inspirowana Blockstackiem
Chociaż główny nacisk kładzie na aplikacje, w których użytkownicy są właścicielami swoich danych (np. takich jak , , lub ), Blockstack ma również filozofię minimalnego wykorzystania blockchaina — tylko wtedy, gdy jest to absolutnie konieczne. Ich główny argument jest taki, że blockchain jest wolny i drogi, co oznacza, że powinien być używany tylko do pojedynczych lub rzadkich operacji. Pozostała interakcja z aplikacjami powinna odbywać się przez peer-to-peer, tzn. użytkownicy zdecentralizowanych aplikacji powinni dzielić się danymi bezpośrednio między sobą, a nie przez blockchain. Ostatecznie najstarsze i najudane zdecentralizowane aplikacje, takie jak BitTorrent, e-mail i Tor, zostały stworzone zanim pojawił się sam koncept blockchaina.

Po lewej: pierwsze podejście, w którym użytkownicy interagują przez blockchain. Po prawej: użytkownicy interagują bezpośrednio między sobą, a blockchain jest używany tylko do identyfikacji i podobnych rzeczy..
Wróćmy do przykładu z rezerwacją hoteli. Chcemy bezstronnego, niezależnego i otwartego protokołu do łączenia gości z hotelami. Innymi słowy, chcemy pozbyć się scentralizowanego pośrednika. Nie ma potrzeby, na przykład, aby stale przechowywać ceny pokojów w ogólnym rozproszonym rejestrze.
Dlaczego po prostu nie pozwolić gościom i hotelom na bezpośrednią interakcję, zamiast korzystać z blockchaina? Hotele mogą przechowywać swoje ceny, dostępność pokoi i wszelkie inne informacje w miejscu, które będzie dostępne dla wszystkich — na przykład na IPFS, Amazon S3, a nawet na ich własnym lokalnym serwerze. To właśnie oferuje zdecentralizowany system przechowywania od Blockstack o nazwie . Umożliwia on użytkownikom wybór miejsca, w którym chcą przechowywać swoje dane i kontrolowanie, kto ma do nich dostęp poprzez podejście zwane .
Aby zbudować zaufanie, wszystkie dane hotelu są kryptograficznie podpisywane przez sam hotel. Niezależnie od tego, gdzie te dane są przechowywane, ich integralność można sprawdzić przy użyciu kluczy publicznych powiązanych z informacjami identyfikacyjnymi tego hotelu przechowywanymi w blockchainie.
W przypadku Blockstacka, w blockchainie przechowywane są tylko twoje informacje identyfikacyjne. Informacje o tym, jak uzyskać dane każdego użytkownika, znajdują się w plikach strefowych (zone files) i są rozpowszechniane przez sieć peer-to-peer za pomocą nodów. I po raz kolejny — nie musisz ufać danym przekazywanym przez nody, ponieważ możesz sprawdzić ich autentyczność, porównując je z haszami przechowywanymi w blockchainie i u innych użytkowników.
W uproszczonej wersji systemu goście będą korzystać z sieci peer-to-peer Blockstack, aby znaleźć hotele i uzyskać informacje o ich pokojach. A autentyczność oraz integralność wszystkich danych, które otrzymasz, można sprawdzić, używając kluczy publicznych i haszy przechowywanych w Blockstack.
Ta architektura jest bardziej skomplikowana niż pierwsze podejście i wymaga bardziej złożonej infrastruktury. W rzeczywistości, to właśnie tutaj wchodzi Blockstack, dostarczając wszystkie niezbędne komponenty do stworzenia takiego zdecentralizowanego systemu.

Przy takiej architekturze przechowujemy w blockchainie tylko te dane, które rzeczywiście powinny być rozproszone i nieedytowalne. W przypadku Blockstacka, potrzebujesz transakcji w blockchainie tylko po to, aby się zarejestrować i wskazać, gdzie powinny być przechowywane twoje dane. Możesz potrzebować więcej transakcji, jeśli chcesz zmienić coś w tych informacjach, ale to nie jest zdarzenie powtarzające się.
Co więcej, logika aplikacji, w przeciwieństwie do pierwszego podejścia, działa po stronie klienta, a nie na smart kontraktach. To pozwala programiście na zmianę tej logiki bez kosztownych lub czasami nawet niemożliwych aktualizacji smart kontraktu. Przechowując dane i logikę aplikacji poza blockchainem, aplikacje zdecentralizowane mogą osiągnąć poziom wydajności i skalowalności tradycyjnych systemów scentralizowanych.
Podsumowanie
Aplikacje działające na Blockstack mogą się znacznie lepiej skalować niż zwykłe aplikacje blockchainowe, ale jest to młodsze podejście, które ma swoje problemy i niewiadome.
Na przykład, jeżeli aplikacja zdecentralizowana nie działa na smart kontraktach, zmniejsza to potrzebę posiadania tokenów użytkowych. To może stworzyć problemy dla biznesu, biorąc pod uwagę, że ICO były głównym źródłem finansowania dla aplikacji zdecentralizowanych (w tym samego Blockstack).
Są tu także problemy techniczne. Na przykład, stosunkowo łatwo jest zaimplementować funkcję rezerwacji hoteli w smart kontrakcie, gdzie przy atomowej operacji rezerwacje pokoi odbywają się w zamian za tokeny. Nie jest natomiast oczywiste, jak rezerwacja będzie funkcjonować w aplikacji Blockstack bez smart kontraktów.
Aplikacje, które celują w rynki globalne z potencjałem na miliony użytkowników, muszą dobrze skalować, aby odnieść sukces. Błędne jest poleganie wyłącznie na blockchainach, aby osiągnąć taki poziom skalowalności w najbliższej przyszłości. Aby móc konkurować z dużymi scentralizowanymi graczami na rynku, takimi jak Booking.com, deweloperzy aplikacji zdecentralizowanych muszą rozważyć alternatywne podejścia do projektowania swoich aplikacji, takie jak to, które oferuje Blockstack.
Źródło: habr.com
