W tym artykule chciałbym poruszyć jeden z bardziej dyskutowanych ostatnio tematów, jeśli chodzi o rozwój projektów opartych o blockchain — “Execution markets”. Dlaczego jest interesujący? Są na to co najmniej trzy powody. O nich w artykule.


daniel kmak stackoverflow

Daniel Kmak. Współzałożyciel Trustless Design — firmy zajmującej się audytami systemów opartych o blockchain. Od prawie roku pracuje z technologią blockchain jako Decentralized Application Developer (DAPP Developer, taka odmiana frontend developera). Wcześniej pracował dla Chronologic i RepuX’a. Pracuje w pełni zdalnie. Udziela się w społeczności StackOverflow, gdzie zdobył ponad 13 tys. punktów. Jest też blogerem piszącym o pracy developera, a jego teksty znajdziecie na platformie medium.com.


Po pierwsze, execution markets to sposób na automatyzację zarządzania protokołami opartymi o blockchain. Po drugie, umożliwia łatwiejszy onboarding użytkowników takich platform. Po trzecie, daje możliwość zarobku dla egzekutorów w systemie. To tyle, jeśli chodzi o wyjaśnienia, dlaczego warto zainteresować się tym zagadnieniem. Brakuje jeszcze definicji “execution market”? Po polsku, w mojej opinii, tłumaczeniem najbliższym rzeczywistości jest określenie rynek wykonywania transakcji.

Wiele aplikacji może korzystać z jednego rynku

Zasada działania takiego systemu jest następująca: ktoś płaci za to, że ktoś inny wykona transakcję w blockchainie. Przykładem takiego systemu jest Ethereum Alarm Clock, gdzie ludzie płacą za wykonanie swoich transakcji o wyznaczonym czasie. Znaczenie czasu przy wykonywaniu transakcji jest jednak specyfiką tego konkretnego projektu i nie jest to reguła. Ważne jest to, że transakcja w momencie jej zlecania jest odraczana (i zapisywana np. w smart-kontrakcie) dopóki nie nastąpią jakieś warunki pozwalające na jej wykonanie.

Automatyzacja protokołów

Przejdźmy więc do użyteczności takiego systemu w automatyzacji protokołów istniejących w blockchainie. Skoro byliśmy przy temacie czasu, to wyobraźmy sobie sytuację, gdzie ktoś stworzył aplikację opartą o blockchain, która każdego 10 dnia miesiąca wysyła określonej grupie osób wynagrodzenie. W tym momencie, aby to zrobić (nie polegając na zcentralizowanych sposobach, łatwo podatnych na zakłócenia, jak cron) trzeba każdego 10. dnia miesiąca być przy komputerze, aby wysłać transakcję.

Czy to jest wygodne? Raczej nie — tym bardziej jeśli można to zautomatyzować. Kierujemy się więc do jednego z execution markets, który pozwala nam zlecić takie transakcje na najbliższy rok. Zlecamy więc 12 transakcji, płacąc przy tym za zwrot kosztów wykonania każdej z nich (w przypadku Ethereum mówimy tu o kosztach gazu — płatnych kopaczom) oraz nagród dla osób, które na przestrzeni czasu wyślą nasze transakcje. Tym sposobem nasza aplikacja od teraz “będzie zarządzać się sama”.

Dodam, że takiemu systemowi można zaufać — wszystko jest potwierdzone w blockchainie — szczególnie warunki, kiedy transakcja może zostać wykonana — więc mamy pewność działania. Jedyny problem pojawiłby się, gdyby w systemie zabrakło aktorów wykonujących transakcje. Dopóki jest ich co najmniej kilku — nasza sieć powinna działać.

Onboarding użytkowników

Obecnie aplikacje oparte o blockchain zmagają się z problemem braku użytkowników. W takiej sytuacji jest to naturalne, że społeczność zmierza do zlikwidowania pewnych barier. Jedną z nich jest konieczność posiadania portfela Ethereum z jakąś ilością środków. Należy więc wiedzieć jak założyć taki portfel, zdobyć kryptowalutę i posiadać techniczną wiedzę, jak to działa. Stanowi to wyzwanie dla nowych użytkowników.

Jest jednak rozwiązanie, w którym użytkownicy mogą nawet nie być świadomi, że pod spodem korzystają z rozwiązań typu blockchain. Chodzi tutaj o to, że właściciel aplikacji, w którego interesie jest pozyskanie nowych użytkowników, płaci koszty wykonanywania przez nich transakcji.

Dzięki temu użytkownik nie będzie musiał nawet posiadać swojego portfela Ethereum. Może zostać wygenerowany mu klucz prywatny, nie posiadający żadnych środków — jednak zdolny do podpisywania transakcji i pozwalający zweryfikować, że transakcja pochodzi od niego. Jeśli chodzi o samo miejsce przechowywania takiego klucza prywatnego, może znajdować się on wyłącznie po stronie użytkownika — wtedy ma on pełną kontrolę nad swoim kontem i właściciel aplikacji nie może zrobić nic w jego imieniu bez jego zgody (czyli cyfrowego podpisu transakcji).

