محبوبیت گرایشهای هوش مصنوعی (AI) و دادههای کلان (big data)، بهویژه با ظهور ChatGPT و محصول جدید گوگل به اسم bard، جذابیت قابلتوجهی پیدا کرده است که منجر به افزایش قیمت رمزارز گراف در سال ۲۰۲۳ شد. گراف مانند گوگل برای بلاکچین است و در جستوجوی اطلاعات داخل بلاکچین، کارآیی بسیاری دارد که در ادامه این مقاله، با جزئیات به بررسی گراف پرداخته خواهد شد.
گراف (GRT) چیست؟
گراف (GRT) یک پروتکل فهرست برداری غیرمتمرکز برای پرسش و پاسخ از دادههای بلاکچین است. ایندکس گرفتن از دادههای بلاکچین، به معنای واقعی کلمه دشوار است و GRT برای حل این موضوع به وجود آمده است. منظور از پرسوجو (Query) در شبکه GRT، درخواست داده از سمت Subgraph (یک زیرشاخه از شبکه graph و دارای نرمافزار سفارشی) است که شرکتکنندگان شبکه (Indexer) به آن پاسخ میدهند. گراف این امکان را فراهم میکند که دادههایی را که پرسوجوی مستقیم آنها دشوار است، به آسانی پرسوجو شوند.
پروژههایی با قراردادهای هوشمند پیچیده، مانند Uniswap و NFT
Bored Ape Yacht Club یا به اختصار BAYC، دادهها را مستقیماً در بلاکچین اتریوم ذخیره میکند. همین مسئله موجب میشود که خواندن هر اطلاعاتی (بهجز دادههای اصلی) بهصورت مستقیم از بلاکچین، واقعاً دشوار شود.
برای مثال، درمورد Bored Ape Yacht Club، ما میتوانیم عملیات خواندن اطلاعات اولیه در قرارداد هوشمند را که برنامهریزیشده هستند، مانند اطلاعات صاحب یک nft خاص یا URL آن را به کمک شناسه کاربری (ID) بهصورت مستقیم به دست آوریم؛ اما به پرسوجوها و عملیاتهای پیشرفتهتر در دنیای واقعی مثل روابط، جستوجوی جزئیات و فیلترهای مهم، نمیتوان دسترسی داشت.
بهعنوان مثال، اگر بخواهید درمورد nft هایی که متعلق به یک آدرس خاص هستند پرسوجو کنید و یا یکی از ویژگیهای آن nft را در یک آدرس فیلتر کنید، نمیتوانید با تعامل مستقیم با خود قرارداد، آن اطلاعات را به دست آورید.
برای به دست آوردن این دادهها، باید تکتک نقلوانتقالاتی که تاکنون منتشر شده است را پردازش کنید، ابردادههای IPFS را با استفاده از شناسه Token و هش IPFS بخوانید و سپس آنها را جمع آوری نمایید. حتی برای این نوع سؤالات نسبتاً ساده، ساعتها یا حتی روزها طول میکشد تا یک برنامه غیرمتمرکز (dapp) که در مرورگر اجرا میشود، پاسخی دریافت کند.
پروتکل GRT راهکاری برای این مسئله ارائه داده است؛ این پروتکل غیرمتمرکز، هم از دادهها ایندکس میگیرد و هم پرسش و پاسخ از دادههای بلاکچین را بهصورت کارآمد امکانپذیر میکند.
نحوه عملکرد گراف
گراف با استفاده از توصیفات زیرگرافها (subgraph manifest) میفهمد که از کدام دادههای اتریوم ایندکس بگیرد و چطور باید این کار را انجام دهد.
توصیفات زیرگرافها، موارد زیر را شرح میدهند:
- قراردادهای هوشمندِ موردعلاقه برای یک زیرگراف را مشخص میکنند.
- رویدادهای موجود در قراردادهای هوشمند که باید به آنها توجه کرد.
- تطابق دادههای این رویدادها با دادههایی که پروتکل GRT در دیتابیس خود ذخیره میکند (به این پروسه mapping میگویند).
هنگامی که توصیفات زیرگراف را نوشتید، از Graph CLI برای ذخیره تعریف در IPFS استفاده میکنید و به نمایهساز (indexer) میگویید که شروع به نمایهسازی دادهها برای آن زیرگراف کند.
تصویر زیر، جزئیات بیشتری درمورد جریان داده پس از شکلگیری توصیفات زیرگراف ارائه میدهد که با تراکنشهای اتریوم سروکار دارد:
مراحل زیر، چرخه فوق را شرح میدهند
- یک برنامه غیرمتمرکز (dapp)، دادهها را از طریق یک تراکنش در یک قرارداد هوشمند به اتریوم اضافه میکند.
- قرارداد هوشمند یک یا چند رویداد را هنگام پردازش تراکنش منتشر میکند.
- گرههای شبکه graph بهطور مداوم اتریوم را برای بلوکهای جدید که ممکن است سابگراف شما حاوی آن باشد، اسکن میکنند.
- گرههای شبکه graph، رویدادهای اتریوم را برای زیرگراف شما در این بلوکها پیدا میکنند و کنترلکنندههای نقشهبرداری (mapping) را که ارائه کردهاید، اجرا مینمایند. نقشهبرداری (mapping) یک ماژول WASM است و دادهای را که گرههای graph در پاسخ به رویدادهای اتریوم ذخیره میکنند، ایجاد یا بهروزرسانی میکند.
- Dappها نودهای گراف را با استفاده از نقطه پایانی GraphQL برای دادههای ایندکسشده از بلاکچین جستوجو میکنند. اطلاعات بهصورت گرهبهگره پرسوجو شده و با استفاده از ظرفیت indexing، تطابق دادهها انجام شده و dapp این دادهها را در یک رابط کاربری قدرتمند برای کاربران نمایش میدهد که از آن برای صدور تراکنشهای جدید در اتریوم استفاده میکند.
این چرخه به صورت مداوم تکرار میشود.
در ساختار شبکه گراف، چهار بخش اصلی وجود دارد که سیستم The Graph را اجرا میکنند:
- Consumers (مصرفکنندگان): مصرفکنندگان برای بازیابی دادهها (پرسوجو) به indexers هزینههایی پرداخت میکنند. آنها معمولاً کاربران نهایی هستند اما میتوانند یک وبسرویس یکپارچه با The Graph نیز باشند.
- Indexers (نمایهگذارها): گرههای عملگرای شبکه (Graph Nodes) هستند که دادهها را روی زنجیره پردازش و ذخیره میکنند. آنها برای کارشان با توکنهای GRT پاداش میگیرند.
- Curators (متصدیان): متصدیان، ضریب اطمینان منابع داده را تعیین میکنند. آنها به زیرگرافها سیگنال میدهند و به indexrها اطلاع میدهند که کدام زیرگراف باید استفاده شود.
- Delegators: شرکتکنندگانی هستند که توکنهای GRT را از طرف Indexers واریز میکنند. آنها بدون بهرهبرداری از گرههای گراف، پاداش دریافت میکنند.
خلاصهای از گراف به بیان ساده
The Graph در سال 2018 توسط براندون رامیرز، یانیو تال و جانیس پولمن تأسیس شد. GRT یک توکن کاربردی از The Graph (گراف) است. گراف با نام مستعار «گوگلِ بلاکچین» شناخته میشود؛ زیرا گوگل از الگوریتمهای پیشرفته و تکنیکهای یادگیری ماشینی برای فهرستبندی و سازماندهی حجم زیادی از دادهها در اینترنت استفاده میکند.
به همین ترتیب، پروتکل GRT از الگوریتمهای نمایهسازی قدرتمند برای جستوجو و بازیابی سریع و کارآمد دادههای زنجیره بلوکی استفاده مینماید. بهطور خلاصه، گوگل، موتور جستوجوی اینترنتی امروزی است، در حالی که The Graph، موتور جستوجوی Web3 در آینده خواهد بود.
هنگام ساخت dApps در شبکهای مانند اتریوم، به دادههایی نیاز است که یکی از آنها دادههای روی زنجیره است. اگرچه اتریوم دادههای باز زیادی دارد، اما بررسی دادههای خاص برای ایجاد dAppهای پیچیدهتر آسان نیست. نمایهسازی دادههای بلاکچین برای توسعهدهندگان بسیار دشوار است. GRT این مشکل را از طریق فناوری خود حل نموده و کار توسعهدهندگان را برای بازیابی دادههای ساده و پیچیده برای ساخت dApps آسان کرده است.