Skip to content Skip to sidebar Skip to footer

The Graph to zdecentralizowany protokół indeksujący, który służy do pobierania i organizowania danych z sieci blockchain takich jak Ethereum, działając dokładnie tak samo jak wyszukiwarka Google dla stron internetowych. System ten wykorzystuje otwarte interfejsy programowania aplikacji nazywane subgrafami, by aplikacje Web3 mogły błyskawicznie odpytywać łańcuchy bloków o konkretne informacje za pomocą zapytań GraphQL. To rozwiązuje podstawowy problem technologiczny związany z odczytem historii transakcji.

Prawda jest zresztą absolutnie taka, że budowanie dApps bez systemu indeksującego to droga przez mękę. Zwykłe węzły RPC nie nadają się do skomplikowanych kwerend. Odpytywanie ich o dane historyczne przypomina próbę znalezienia konkretnego słowa w książce telefonicznej poprzez czytanie jej od tyłu, strona po stronie.

Jak dokładnie działa indeksowanie danych w protokole The Graph?

Architektura opiera się na prostym założeniu. Zamiast zmuszać każdą aplikację do samodzielnego skanowania całego łańcucha Ethereum w poszukiwaniu zmian w smart kontraktach, sieć robi to za nich i układa te informacje w gotowe do użycia bazy. Programiści piszą subgrafy. Definiują w nich, jakie dokładnie zdarzenia z blockchaina mają być śledzone i w jaki sposób należy je zapisać. Gdy smart kontrakt emituje zdarzenie, węzły protokołu wychwytują je, przetwarzają zgodnie z logiką subgrafu i aktualizują lokalną bazę danych.

Brak tego mechanizmu to techniczne samobójstwo dla projektów Web3.

Kiedy użytkownik wchodzi na giełdę zdecentralizowaną typu Uniswap i widzi historyczne wykresy cen tokenów, te dane nie pochodzą bezpośrednio z blockchaina. Pochodzą z subgrafu The Graph. Wyciągnięcie takich statystyk z surowego łańcucha zajęłoby minuty. Tu odpowiedź wraca w ułamku sekundy.

Skąd wziął się problem z odczytem danych z blockchaina?

Blockchain to po prostu dopisywana na końcu księga główna. Ma świetne właściwości do zapisu danych i gwarantowania ich niezmienności. Ale ma fatalne właściwości do ich odczytu. Każdy nowy blok zawiera paczkę transakcji. Jeśli chcemy dowiedzieć się, ile tokenów ERC-20 posiadał dany adres dwa lata temu w czwartek, musimy przeskanować każdy blok od tamtego czasu, odtworzyć stan maszyny wirtualnej i zsumować salda.

Zrobiliśmy na wdrożeniu systemu biletowego w formie NFT dla małego klubu muzycznego na Pradze Północ w Warszawie taki właśnie błąd. Początkowo próbowaliśmy czytać stan posiadania biletów bezpośrednio z węzła Infura. Wszystko działało świetnie na środowisku testowym przy pięciu użytkownikach. Wrzuciliśmy to na produkcję w piątek wieczorem. Gdy sto osób naraz próbowało wejść do klubu i aplikacja odpytywała blockchain o ich tokeny, node po prostu ZAMARŁ. Zablokował nas za przekroczenie limitów zapytań. Bramkarz stał i patrzył na kręcące się kółko ładowania na tablecie. Musieliśmy wpuścić ludzi na słowo. W poniedziałek rano przepisaliśmy logikę na The Graph. Subgraf indeksował zdarzenia “Transfer” w czasie rzeczywistym. Problem zniknął natychmiast.

P O L E C A M Y:

Logo Binance
Zarejestruj się na Binance - największej giełdzie kryptowalut na świecie i odbierz zniżkę na prowizje!
Odbierz zniżkę

(Prawda jest taka, że środowisko Web3 jest pełne niedoróbek, a deweloperzy często udają, że wszystko działa idealnie. Pisanie dokumentacji o 3 nad ranem na szybkiego, zrezygnowanego przez awarie na wdrożeniu po potyczkach u siebie w oddziale IT uczy pokory. Czasem narzędzia, które mają “rewolucjonizować finanse”, wywracają się na głupim odczycie bazy danych. Dlatego protokoły indeksujące to nie jest żadna innowacja, to wymóg sanitarny).

Kto tworzy sieć The Graph i jakie role pełnią uczestnicy?

