ბლოკჩეინის ტექნოლოგიაში მონაცემების ჩაწერა (ტრანზაქციების შესრულება) საკმაოდ მარტივია, თუმცა კონკრეტული ისტორიული მონაცემების სწრაფად წაკითხვა და ფილტრაცია პირდაპირ სმარტ კონტრაქტიდან ფაქტობრივად შეუძლებელია. თუ დეცენტრალიზებულ აპლიკაციას (dApp) სჭირდება აჩვენოს მომხმარებლის მიერ განხორციელებული ყველა ტრანზაქციის ისტორია, NFT-ების კოლექცია ან დეცენტრალიზებული ბირჟის (DEX) სავაჭრო მოცულობები, მას სჭირდება მონაცემთა ინდექსირება. სწორედ ამ პრობლემას წყვეტს ინდექსერების (Indexers) დანერგვა და ე.წ. Subgraph-ების შექმნა. ისეთი პროტოკოლები, როგორებიცაა The Graph და Subsquid, წარმოადგენენ Web3 ეკოსისტემის მონაცემთა ბაზებს. ისინი "უსმენენ" ბლოკჩეინზე მომხდარ მოვლენებს (Events), ამუშავებენ მათ და ინახავენ სტრუქტურირებულ ფორმატში, რათა Frontend აპლიკაციამ შეძლოს ამ მონაცემების მყისიერად წამოღება GraphQL ენის გამოყენებით. საქართველოში მოქმედი კრიპტო კომპანიებისთვის, რომლებიც ქმნიან რთულ DeFi პროტოკოლებს, ანალიტიკურ პლატფორმებსა თუ თამაშებს (GameFi), ინდექსერის პროფესიონალური დანერგვა აბსოლუტურად აუცილებელია. ამ სერვისის გარეშე, აპლიკაციის ინტერფეისი იქნება უკიდურესად ნელი, დაიტვირთება არასაჭირო RPC მოთხოვნებით და ვერ უზრუნველყოფს თანამედროვე ვებ-სტანდარტების შესაბამის მომხმარებლის გამოცდილებას (UX). სწორად აწყობილი Subgraph არის dApp-ის სწრაფი და სტაბილური მუშაობის საწინდარი.
რას მოიცავს მომსახურება
ინდექსერის დანერგვისა და Subgraph-ის შექმნის სერვისი მოიცავს მონაცემთა ინჟინერიის (Data Engineering) სრულ ციკლს Web3 გარემოში:
- Subgraph-ის არქიტექტურის დიზაინი: სმარტ კონტრაქტების მოვლენების (Events) და ფუნქციების ანალიზი. GraphQL სქემის (Schema) შექმნა, რომელიც ზუსტად აღწერს იმ მონაცემთა სტრუქტურას (Entities), რაც აპლიკაციის ინტერფეისს (Frontend) ესაჭიროება.
- Mapping ლოგიკის პროგრამირება: AssemblyScript-ის (The Graph-ის შემთხვევაში) ან TypeScript-ის (Subsquid-ის შემთხვევაში) გამოყენებით სპეციალური სკრიპტების წერა, რომლებიც თარგმნიან ბლოკჩეინის ნედლ მონაცემებს და ინახავენ მათ განსაზღვრულ სქემაში.
- ინდექსერის ლოკალური და Hosted განთავსება: ლოკალური ინდექსერის (Graph Node) ინსტალაცია Docker-ის გამოყენებით ტესტირებისთვის, და შემდგომ მისი განთავსება The Graph-ის დეცენტრალიზებულ ქსელში (Decentralized Network) ან ოფიციალურ Hosted Service-ზე, მაღალი ხელმისაწვდომობისთვის.
- Subsquid არქიტექტურის დანერგვა: ალტერნატიული, მაღალსიჩქარიანი ინდექსერის (Subsquid) კონფიგურაცია, რომელიც განსაკუთრებით ეფექტურია დიდი მოცულობის ისტორიული მონაცემების სწრაფი სინქრონიზაციისთვის EVM და Substrate ქსელებზე.
- მონაცემთა ისტორიული სინქრონიზაცია: ინდექსერის კონფიგურაცია ისე, რომ მან წაიკითხოს ბლოკჩეინის ისტორია კონკრეტული ბლოკიდან (Genesis block ან კონტრაქტის დიფლოიმენტის ბლოკი) და სწრაფად მოახდინოს სრული ბაზის სინქრონიზაცია.
- GraphQL API-ის ოპტიმიზაცია: მოთხოვნების (Queries) ოპტიმიზაცია და პაგინაციის (Pagination) გამართვა, რათა მომხმარებლის ინტერფეისმა მონაცემები მიიღოს მილიწამებში, სერვერის გადატვირთვის გარეშე.