Transakcje mogą być zbierane i wykonywane przez właściciela systemu na bieżąco, ale może on je również zlecać od razu w execution market, dzięki czemu zostaną one wykonane w sposób zdecentralizowany. Można też zmienić nieco role i sprawić by to użytkownik bezpośrednio zlecał transakcje w execution markecie (bez zwrotu kosztów i nagrody), a były one wykonywane bezpośrednio przez właściciela aplikacji. Tutaj potrzeba oczywiście wiedzieć, które transakcje pochodzą od użytkowników aplikacji. Kolejną wymaganą rzeczą po stronie implementującego taki system jest mechanizm, który będzie bronił przed nadużywaniem systemu.

Tutaj chciałbym przytoczyć przykład projektu Origin Protocol, który pozwala na tworzenie zdecentralizowanych rynków. I tak, w oparciu o ten protokół można stworzyć np. zdecentralizowane Airbnb. Częścią systemu jest rejestracja, np. właściciela domu na wynajem i potwierdzenie swojej tożsamości — np. przez dokument, połączenie z sieciami społecznościowymi itp. Tworzenie takiej tożsamości na blockchainie wiąże się z wysłaniem transakcji, a więc z wszystkim co za tym idzie — koniecznością posiadania portfela, środków. Twórcy tego projektu mogą jednak wykonać transakcję za tego użytkownika. Musi mieć jednak to dla nich jakąś wartość. I tutaj dochodzimy do momentu — w którym momencie będzie to opłacalne. Może w przypadku wysłania pierwszego ogłoszenia? Może w przypadku każdego użytkownika przy rejestracji? To już zależy od konkretnego przypadku i modelu biznesowego.

Może wystąpić sytuacja, że każda aplikacja będzie miała swój rynek

Jak na tym zarobić?

Kluczowymi aspektami dobrze działającego rynku jest spotkanie się potrzeb obu stron. A więc z jednej strony chcemy, żeby ludzie korzystali z rynku — zlecali swoje transakcje — a z drugiej strony nagradzamy agentów, którzy je wykonują. I to jest dobry moment, że opowiedzieć więcej o agentach wykonujących transakcje. Prosty przykład takiego agenta to program, który można uruchomić na swoim komputerze (lub w chmurze), który będzie działał cały czas. Jako, że agent musi jakoś dowiedzieć się o transakcjach, które mają być wykonane, a potem je wykonać — potrzebne jest połączenie z internetem. W przypadku wykonywania transakcji potrzebna jest również niewielka ilość kryptowaluty. Za wykonywanie transakcji otrzymuje się zwrot kosztów oraz nagrodę — ta jest efektem działania rynku i ustalana przez użytkowników.

Z jednej strony użytkownik zlecający transakcję, z drugiej agent wykonujący

Można tutaj znaleźć pewne podobieństwa do procesu kopania kryptowaluty. Osobiście wyobrażam sobie to tak, że w przyszłości jako dodatek do klienta blockchain — Parity, Geth czy innego — będziemy również uruchamiali swojego execution agenta i zarabiali zarówno na miningu, jak i automatycznym wykonywaniu transakcji na czyjeś zlecenie (do działania agenta nie jest wymagana interakcja człowieka). Według niektórych informacji w tej chwili powstaje klient Ethereum napisany w języku Python, który docelowo ma obsługiwać pluginy (napisane również w tym języku). Nietrudno jest sobie wyobrazić powstanie agentów execution markets funkcjonujących właśnie jako takie pluginy. Być może również kwestią czasu będzie podobna architektura dla klientów Geth i Parity.

Użytkownik zleca transakcję przez publikację podpisanej wiadomości, ale jest ona wykonywana przez egzekutora

Przyszłość

Temat jest gorąco dyskutowany w systemie Ethereum i wiele projektów jest nim zainteresowanych. Jeśli chodzi o standardy, to wciąż nie ma jednego sposobu implementacji, który zostałby powszechnie przyjęty. Rodzi to ryzyko fragmentacji — wielu architektur i osobnych rynków, z różną ilością agentów wykonujących transakcję. Jeśli agentów w danym rynku będzie bardzo mało, może być on niestabilny i nie spełniać swojej funkcji. Dlatego można wyróżnić kilka punktów, które pomogłyby w tworzeniu i adopcji tych systemów:

Z jednej strony execution markets mogą pomóc aplikacjom w zdobyciu nowych użytkowników, a z drugiej same zależą od ich liczby. To znaczy — ludzie muszą chcieć korzystać z systemów blockchain i wysyłać swoje transakcje, żeby część z nich trafiała na execution market. Obecnie, jak możemy zauważyć przeglądając ostatnie transakcje w Ethereum, ludzie raczej korzystają z decentralizowanych giełd, biorą udział w ICO i grach w stylu CryptoKitties. Na ruch w aplikacjach, które zmieniają świat na lepsze być może będziemy musieli jeszcze poczekać.

Zapraszamy do dyskusji
Nie ma więcej wpisów

Send this to a friend