Zdecentralizowany charakter tego systemu wymaga pracy wielu stron. Nie ma tutaj jednej firmy, która trzyma serwery w piwnicy. Sieć opiera się na ekonomii kryptowalutowej z użyciem tokena GRT. Uczestnicy dzielą się na cztery główne grupy.

  • Indeksatorzy (Indexers) to operatorzy węzłów. Utrzymują sprzęt serwerowy i przetwarzają dane. Zastawiają własne tokeny GRT, by udowodnić swoje intencje. Pobierają opłaty za zapytania.
    (Chociaż prawdę mówiąc brakuje nam twardych danych za wczoraj co do rentowności małych węzłów, więc wydaje się to tylko jedną z możliwych hipotez na najbliższy kwartał przed spowolnieniem rynku, że opłaca się to wyłącznie dużym graczom).
  • Kuratorzy (Curators) sygnalizują. Wskazują, które subgrafy są wartościowe i warte indeksowania.
  • Delegatorzy (Delegators) po prostu pożyczają swoje tokeny indeksatorom za procent od zysków. Nie muszą znać się na serwerach.
  • Konsumenci (Consumers) to końcowe aplikacje dApps płacące za zapytania do API.

Zastanawiacie się zresztą, dlaczego to na produkcji tak wyje na testach po drodze u zwykłych dostawców? Sam się nad tym borykałem dzisiaj u siebie we wtorek. Odpowiedź tkwi w asymetrii obciążenia. Odczytów jest tysiące razy więcej niż zapisów.

Dlaczego delegatorzy i kuratorzy są potrzebni?

Ekonomia tokenowa musi filtrować śmieci. Bez kuratorów indeksatorzy nie wiedzieliby, na które subgrafy marnować moc obliczeniową. Każdy może napisać subgraf, nawet bezsensowny. Kuratorzy ryzykują własne pieniądze (tokeny GRT), stawiając je na konkretne subgrafy. Jeśli wskażą dobry projekt, z którego korzysta dużo aplikacji, dostają część opłat. Jeśli wskażą martwy projekt, tracą.

Z kolei delegatorzy zapewniają bezpieczeństwo kapitałowe. Indeksator musi mieć dużą stawkę (stake), by sieć przydzielała mu zapytania. Zwykły programista w piwnicy nie ma milionów dolarów w GRT. Zbiera je od delegatorów.

Do czego programiści Web3 używają zapytań GraphQL?

GraphQL to technologia stworzona lata temu przez Facebooka. Pozwala aplikacji poprosić o dokładnie takie dane, jakich potrzebuje, w jednym zapytaniu. W architekturze The Graph sprawdza się to genialnie.

Technologia Metoda pobierania danych Ilość zapytań
Zwykły węzeł RPC Pobiera całe bloki, aplikacja musi sama filtrować. Tysiące
The Graph (GraphQL) Pobiera wyselekcjonowane pola (np. tylko cenę i datę). Jedno

Zmieniliśmy te zasady na robocie dość szybko. Kiedyś budowaliśmy własne serwery indeksujące w oparciu o Node.js i bazy PostgreSQL. Utrzymanie tego było koszmarem. Gdy blockchain miał reorganizację bloków (chain reorg), nasza lokalna baza się rozjeżdżała. The Graph radzi sobie z reorganizacjami łańcucha natywnie. Jeśli sieć główna odrzuci blok, subgraf automatycznie cofa zmiany w swojej bazie. To zdejmuje z barków programistów ogromny ciężar.

Dobrym pomysłem jest rozpoczęcie nauki od analizy otwartych subgrafów. Wejdź na platformę Graph Explorer, znajdź subgraf Aave lub Uniswap i przetestuj zapytania w przeglądarce. Zobaczysz surowy JSON wracający w milisekundach.

Jaka jest rola tokena GRT w ekosystemie?

Token GRT nie jest memecoinem do spekulacji. Pełni funkcję paliwa użytkowego. Każde zapytanie do sieci kosztuje ułamek centa, opłacany w GRT. Aplikacje zasilają swoje konta billingowe, a protokół automatycznie spala część tych opłat i dystrybuuje resztę do indeksatorów i delegatorów.

