Przejdź do treści

Polskie 12 groszy w świecie wyroczni

Jeśli jesteś w świecie krypto dłużej niż od wczoraj, to na pewno słyszałeś o Wyroczniach (ang. oracles). Są to systemy, które dostarczają na blockchain informacje ze świata zewnętrznego. Gdzie światem zewnętrznym jest wszystko co nie jest danym blockchainem. Więc także inne sieci krypto. Ethereum nie ma pojęcia o tym, co się dzieje na Bitcoinie. Chyba, że ktoś mu powie. Tym kimś są właśnie wyrocznie. 

Dobra wyrocznia powinna być przede wszystkim wiarygodna. Dostarczać rzetelne, sprawdzone i prawdziwe dane. Ponieważ później w oparciu o nie smart contracty będą przeprowadzać operacje. W których jak coś pójdzie nie tak, to mamy nieodwracalne straty finansowe.

Wyrocznie są powszechnie wykorzystywane w DeFi. Głównie do pobierania informacji o cenie różnych walorów. Zarówno tych z tradycyjnego świata finansów, jak i z krypto. Będzie to zarówno cena tokenów z scentralizowanych giełd. Jak i również wyrocznie onchain przygotowujące dane z innych protokołów na tej samej sieci. Wyrocznie ceny TWAP na DEXach. I tutaj jakakolwiek pomyłka (bądź cenowa minipulacja) może prowadzić do przeprowadzenia nieprawidłowych transakcji wartych miliony. 

Na przykład ktoś chce zaciągnąć w DeFi pożyczkę. Zastawiając USDC chce pożyczyć ETH. Mamy tutaj zastaw nadmiarowy, więc jest to bezpieczne dla protokołu. Ale tylko pod warunkiem, że jest on w stanie prawidłowo wycenić wartość zarówno zastawu jak i pożyczki. Jeśli komuś przy cenie 2000 USD za ETH udałoby się przekonać (poprzez wyrocznie) protokół pożyczkowy, że obecna cena to 500 USD. To pod zastaw swoich stablecoinów mógłby pożyczyć znacząco więcej Etherów, niż przy prawidłowej cenie. I następnie sprzedać je gdzie indziej (już po cenie 2000 USD za sztukę). Inkasując za to więcej stable niż zostawił w zastawie. Ma więc profit, nie muszą się martwić o spłatę pożyczki. O co będzie martwił się jednak protokół pożyczkowy i umieszczający na nim kapitał na lokacie. Bowiem prowadzi to do powstanie złego, niespłacalnego długu. Który ktoś (protokół albo użytkownicy) będzie musiał pokryć.

Widzimy więc jak ważne jest, aby dostarcza onchain informacja była rzetelna i prawdziwa. Jest to tutaj najważniejszy aspekt. Ale nie jedyny godnych uwagi. Dwoma kolejnymi są częstotliwość oraz koszty dostarczenia takiej informacji na łańcuch. 

Kiedyś dawno temu wyrocznie działały jak API. Jak protokół chciał jakąś informację, to wysyłał do wyroczni transakcję, w której mówił: „siemka, potrzebuje wiedzieć ile kosztuje akcja APPLE”. Po czym wyrocznia sobie to sprawdzała i w kolejnej transakcji do protokołu podawała odpowiedź: „hejka, akcja APPLE kosztuje teraz 12,45 USD, pozdrów Tomka”. 

Naczelną wadą tego typu rozwiązań, że trzeba poczekać na informację o cenie. Co najmniej do kolejnego bloku. W którym dostaniemy odpowiedź od wyroczni. Co powoduje, że akcje związane z korzystanie wyroczni muszą być rozbijane na więcej niż jedną transakcję. Pierwsza od przedstawienia intencji, druga do wykonania po otrzymaniu informacji z Wyroczni. A co za tym idzie, tego typu transakcje nie mógłby być atomowa. W rozumieniu, że wykonają się całe albo wcale (i to w obrębie jednej zbiorczej transakcji). Co z kolei nie pozwala na wykorzystanie jednej z największych zalet DeFi: kompozycyjności. Realizacji w jednej zbiorczej transakcji wielu akcji na wielu protokołach i smart contractach.

Dlatego potem pomyślano nad tym, aby te najważniejsze informacje wyrocznie wrzucały onchain w trybie ciągłym. Najlepiej w formie nieprzerwanego strumienia świadomości. Co każdy blok transakcyjny. A protokoły czy inni użytkownicy korzystali by sobie z nich gdy potrzebują. No ale to niestety kosztuje. Zwłaszcza na Ethereum. Każda transakcja kosztuje. Czasem nawet dziesiątki dolarów. Więc może nieco blok, tylko rzadziej. Zaoszczędzimy na tym pieniądz. Tylko to sprawi, że cena podana onchain przez wyrocznie może być już nieaktualna. Im dłuższe odstępy między aktualizacją, tym mniejsze koszty. Ale też większego ryzyko nie aktualnej ceny oraz większego odchylenia tej ceny. Co wywołuje kolejne ryzyko. Tzw. front runningu. 

Jeśli na przykład cena z wyroczni zmienia się co 50 bloków i następna aktualizacja będzie w bloku kolejnym. I od czasu poprzedniej cena zmieniła się znacząco, to ja w bloku poprzedzającym aktualizację ceny mogę otworzyć pozycję, która ma gwarantowany zysk w przyszłym bloku ze względu na aktualizację tej ceny. A jak ja mam swój zysk, to ktoś inny ma stratę. W przypadku zdecentralizowanych protokołów do perpetuali często jest to sam protokół, który zapewnia tam płynność. Ewentualnie druga strona rynku. Kto by to nie był, to nie jest zadowolony. Dlatego front running był zawsze wyzwaniem dla tego typu protokołów. Od Synthetixa, przez GMX po GAINS. Jakby ktoś chciał się wgryźć w temat głębiej, to tutaj jest blog post o tym, jak z tym na przestrzeni czasu radził sobie Synthetix.

Problem ten po części można zminimalizować umawiając się, że cena nie będzie aktualizowana przez wyrocznię co jakiś czas (mierzony w ilościach bloków). Tylko co jakieś odchylenie ceny. Czyli wysyłamy nową (kosztowną) transakcję z informacją o cenie, tylko gdy ta różni się od poprzedniej o jakąś z góry zdefiniowaną wartość. Właśnie w ten sposób działają m.in. wyrocznie Chainlinka. W ten sposób ograniczamy wielkość odchylenia ceny i potencjalnych manipulacji z tym związanych. Ale ich nie likwidujemy. Pozostając bardzo kosztownymi w okresie silnej zmienności.


oddział zamknięty

dalsza treść tego artykułu dostępna jest tylko dla wtajemniczonych.
zarejestruj się aby dołączyć do tego zacnego grona



masz już konto tutaj bądź na Krypto Krypcie? zaloguj się na nie

2 komentarze

  1. Jakub Jakub

    Wpisuje do kajetu – datę i tokeny 😉

  2. Artur Artur

    Świetny artykuł

Komentarze są wyłączone, ale trackbacki i pingbacki są aktywne.