Istnieje też mechanizm karania, zwany slashingiem. Jeśli indeksator zacznie oszukiwać i podawać sfałszowane dane z blockchaina (na przykład zawyży cenę tokena w odpowiedzi na zapytanie), arbiter sieciowy to wykryje. Część zastawionych przez niego tokenów GRT zostaje bezpowrotnie spalona. To twardy, matematyczny bat na nieuczciwych operatorów. W zdecydowanej większości przypadków ten strach przed utratą kapitału wystarcza, by utrzymać uczciwość w sieci. Prawie osiemdziesiąt procent węzłów działa bez najmniejszej awarii od miesięcy.

Czy The Graph to jedyne rozwiązanie na rynku?

Rynek nie znosi próżni. Mimo dominacji The Graph ma mocną konkurencję.

Rozwiązania takie jak Subsquid czy Goldsky oferują podobne funkcje. Subsquid poszedł o krok dalej w kwestii modularności, dzieląc proces na pobieranie danych (data lake) i ich przetwarzanie. Daje to często szybsze czasy synchronizacji nowych subgrafów. Synchronizacja dużego subgrafu w The Graph potrafi zająć kilka dni, co doprowadza deweloperów do szału.

Zdarzało się, że musieliśmy czekać na synchronizację zmian w kodzie przez cały weekend. Wrzucasz poprawkę w piątek, a dane są gotowe w niedzielę wieczorem. To jest bez mała najgorsza opcja z wszystkich przy szybkich iteracjach w startupie.

Jakie są wady i ograniczenia tego protokołu?

Architektura oparta na kryptografii i decentralizacji ma swoją cenę.

P O L E C A M Y:

Logo Binance
Zarejestruj się na Binance - największej giełdzie kryptowalut na świecie i odbierz zniżkę na prowizje!
Odbierz zniżkę

Zależność od bram dojazdowych (gateways). Przez długi czas większość zapytań przechodziła przez scentralizowane serwery utrzymywane przez The Graph Foundation. Firma powoli to decentralizuje, ale proces trwa. Jeśli padnie brama wejściowa, aplikacje tracą dostęp do danych, nawet jeśli same węzły indeksatorów działają poprawnie.

Trudność w obsłudze bardzo niestandardowych łańcuchów. Protokół świetnie radzi sobie z maszynami EVM (Ethereum Virtual Machine). Gdy wchodzimy w środowiska takie jak Solana czy Cosmos, integracja staje się bolesna i często wymaga pisania własnego oprogramowania od zera.

Twoja kolej na weryfikację kodu

Zostaw teorię. Zaloguj się do Graph Studio, zdeployuj najprostszy subgraf śledzący kontrakt ERC-721 i sprawdź logi zapytań. Albo nadal płać krocie za odpytywanie węzłów RPC i dziw się, że aplikacja dławi się przy dziesięciu użytkownikach. Decyzja należy do Ciebie.

Najczęściej zadawane pytania (FAQ)

  • Czym jest The Graph?
    The Graph to zdecentralizowany protokół do indeksowania i odpytywania danych z sieci blockchain, działający na podobnej zasadzie co wyszukiwarki internetowe dla stron WWW.
  • Czym są subgrafy w sieci The Graph?
    Subgrafy to otwarte interfejsy API definiujące, jakie dane z blockchaina mają być indeksowane i w jaki sposób aplikacje Web3 mogą je odpytywać za pomocą GraphQL.
  • Do czego służy token GRT?
    Token GRT służy do opłacania zapytań w sieci, a także do stakingu przez indeksatorów, kuratorów i delegatorów w celu zabezpieczenia protokołu.
  • Kim są delegatorzy w The Graph?
    Delegatorzy to uczestnicy sieci, którzy nie uruchamiają własnych węzłów, ale użyczają swoje tokeny GRT indeksatorom w zamian za część zysków z opłat.
  • Dlaczego odczyt danych z blockchaina jest trudny?
    Blockchain jest zoptymalizowany pod kątem bezpiecznego zapisu historii transakcji w blokach, co sprawia, że wyszukiwanie konkretnych zdarzeń historycznych wymaga skanowania całego łańcucha od początku.
  • Czym różni się The Graph od zwykłego węzła RPC?
    Węzeł RPC zwraca surowe bloki danych wymagające przetworzenia przez aplikację, podczas gdy The Graph zwraca natychmiast sformatowane i przefiltrowane dane za pomocą zapytań GraphQL.

Bibliografia

1. The Graph Foundation – https://thegraph.com
2. Ethereum Foundation – https://ethereum.org
3. GraphQL Documentation – https://graphql.org
4. Messari Research – https://messari.io
5. CoinMarketCap – https://coinmarketcap.com

Skomentuj artykuł lub pozostaw opinię