في قلب بنية The Graph تقع عقدة Graph. هذا المكون الرئيسي مسؤول عن فهرسة الرسوم البيانية الفرعية وإتاحة الوصول إلى البيانات الناتجة عبر واجهة برمجة تطبيقات GraphQL. إنه جوهر مكدس المفهرس، وتشغيله الفعال أمر بالغ الأهمية لتشغيل مفهرس ناجح. تعمل Graph Node بتنوع، فهي قادرة على العمل على كل من البيئات المعدنية والسحابية، مما يعكس القدرة على التكيف المطلوبة في المشهد الديناميكي لتقنية blockchain.
تعد قاعدة بيانات PostgreSQL جزءًا لا يتجزأ من تشغيل Graph Node، والتي تعمل كمخزن رئيسي. لا تحتوي قاعدة البيانات هذه على بيانات الرسم البياني الفرعي فحسب، بل تحتوي أيضًا على بيانات وصفية حول الرسوم البيانية الفرعية وبيانات الشبكة الأساسية مثل ذاكرات التخزين المؤقت للكتلة وeth_call. يعد تنظيم وإدارة قاعدة البيانات هذه أمرًا حيويًا للتشغيل السلس لعقدة الرسم البياني، مما يضمن سلامة البيانات وإمكانية الوصول إليها.
لفهرسة شبكات blockchain، يتصل Graph Node بعملاء الشبكة من خلال واجهة برمجة تطبيقات JSON-RPC المتوافقة مع EVM. يمكن أن يختلف هذا الإعداد من الاتصال بعميل واحد إلى ترتيب أكثر تعقيدًا يتضمن موازنة التحميل عبر عملاء متعددين. بالإضافة إلى ذلك، قامت The Graph بتطوير Network Firehose - وهي خدمة gRPC توفر تدفقًا منظمًا ومدركًا للتفرع من الكتل. على الرغم من أنه ليس من متطلبات المفهرسين حاليًا، إلا أن Firehose يمثل تقدمًا كبيرًا في دعم فهرسة الأداء على نطاق واسع.
يعد تفاعل Graph Node مع شبكة IPFS أمرًا بالغ الأهمية لتخزين البيانات التعريفية لنشر الرسم البياني الفرعي. تعمل عقدة IPFS المستضافة على مستوى الشبكة على تبسيط هذه العملية للمفهرسين. بالإضافة إلى ذلك، يضيف التكامل الاختياري مع خادم مقاييس Prometheus للمراقبة وإعداد التقارير طبقة أخرى من التطور، مما يمكّن المفهرسين من تتبع أداء عقدة الرسم البياني وتحسينه.
يسلط الإعداد المرن لـ Graph Node، بدءًا من خيارات التثبيت وحتى إمكانيات القياس، الضوء على التزام The Graph بتلبية الاحتياجات التشغيلية المختلفة. يمكن توسيع نطاق النظام أفقيًا باستخدام عقد رسم بياني وقواعد بيانات متعددة، مما يلبي المتطلبات المتزايدة للشبكة. يمكن للمستخدمين المتقدمين الاستفادة من خيارات تكوين Graph Node، التي تتم إدارتها من خلال ملف TOML أو متغيرات البيئة، لتحسين معالجة البيانات وتوزيع عبء العمل.
يمثل Firehose، الذي تم تصوره وتطويره بواسطة StreamingFast، ثورة في استخراج البيانات من عقد blockchain. تقوم هذه الأداة المبتكرة بتقسيم كل معاملة داخل كتلة blockchain إلى أصغر عناصرها، وحفظها كملفات بسيطة ومسطحة. هذه الملفات المسطحة ليست مجرد تنسيق تخزين؛ أنها تجسد نقلة نوعية في فهرسة البيانات. فهي تسهل المعالجة المتوازية، مما يؤدي إلى تسريع عمليات الفهرسة بشكل كبير. توفر هذه التقنية بيانات غنية ومدركة للشوكة من عقد blockchain المُجهزة مباشرةً إلى المستهلكين. من الناحية العملية، أظهرت Firehose براعتها من خلال توفير سرعات الالتقاط والمعالجة التي كان يُعتقد في السابق أنها بعيدة المنال، وبالتالي وضع معايير جديدة لاستخراج البيانات في النظام البيئي لـ The Graph.
تم تصميم التدفقات الفرعية، وهي امتداد للإمكانيات التي توفرها Firehose، لمعالجة البيانات عالية الأداء بطريقة متوازية تعتمد على التدفق أولاً. تتيح هذه الوحدات المكتوبة في Rust للمطورين إنشاء بيانات blockchain وفرزها وتخزينها وتحويلها لاستخدامات مختلفة. تكمن براعة Substreams في قدرتها على استخدام ملفات Firehose المسطحة لفهرسة البيانات بسرعات عالية بشكل استثنائي. يضمن هذا النهج أن التدفقات الفرعية ليست فقط ذات كفاءة عالية في معالجة البيانات ولكن أيضًا في توزيعها بمجرد توفرها، بدلاً من الاعتماد على الطلبات المستمرة.
يوفر تكامل Firehose وSubstreams ضمن نظام The Graph البيئي مزيجًا قويًا لمعالجة البيانات. يضمن Firehose التسليم السريع لبيانات blockchain بتنسيق محسّن، بينما تعمل Substreams على تحسين هذه البيانات ومعالجتها. تؤدي هذه العلاقة التآزرية إلى كفاءة لا مثيل لها في التعامل مع كميات كبيرة من بيانات blockchain، مما يؤدي إلى رفع قدرات The Graph بشكل كبير.
أصبحت الرسوم البيانية الفرعية هي المعيار الصناعي في فهرسة بيانات blockchain منذ تقديمها بواسطة The Graph في عام 2018. وهي في الأساس واجهات برمجة تطبيقات مفتوحة تقوم باستخراج البيانات ومعالجتها وتخزينها من سلاسل الكتل، مما يجعلها قابلة للاستعلام بسهولة عبر واجهة GraphQL. مع دعم أكثر من 85000 رسم بياني فرعي عبر أكثر من 40 سلسلة، أصبحت الرسوم البيانية الفرعية أمرًا لا غنى عنه لمطوري web3. إنها تسمح بالنشر السريع لقاعدة بيانات Postgres المليئة بالبيانات المفهرسة، والجاهزة للاستعلام عنها باستخدام طبقة GraphQL. تتيح الرسوم البيانية الفرعية للمطورين عرض مجموعة واسعة من بيانات blockchain في تطبيقاتهم اللامركزية، بدءًا من معاملات DeFi وحتى مصدر NFT، بطريقة منظمة وفعالة.
في المشهد المتطور باستمرار لتكنولوجيا blockchain، ظهرت الرسوم البيانية الفرعية كمفهوم محوري، مما أدى إلى تغيير الطريقة التي نتفاعل بها مع بيانات blockchain واستخدامها. تعمل واجهات برمجة التطبيقات المفتوحة هذه كوسطاء، حيث تعمل على سد الفجوة بسلاسة بين العالم اللامركزي لسلاسل الكتل والمجال المألوف للبيانات المنظمة. من خلال استخراج بيانات blockchain ومعالجتها وتنظيمها في تنسيق قابل للاستعلام، تعمل الرسوم البيانية الفرعية على تمكين المطورين من إنشاء تطبيقات مبتكرة تعتمد على البيانات.
توفر الرسوم البيانية الفرعية عددًا كبيرًا من المزايا، مما يجعلها خيارًا جذابًا للمطورين والمستخدمين على حدٍ سواء. وتضمن طبيعتها اللامركزية مقاومة الرقابة ووقت التوقف عن العمل، مما يعزز نظامًا بيئيًا آمنًا وموثوقًا للبيانات. بالإضافة إلى ذلك، فإن الرسوم البيانية الفرعية قابلة للتوسع بطبيعتها، وهي قادرة على التعامل مع كميات هائلة من البيانات دون المساس بالأداء. تعد فعالية التكلفة ميزة رئيسية أخرى، حيث غالبًا ما تكون الرسوم البيانية الفرعية أقل تكلفة من واجهات برمجة تطبيقات البيانات التقليدية.
تتكون الرسوم البيانية الفرعية من ثلاثة مكونات أساسية تعمل بشكل متناغم لتقديم قدراتها التحويلية:
البيان: يعمل البيان كمخطط للرسم البياني الفرعي، ويحدد مصادر البيانات والمخطط وكود AssemblyScript. فهو يحدد حدود البيانات التي سيقوم الرسم البياني الفرعي بفهرستها، مما يضمن التقاط المعلومات ذات الصلة فقط.
المخطط: يحدد المخطط بنية البيانات، على غرار مخطط المبنى. فهو يوضح الكيانات والحقول والعلاقات بين الكيانات، مما يوفر طريقة واضحة ومنظمة لتمثيل البيانات.
كود AssemblyScript: يعمل هذا الكود القابل للتنفيذ بمثابة العمود الفقري للرسم البياني الفرعي، حيث يقوم بترجمة البيانات الأولية من blockchain إلى تنسيق يمكن لمحرك GraphQL فهمه. كما أنه يتعامل مع فهرسة البيانات وتخزينها، مما يضمن إمكانية الوصول إليها وموثوقيتها.
يتضمن إنشاء رسم بياني فرعي سلسلة من الخطوات، تم تصميم كل منها بعناية لضمان وظائف الرسم البياني الفرعي وفعاليته:
التصور والتصميم: تبدأ الرحلة بفكرة واضحة عن البيانات التي سيتم فهرستها والتطبيقات التي ستوفرها. يتضمن ذلك تحديد الكيانات والحقول والعلاقات بينها، مما يضمن توافق بنية الرسم البياني الفرعي مع الغرض المقصود منه.
تطوير البيان والمخطط: تم تصميم البيان والمخطط بدقة، مما يوفر الأساس لبنية بيانات الرسم البياني الفرعي. يحدد البيان مصادر البيانات، بينما يحدد المخطط بنية البيانات، مما يضمن سلامة البيانات واتساقها.
تنفيذ كود AssemblyScript: تتم كتابة كود AssemblyScript، لترجمة بيانات blockchain الأولية إلى تنسيق يمكن لـ GraphQL فهمه. فهو يتعامل مع الفهرسة والتخزين واسترجاع البيانات، مما يتيح الوصول الفعال إلى البيانات المفهرسة.
بمجرد تطوير الرسم البياني الفرعي، فإنه يخضع لعملية نشر تقدمه للعالم:
تكامل Subgraph Studio: يعمل Subgraph Studio كمنصة مركزية لإدارة الرسوم البيانية الفرعية. فهو يسهل عملية النشر، مما يسمح للمطورين بنشر الرسوم البيانية الفرعية الخاصة بهم على الشبكة اللامركزية.
الفهرسة والتنظيم: يعد المفهرسون، المسؤولون عن جلب وتخزين بيانات blockchain، ضروريين لجعل الرسوم البيانية الفرعية في متناول المطورين. التنظيم، الذي يتم عادةً من خلال رموز GRT، يحفز المفهرسين على تحديد أولويات الرسوم البيانية الفرعية ذات الطلب المرتفع.
الاستعلام والاستخدام: يمكن للمطورين الآن الاستعلام عن الرسم البياني الفرعي المنشور باستخدام استعلامات GraphQL، واسترداد بيانات محددة مصممة خصيصًا لتلبية احتياجات تطبيقاتهم. يمكّن هذا التكامل السلس المطورين من تسخير بيانات blockchain للابتكار.
مع بدء الرسم البياني في عصره الجديد (سنستكشفه في الدرس 5)، من المتوقع بفارغ الصبر التطور المستمر لهذه التقنيات الأساسية - الرسوم البيانية الفرعية، وأنابيب الإطفاء، والتدفقات الفرعية. تم إعداد هذه المكونات للتوسع والتطور، لتلعب أدوارًا حيوية في تقديم خدمات بيانات جديدة وضمان تدفقات أسرع وأكثر معيارية للبيانات. على سبيل المثال، من المتوقع أن يكون Verifiable Firehose حلاً رائدًا للوصول إلى بيانات الايثيريوم التاريخية، ومعالجة تحديات معايير blockchain المتطورة.
من المهم التمييز بين الرسوم البيانية الفرعية والتيارات الفرعية لأنها تخدم أغراضًا مختلفة. تعتبر الرسوم البيانية الفرعية مثالية لاسترداد البيانات القياسية وإدارتها، مما يوفر سهولة الإعداد والاستخدام مع طبقة استعلام GraphQL. على العكس من ذلك، تم تصميم التدفقات الفرعية للتحليلات الأكثر تعقيدًا واحتياجات البيانات الضخمة، مما يوفر معالجة متوازية للبيانات ومرونة أكبر في معالجة البيانات وتخزينها. تسمح التدفقات الفرعية للمطورين بتحويل البيانات من تنسيقات الملفات الأساسية إلى نماذج أكثر قابلية للاستخدام، مما يلبي متطلبات معالجة البيانات المعقدة.
تعمل The Graph، المعروفة تقليديًا ببراعتها في تنظيم البيانات الموجودة على السلسلة، على توسيع آفاقها الآن من خلال الدخول في عالم البيانات خارج السلسلة. يتوافق هذا النهج مع مهمة The Graph طويلة المدى لتوفير وصول سهل إلى المعرفة والمعلومات العامة في العالم.
في بنية Web3، بينما يمكن للمستخدمين التفاعل مباشرة مع blockchain من خلال خدمات البرمجيات الوسيطة، هناك مقايضة، خاصة عندما يتعلق الأمر بالتكلفة. تكاليف المعاملات عبر السلسلة، والتي يشار إليها غالبًا برسوم الغاز، يمكن أن تكون مرتفعة للغاية بالنسبة للحسابات المعقدة أو تخزين البيانات على نطاق واسع. لقد أدى هذا القيد تاريخيًا إلى الحد من تعقيد التطبيقات أو دفع المطورين إلى إنشاء واجهات برمجة تطبيقات خاصة خارج السلسلة، مبتعدين عن النماذج مفتوحة المصدر.
يقدم الرسم البياني حلاً فريدًا لهذا التحدي من خلال تمكين التنظيم وخدمة البيانات خارج السلسلة من خلال شبكته اللامركزية. تتضمن هذه الطريقة سير عمل حيث يتم نشر البيانات خارج السلسلة تقليديًا إلى IPFS (نظام الملفات بين الكواكب)، ثم يتم تسجيل تجزئات IPFS على السلسلة. وبعد ذلك، يمكن فهرسة هذه البيانات من خلال الرسوم البيانية الفرعية وإتاحتها للاستعلام. يوفر هذا النهج طريقة اقتصادية وقابلة للتطوير لنشر وتقديم البيانات الديناميكية المعقدة دون تحمل تكاليف إنشاء واجهات برمجة التطبيقات الخاصة وصيانتها.
وظائف Cron لحساب البيانات ونشرها: تقوم وظيفة cron خارج السلسلة بإجراء عمليات حسابية معقدة وتنشر النتائج إلى مصدر permaweb، مثل IPFS، القابل للفهرسة بواسطة The Graph. تقوم هذه الوظيفة أيضًا بإنشاء معاملة على السلسلة لنشر تجزئة ملف IPFS وأي بيانات تعريف ذات صلة.
نشر الرسم البياني الفرعي للفهرسة: تتضمن الخطوة التالية نشر رسم بياني فرعي يقوم بفهرسة ملفات IPFS هذه بناءً على تجزئات الملف المنشورة على السلسلة. بمجرد نشر الرسم البياني الفرعي، يمكن التقاطه وتقديمه بواسطة المفهرسين في شبكة The Graph، مما يسمح لمطوري ومستخدمي الطرف الثالث بالاستعلام عن البيانات.
وصول قوي وموثوق إلى البيانات: من خلال الاستفادة من شبكة المفهرسات الموزعة في The Graph، يظل الوصول إلى البيانات قويًا وموثوقًا دون بذل جهد إضافي من ناشر البيانات. ويعزز هذا الهيكل اللامركزي بشكل كبير توافر البيانات وسلامتها.
من الأمثلة العملية على نظام Graph البيئي هو Oracle الذي طورته Edge & Node لنشر مقاييس تكلفة الشبكة وجودة الخدمة. تنشر أوراكل هذه البيانات المجمعة إلى IPFS كل خمس دقائق وتسجل تجزئة ملف IPFS في سلسلة Gnosis. يتم بعد ذلك فهرسة هذه البيانات في رسم بياني فرعي، والذي يمكن أن يستهلكه أصحاب المصلحة في البروتوكول. التكلفة المرتبطة بسير العمل هذا منخفضة بشكل مدهش، مما يجعلها خيارًا جذابًا لناشري البيانات.
تفتح هذه الطريقة في استخدام The Graph للبيانات الديناميكية إمكانيات جديدة ومثيرة لمواقع الويب الدائمة، بما في ذلك الواجهات الخلفية البسيطة للمدونات، وتنظيم المحتوى الخوارزمي، وأنظمة المراقبة في الوقت الفعلي. إنه يمثل تحولًا كبيرًا في كيفية نشر البيانات وفهرستها والوصول إليها، مما يعزز نظام web3 البيئي الأكثر انفتاحًا وتعاونًا.
إن توسع Graph في إدارة البيانات خارج السلسلة يفتح آفاقًا جديدة في نظام Web3 البيئي، مما يخلق جسرًا بين مجالات البيانات اللامركزية والتقليدية. تعكس هذه المبادرة مهمة The Graph المتمثلة في إتاحة الوصول إلى نطاق أوسع من المعلومات بطريقة لا مركزية، ومعالجة القيود الكامنة في تخزين البيانات وحسابها على السلسلة.
يتعرف الرسم البياني على المفاضلات المتعلقة بالتكلفة لتخزين البيانات على السلسلة والحساب في بنيات Web3. في حين أن التفاعل المباشر مع البلوكشين هو أمر واضح ومباشر، إلا أن الحسابات المعقدة وتخزين البيانات على نطاق واسع يمكن أن تصبح باهظة التكلفة. للتحايل على هذه القيود، يقدم The Graph طريقة تجمع بين تخزين البيانات خارج السلسلة ومرجع البيانات على السلسلة، وبالتالي الحفاظ على الروح اللامركزية مع تعزيز الوظائف.
الحساب خارج السلسلة ونشر IPFS: يتم إجراء الحسابات المعقدة خارج السلسلة، ويتم نشر البيانات الناتجة إلى IPFS، وهو حل تخزين لامركزي. تضمن هذه الخطوة تخزين البيانات، خارج السلسلة، بطريقة لا مركزية يمكن التحقق منها.
الارتباط على السلسلة عبر المعاملات: إلى جانب تخزين البيانات على IPFS، يتم إجراء معاملة مقابلة على السلسلة لتسجيل تجزئة IPFS والبيانات التعريفية الأخرى ذات الصلة. تعمل هذه الطريقة على ربط البيانات خارج السلسلة بالبلوكشين، مما يوفر طبقة من الثقة وإمكانية التتبع.
فهرسة الرسم البياني الفرعي لإمكانية الوصول: تتضمن الخطوة الأخيرة فهرسة البيانات المخزنة في IPFS باستخدام الرسوم البيانية الفرعية. تجعل هذه العملية البيانات خارج السلسلة قابلة للاستعلام عنها بسهولة ويمكن الوصول إليها من خلال شبكة The Graph اللامركزية.
التنفيذ العملي: Oracle Edge & Node
التطبيق العملي لهذه المنهجية داخل النظام البيئي لـ The Graph هو Oracle الذي طورته Edge & Node. تنشر Oracle تكلفة الشبكة ومقاييس جودة الخدمة كل خمس دقائق بالطريقة التالية:
يتم نشر البيانات المجمعة إلى IPFS.
يتم بعد ذلك تسجيل تجزئة ملف IPFS المقابل على سلسلة Gnosis عبر عقد DataEdge.
تتم فهرسة ملفات IPFS هذه في رسم بياني فرعي، مما يجعل البيانات متاحة لأصحاب المصلحة بطريقة لا مركزية.
يوضح هذا التنفيذ النهج المنخفض التكلفة والقابل للتطوير والفعال لنشر البيانات المعقدة وتقديمها دون الحاجة إلى واجهات برمجة التطبيقات الخاصة. إنه يوضح كيف يمكن الاستفادة من طريقة الرسم البياني لإنشاء مصادر بيانات ديناميكية لمجموعة متنوعة من التطبيقات.
التكاليف المرتبطة بسير العمل هذا منخفضة بشكل مدهش، مما يجعلها حلاً جذابًا لناشري البيانات. على سبيل المثال، يؤدي تطبيق Oracle بواسطة Edge & Node إلى تكبد الحد الأدنى من النفقات للمعاملات عبر السلسلة وتثبيت عقدة IPFS، مع تحمل تكاليف الخدمة على مستهلك البيانات. يعمل هذا النموذج على تقليل النفقات التشغيلية لناشري البيانات بشكل فعال مع ضمان الوصول القوي والموثوق للبيانات.
تفتح هذه الطريقة إمكانيات جديدة لتطبيقات Permaweb، مثل الواجهات الخلفية الديناميكية للمدونات، وتنظيم المحتوى الخوارزمي، وأنظمة المراقبة في الوقت الفعلي. فهو يسمح بفصل ناشري البيانات عن مشغلي التطبيقات/الواجهة الأمامية، وتشجيع التخصص وتقسيم العمل في مجتمع مفتوح المصدر. يبشر هذا النهج بالتطبيقات والبروتوكولات الاجتماعية اللامركزية، مما يوفر مسارًا جديدًا للأمام لنشر البيانات واستهلاكها بشكل لامركزي.
دمج GraphQL كلغة الاستعلام المفضلة. يشكل هذا القرار بشكل كبير طريقة الوصول إلى البيانات والتفاعل معها من خلال واجهات برمجة التطبيقات الخاصة بـ The Graph، مما يوفر طريقة مبسطة وفعالة للاستعلام عن بيانات blockchain.
تقف GraphQL في طليعة تصميم واجهة برمجة التطبيقات (API) الحديثة، حيث تقدم نهجًا مرنًا وفعالًا لاستعادة البيانات. في سياق blockchain، حيث تكون هياكل البيانات معقدة ومتطورة باستمرار، تصبح قدرة GraphQL على جلب ما هو مطلوب بالضبط لا تقدر بثمن.
استعلامات البيانات المخصصة: يكمن جوهر جاذبية GraphQL في قدرتها على السماح للعملاء بتحديد بنية البيانات التي يحتاجونها بدقة. تمثل هذه القدرة خروجًا كبيرًا عن الاستجابات التقليدية للبنية الثابتة، مما يتيح تفاعلًا أكثر تركيزًا وكفاءة مع البيانات.
تحسين التفاعلات في الوقت الفعلي: بالإضافة إلى مجرد الاستعلام، يدعم GraphQL في The Graph اشتراكات البيانات في الوقت الفعلي. تعتبر هذه الميزة حيوية لتطبيقات blockchain حيث تعد التحديثات والاستجابة في الوقت المناسب أمرًا أساسيًا لتجربة المستخدم.
الوصول إلى البيانات اللامركزية وغير الموثوقة: يؤدي استخدام Graph لـ GraphQL إلى توسيع فلسفتها المتمثلة في اللامركزية في مجال الوصول إلى البيانات. من خلال التفاعل مع شبكة من العقد اللامركزية، تضمن استعلامات GraphQL بقاء البيانات مفتوحة وشفافة ومقاومة للرقابة.
تقارب واجهات برمجة التطبيقات وGraphQL
في النظام البيئي لـ Graph، يؤدي دمج واجهات برمجة التطبيقات مع GraphQL إلى إنشاء نظام متناغم وقوي لاستعادة البيانات:
تعريف المخطط ورسم خرائط البيانات: يحدد المطورون مخطط GraphQL ضمن الرسم البياني الفرعي الخاص بهم، مع تحديد بنية البيانات القابلة للاستعلام. يتم بعد ذلك تعيين المخطط بشكل معقد لأحداث blockchain، وترجمة الأنشطة الموجودة على السلسلة إلى بيانات منظمة.
تنفيذ الاستعلامات من خلال المفهرسات: عند إرسال استعلام GraphQL إلى واجهة برمجة تطبيقات الرسم البياني الفرعي، تتم معالجته بواسطة شبكة المفهرسات اللامركزية في The Graph. توضح هذه العملية كيفية تنفيذ الاستعلامات بطريقة موزعة، مع الحفاظ على مبادئ تقنية blockchain.
التعامل مع علاقات البيانات المعقدة: مع شيوع علاقات البيانات المعقدة في blockchain، تعد قدرة GraphQL على التعامل مع الاستعلامات المعقدة، بما في ذلك الأشكال المختلفة لتصفية البيانات وفرزها، مفيدة بشكل خاص.
تتكشف الفوائد للمطورين والمستخدمين النهائيين
يؤدي دمج GraphQL في The Graph إلى فوائد عديدة:
في قلب بنية The Graph تقع عقدة Graph. هذا المكون الرئيسي مسؤول عن فهرسة الرسوم البيانية الفرعية وإتاحة الوصول إلى البيانات الناتجة عبر واجهة برمجة تطبيقات GraphQL. إنه جوهر مكدس المفهرس، وتشغيله الفعال أمر بالغ الأهمية لتشغيل مفهرس ناجح. تعمل Graph Node بتنوع، فهي قادرة على العمل على كل من البيئات المعدنية والسحابية، مما يعكس القدرة على التكيف المطلوبة في المشهد الديناميكي لتقنية blockchain.
تعد قاعدة بيانات PostgreSQL جزءًا لا يتجزأ من تشغيل Graph Node، والتي تعمل كمخزن رئيسي. لا تحتوي قاعدة البيانات هذه على بيانات الرسم البياني الفرعي فحسب، بل تحتوي أيضًا على بيانات وصفية حول الرسوم البيانية الفرعية وبيانات الشبكة الأساسية مثل ذاكرات التخزين المؤقت للكتلة وeth_call. يعد تنظيم وإدارة قاعدة البيانات هذه أمرًا حيويًا للتشغيل السلس لعقدة الرسم البياني، مما يضمن سلامة البيانات وإمكانية الوصول إليها.
لفهرسة شبكات blockchain، يتصل Graph Node بعملاء الشبكة من خلال واجهة برمجة تطبيقات JSON-RPC المتوافقة مع EVM. يمكن أن يختلف هذا الإعداد من الاتصال بعميل واحد إلى ترتيب أكثر تعقيدًا يتضمن موازنة التحميل عبر عملاء متعددين. بالإضافة إلى ذلك، قامت The Graph بتطوير Network Firehose - وهي خدمة gRPC توفر تدفقًا منظمًا ومدركًا للتفرع من الكتل. على الرغم من أنه ليس من متطلبات المفهرسين حاليًا، إلا أن Firehose يمثل تقدمًا كبيرًا في دعم فهرسة الأداء على نطاق واسع.
يعد تفاعل Graph Node مع شبكة IPFS أمرًا بالغ الأهمية لتخزين البيانات التعريفية لنشر الرسم البياني الفرعي. تعمل عقدة IPFS المستضافة على مستوى الشبكة على تبسيط هذه العملية للمفهرسين. بالإضافة إلى ذلك، يضيف التكامل الاختياري مع خادم مقاييس Prometheus للمراقبة وإعداد التقارير طبقة أخرى من التطور، مما يمكّن المفهرسين من تتبع أداء عقدة الرسم البياني وتحسينه.
يسلط الإعداد المرن لـ Graph Node، بدءًا من خيارات التثبيت وحتى إمكانيات القياس، الضوء على التزام The Graph بتلبية الاحتياجات التشغيلية المختلفة. يمكن توسيع نطاق النظام أفقيًا باستخدام عقد رسم بياني وقواعد بيانات متعددة، مما يلبي المتطلبات المتزايدة للشبكة. يمكن للمستخدمين المتقدمين الاستفادة من خيارات تكوين Graph Node، التي تتم إدارتها من خلال ملف TOML أو متغيرات البيئة، لتحسين معالجة البيانات وتوزيع عبء العمل.
يمثل Firehose، الذي تم تصوره وتطويره بواسطة StreamingFast، ثورة في استخراج البيانات من عقد blockchain. تقوم هذه الأداة المبتكرة بتقسيم كل معاملة داخل كتلة blockchain إلى أصغر عناصرها، وحفظها كملفات بسيطة ومسطحة. هذه الملفات المسطحة ليست مجرد تنسيق تخزين؛ أنها تجسد نقلة نوعية في فهرسة البيانات. فهي تسهل المعالجة المتوازية، مما يؤدي إلى تسريع عمليات الفهرسة بشكل كبير. توفر هذه التقنية بيانات غنية ومدركة للشوكة من عقد blockchain المُجهزة مباشرةً إلى المستهلكين. من الناحية العملية، أظهرت Firehose براعتها من خلال توفير سرعات الالتقاط والمعالجة التي كان يُعتقد في السابق أنها بعيدة المنال، وبالتالي وضع معايير جديدة لاستخراج البيانات في النظام البيئي لـ The Graph.
تم تصميم التدفقات الفرعية، وهي امتداد للإمكانيات التي توفرها Firehose، لمعالجة البيانات عالية الأداء بطريقة متوازية تعتمد على التدفق أولاً. تتيح هذه الوحدات المكتوبة في Rust للمطورين إنشاء بيانات blockchain وفرزها وتخزينها وتحويلها لاستخدامات مختلفة. تكمن براعة Substreams في قدرتها على استخدام ملفات Firehose المسطحة لفهرسة البيانات بسرعات عالية بشكل استثنائي. يضمن هذا النهج أن التدفقات الفرعية ليست فقط ذات كفاءة عالية في معالجة البيانات ولكن أيضًا في توزيعها بمجرد توفرها، بدلاً من الاعتماد على الطلبات المستمرة.
يوفر تكامل Firehose وSubstreams ضمن نظام The Graph البيئي مزيجًا قويًا لمعالجة البيانات. يضمن Firehose التسليم السريع لبيانات blockchain بتنسيق محسّن، بينما تعمل Substreams على تحسين هذه البيانات ومعالجتها. تؤدي هذه العلاقة التآزرية إلى كفاءة لا مثيل لها في التعامل مع كميات كبيرة من بيانات blockchain، مما يؤدي إلى رفع قدرات The Graph بشكل كبير.
أصبحت الرسوم البيانية الفرعية هي المعيار الصناعي في فهرسة بيانات blockchain منذ تقديمها بواسطة The Graph في عام 2018. وهي في الأساس واجهات برمجة تطبيقات مفتوحة تقوم باستخراج البيانات ومعالجتها وتخزينها من سلاسل الكتل، مما يجعلها قابلة للاستعلام بسهولة عبر واجهة GraphQL. مع دعم أكثر من 85000 رسم بياني فرعي عبر أكثر من 40 سلسلة، أصبحت الرسوم البيانية الفرعية أمرًا لا غنى عنه لمطوري web3. إنها تسمح بالنشر السريع لقاعدة بيانات Postgres المليئة بالبيانات المفهرسة، والجاهزة للاستعلام عنها باستخدام طبقة GraphQL. تتيح الرسوم البيانية الفرعية للمطورين عرض مجموعة واسعة من بيانات blockchain في تطبيقاتهم اللامركزية، بدءًا من معاملات DeFi وحتى مصدر NFT، بطريقة منظمة وفعالة.
في المشهد المتطور باستمرار لتكنولوجيا blockchain، ظهرت الرسوم البيانية الفرعية كمفهوم محوري، مما أدى إلى تغيير الطريقة التي نتفاعل بها مع بيانات blockchain واستخدامها. تعمل واجهات برمجة التطبيقات المفتوحة هذه كوسطاء، حيث تعمل على سد الفجوة بسلاسة بين العالم اللامركزي لسلاسل الكتل والمجال المألوف للبيانات المنظمة. من خلال استخراج بيانات blockchain ومعالجتها وتنظيمها في تنسيق قابل للاستعلام، تعمل الرسوم البيانية الفرعية على تمكين المطورين من إنشاء تطبيقات مبتكرة تعتمد على البيانات.
توفر الرسوم البيانية الفرعية عددًا كبيرًا من المزايا، مما يجعلها خيارًا جذابًا للمطورين والمستخدمين على حدٍ سواء. وتضمن طبيعتها اللامركزية مقاومة الرقابة ووقت التوقف عن العمل، مما يعزز نظامًا بيئيًا آمنًا وموثوقًا للبيانات. بالإضافة إلى ذلك، فإن الرسوم البيانية الفرعية قابلة للتوسع بطبيعتها، وهي قادرة على التعامل مع كميات هائلة من البيانات دون المساس بالأداء. تعد فعالية التكلفة ميزة رئيسية أخرى، حيث غالبًا ما تكون الرسوم البيانية الفرعية أقل تكلفة من واجهات برمجة تطبيقات البيانات التقليدية.
تتكون الرسوم البيانية الفرعية من ثلاثة مكونات أساسية تعمل بشكل متناغم لتقديم قدراتها التحويلية:
البيان: يعمل البيان كمخطط للرسم البياني الفرعي، ويحدد مصادر البيانات والمخطط وكود AssemblyScript. فهو يحدد حدود البيانات التي سيقوم الرسم البياني الفرعي بفهرستها، مما يضمن التقاط المعلومات ذات الصلة فقط.
المخطط: يحدد المخطط بنية البيانات، على غرار مخطط المبنى. فهو يوضح الكيانات والحقول والعلاقات بين الكيانات، مما يوفر طريقة واضحة ومنظمة لتمثيل البيانات.
كود AssemblyScript: يعمل هذا الكود القابل للتنفيذ بمثابة العمود الفقري للرسم البياني الفرعي، حيث يقوم بترجمة البيانات الأولية من blockchain إلى تنسيق يمكن لمحرك GraphQL فهمه. كما أنه يتعامل مع فهرسة البيانات وتخزينها، مما يضمن إمكانية الوصول إليها وموثوقيتها.
يتضمن إنشاء رسم بياني فرعي سلسلة من الخطوات، تم تصميم كل منها بعناية لضمان وظائف الرسم البياني الفرعي وفعاليته:
التصور والتصميم: تبدأ الرحلة بفكرة واضحة عن البيانات التي سيتم فهرستها والتطبيقات التي ستوفرها. يتضمن ذلك تحديد الكيانات والحقول والعلاقات بينها، مما يضمن توافق بنية الرسم البياني الفرعي مع الغرض المقصود منه.
تطوير البيان والمخطط: تم تصميم البيان والمخطط بدقة، مما يوفر الأساس لبنية بيانات الرسم البياني الفرعي. يحدد البيان مصادر البيانات، بينما يحدد المخطط بنية البيانات، مما يضمن سلامة البيانات واتساقها.
تنفيذ كود AssemblyScript: تتم كتابة كود AssemblyScript، لترجمة بيانات blockchain الأولية إلى تنسيق يمكن لـ GraphQL فهمه. فهو يتعامل مع الفهرسة والتخزين واسترجاع البيانات، مما يتيح الوصول الفعال إلى البيانات المفهرسة.
بمجرد تطوير الرسم البياني الفرعي، فإنه يخضع لعملية نشر تقدمه للعالم:
تكامل Subgraph Studio: يعمل Subgraph Studio كمنصة مركزية لإدارة الرسوم البيانية الفرعية. فهو يسهل عملية النشر، مما يسمح للمطورين بنشر الرسوم البيانية الفرعية الخاصة بهم على الشبكة اللامركزية.
الفهرسة والتنظيم: يعد المفهرسون، المسؤولون عن جلب وتخزين بيانات blockchain، ضروريين لجعل الرسوم البيانية الفرعية في متناول المطورين. التنظيم، الذي يتم عادةً من خلال رموز GRT، يحفز المفهرسين على تحديد أولويات الرسوم البيانية الفرعية ذات الطلب المرتفع.
الاستعلام والاستخدام: يمكن للمطورين الآن الاستعلام عن الرسم البياني الفرعي المنشور باستخدام استعلامات GraphQL، واسترداد بيانات محددة مصممة خصيصًا لتلبية احتياجات تطبيقاتهم. يمكّن هذا التكامل السلس المطورين من تسخير بيانات blockchain للابتكار.
مع بدء الرسم البياني في عصره الجديد (سنستكشفه في الدرس 5)، من المتوقع بفارغ الصبر التطور المستمر لهذه التقنيات الأساسية - الرسوم البيانية الفرعية، وأنابيب الإطفاء، والتدفقات الفرعية. تم إعداد هذه المكونات للتوسع والتطور، لتلعب أدوارًا حيوية في تقديم خدمات بيانات جديدة وضمان تدفقات أسرع وأكثر معيارية للبيانات. على سبيل المثال، من المتوقع أن يكون Verifiable Firehose حلاً رائدًا للوصول إلى بيانات الايثيريوم التاريخية، ومعالجة تحديات معايير blockchain المتطورة.
من المهم التمييز بين الرسوم البيانية الفرعية والتيارات الفرعية لأنها تخدم أغراضًا مختلفة. تعتبر الرسوم البيانية الفرعية مثالية لاسترداد البيانات القياسية وإدارتها، مما يوفر سهولة الإعداد والاستخدام مع طبقة استعلام GraphQL. على العكس من ذلك، تم تصميم التدفقات الفرعية للتحليلات الأكثر تعقيدًا واحتياجات البيانات الضخمة، مما يوفر معالجة متوازية للبيانات ومرونة أكبر في معالجة البيانات وتخزينها. تسمح التدفقات الفرعية للمطورين بتحويل البيانات من تنسيقات الملفات الأساسية إلى نماذج أكثر قابلية للاستخدام، مما يلبي متطلبات معالجة البيانات المعقدة.
تعمل The Graph، المعروفة تقليديًا ببراعتها في تنظيم البيانات الموجودة على السلسلة، على توسيع آفاقها الآن من خلال الدخول في عالم البيانات خارج السلسلة. يتوافق هذا النهج مع مهمة The Graph طويلة المدى لتوفير وصول سهل إلى المعرفة والمعلومات العامة في العالم.
في بنية Web3، بينما يمكن للمستخدمين التفاعل مباشرة مع blockchain من خلال خدمات البرمجيات الوسيطة، هناك مقايضة، خاصة عندما يتعلق الأمر بالتكلفة. تكاليف المعاملات عبر السلسلة، والتي يشار إليها غالبًا برسوم الغاز، يمكن أن تكون مرتفعة للغاية بالنسبة للحسابات المعقدة أو تخزين البيانات على نطاق واسع. لقد أدى هذا القيد تاريخيًا إلى الحد من تعقيد التطبيقات أو دفع المطورين إلى إنشاء واجهات برمجة تطبيقات خاصة خارج السلسلة، مبتعدين عن النماذج مفتوحة المصدر.
يقدم الرسم البياني حلاً فريدًا لهذا التحدي من خلال تمكين التنظيم وخدمة البيانات خارج السلسلة من خلال شبكته اللامركزية. تتضمن هذه الطريقة سير عمل حيث يتم نشر البيانات خارج السلسلة تقليديًا إلى IPFS (نظام الملفات بين الكواكب)، ثم يتم تسجيل تجزئات IPFS على السلسلة. وبعد ذلك، يمكن فهرسة هذه البيانات من خلال الرسوم البيانية الفرعية وإتاحتها للاستعلام. يوفر هذا النهج طريقة اقتصادية وقابلة للتطوير لنشر وتقديم البيانات الديناميكية المعقدة دون تحمل تكاليف إنشاء واجهات برمجة التطبيقات الخاصة وصيانتها.
وظائف Cron لحساب البيانات ونشرها: تقوم وظيفة cron خارج السلسلة بإجراء عمليات حسابية معقدة وتنشر النتائج إلى مصدر permaweb، مثل IPFS، القابل للفهرسة بواسطة The Graph. تقوم هذه الوظيفة أيضًا بإنشاء معاملة على السلسلة لنشر تجزئة ملف IPFS وأي بيانات تعريف ذات صلة.
نشر الرسم البياني الفرعي للفهرسة: تتضمن الخطوة التالية نشر رسم بياني فرعي يقوم بفهرسة ملفات IPFS هذه بناءً على تجزئات الملف المنشورة على السلسلة. بمجرد نشر الرسم البياني الفرعي، يمكن التقاطه وتقديمه بواسطة المفهرسين في شبكة The Graph، مما يسمح لمطوري ومستخدمي الطرف الثالث بالاستعلام عن البيانات.
وصول قوي وموثوق إلى البيانات: من خلال الاستفادة من شبكة المفهرسات الموزعة في The Graph، يظل الوصول إلى البيانات قويًا وموثوقًا دون بذل جهد إضافي من ناشر البيانات. ويعزز هذا الهيكل اللامركزي بشكل كبير توافر البيانات وسلامتها.
من الأمثلة العملية على نظام Graph البيئي هو Oracle الذي طورته Edge & Node لنشر مقاييس تكلفة الشبكة وجودة الخدمة. تنشر أوراكل هذه البيانات المجمعة إلى IPFS كل خمس دقائق وتسجل تجزئة ملف IPFS في سلسلة Gnosis. يتم بعد ذلك فهرسة هذه البيانات في رسم بياني فرعي، والذي يمكن أن يستهلكه أصحاب المصلحة في البروتوكول. التكلفة المرتبطة بسير العمل هذا منخفضة بشكل مدهش، مما يجعلها خيارًا جذابًا لناشري البيانات.
تفتح هذه الطريقة في استخدام The Graph للبيانات الديناميكية إمكانيات جديدة ومثيرة لمواقع الويب الدائمة، بما في ذلك الواجهات الخلفية البسيطة للمدونات، وتنظيم المحتوى الخوارزمي، وأنظمة المراقبة في الوقت الفعلي. إنه يمثل تحولًا كبيرًا في كيفية نشر البيانات وفهرستها والوصول إليها، مما يعزز نظام web3 البيئي الأكثر انفتاحًا وتعاونًا.
إن توسع Graph في إدارة البيانات خارج السلسلة يفتح آفاقًا جديدة في نظام Web3 البيئي، مما يخلق جسرًا بين مجالات البيانات اللامركزية والتقليدية. تعكس هذه المبادرة مهمة The Graph المتمثلة في إتاحة الوصول إلى نطاق أوسع من المعلومات بطريقة لا مركزية، ومعالجة القيود الكامنة في تخزين البيانات وحسابها على السلسلة.
يتعرف الرسم البياني على المفاضلات المتعلقة بالتكلفة لتخزين البيانات على السلسلة والحساب في بنيات Web3. في حين أن التفاعل المباشر مع البلوكشين هو أمر واضح ومباشر، إلا أن الحسابات المعقدة وتخزين البيانات على نطاق واسع يمكن أن تصبح باهظة التكلفة. للتحايل على هذه القيود، يقدم The Graph طريقة تجمع بين تخزين البيانات خارج السلسلة ومرجع البيانات على السلسلة، وبالتالي الحفاظ على الروح اللامركزية مع تعزيز الوظائف.
الحساب خارج السلسلة ونشر IPFS: يتم إجراء الحسابات المعقدة خارج السلسلة، ويتم نشر البيانات الناتجة إلى IPFS، وهو حل تخزين لامركزي. تضمن هذه الخطوة تخزين البيانات، خارج السلسلة، بطريقة لا مركزية يمكن التحقق منها.
الارتباط على السلسلة عبر المعاملات: إلى جانب تخزين البيانات على IPFS، يتم إجراء معاملة مقابلة على السلسلة لتسجيل تجزئة IPFS والبيانات التعريفية الأخرى ذات الصلة. تعمل هذه الطريقة على ربط البيانات خارج السلسلة بالبلوكشين، مما يوفر طبقة من الثقة وإمكانية التتبع.
فهرسة الرسم البياني الفرعي لإمكانية الوصول: تتضمن الخطوة الأخيرة فهرسة البيانات المخزنة في IPFS باستخدام الرسوم البيانية الفرعية. تجعل هذه العملية البيانات خارج السلسلة قابلة للاستعلام عنها بسهولة ويمكن الوصول إليها من خلال شبكة The Graph اللامركزية.
التنفيذ العملي: Oracle Edge & Node
التطبيق العملي لهذه المنهجية داخل النظام البيئي لـ The Graph هو Oracle الذي طورته Edge & Node. تنشر Oracle تكلفة الشبكة ومقاييس جودة الخدمة كل خمس دقائق بالطريقة التالية:
يتم نشر البيانات المجمعة إلى IPFS.
يتم بعد ذلك تسجيل تجزئة ملف IPFS المقابل على سلسلة Gnosis عبر عقد DataEdge.
تتم فهرسة ملفات IPFS هذه في رسم بياني فرعي، مما يجعل البيانات متاحة لأصحاب المصلحة بطريقة لا مركزية.
يوضح هذا التنفيذ النهج المنخفض التكلفة والقابل للتطوير والفعال لنشر البيانات المعقدة وتقديمها دون الحاجة إلى واجهات برمجة التطبيقات الخاصة. إنه يوضح كيف يمكن الاستفادة من طريقة الرسم البياني لإنشاء مصادر بيانات ديناميكية لمجموعة متنوعة من التطبيقات.
التكاليف المرتبطة بسير العمل هذا منخفضة بشكل مدهش، مما يجعلها حلاً جذابًا لناشري البيانات. على سبيل المثال، يؤدي تطبيق Oracle بواسطة Edge & Node إلى تكبد الحد الأدنى من النفقات للمعاملات عبر السلسلة وتثبيت عقدة IPFS، مع تحمل تكاليف الخدمة على مستهلك البيانات. يعمل هذا النموذج على تقليل النفقات التشغيلية لناشري البيانات بشكل فعال مع ضمان الوصول القوي والموثوق للبيانات.
تفتح هذه الطريقة إمكانيات جديدة لتطبيقات Permaweb، مثل الواجهات الخلفية الديناميكية للمدونات، وتنظيم المحتوى الخوارزمي، وأنظمة المراقبة في الوقت الفعلي. فهو يسمح بفصل ناشري البيانات عن مشغلي التطبيقات/الواجهة الأمامية، وتشجيع التخصص وتقسيم العمل في مجتمع مفتوح المصدر. يبشر هذا النهج بالتطبيقات والبروتوكولات الاجتماعية اللامركزية، مما يوفر مسارًا جديدًا للأمام لنشر البيانات واستهلاكها بشكل لامركزي.
دمج GraphQL كلغة الاستعلام المفضلة. يشكل هذا القرار بشكل كبير طريقة الوصول إلى البيانات والتفاعل معها من خلال واجهات برمجة التطبيقات الخاصة بـ The Graph، مما يوفر طريقة مبسطة وفعالة للاستعلام عن بيانات blockchain.
تقف GraphQL في طليعة تصميم واجهة برمجة التطبيقات (API) الحديثة، حيث تقدم نهجًا مرنًا وفعالًا لاستعادة البيانات. في سياق blockchain، حيث تكون هياكل البيانات معقدة ومتطورة باستمرار، تصبح قدرة GraphQL على جلب ما هو مطلوب بالضبط لا تقدر بثمن.
استعلامات البيانات المخصصة: يكمن جوهر جاذبية GraphQL في قدرتها على السماح للعملاء بتحديد بنية البيانات التي يحتاجونها بدقة. تمثل هذه القدرة خروجًا كبيرًا عن الاستجابات التقليدية للبنية الثابتة، مما يتيح تفاعلًا أكثر تركيزًا وكفاءة مع البيانات.
تحسين التفاعلات في الوقت الفعلي: بالإضافة إلى مجرد الاستعلام، يدعم GraphQL في The Graph اشتراكات البيانات في الوقت الفعلي. تعتبر هذه الميزة حيوية لتطبيقات blockchain حيث تعد التحديثات والاستجابة في الوقت المناسب أمرًا أساسيًا لتجربة المستخدم.
الوصول إلى البيانات اللامركزية وغير الموثوقة: يؤدي استخدام Graph لـ GraphQL إلى توسيع فلسفتها المتمثلة في اللامركزية في مجال الوصول إلى البيانات. من خلال التفاعل مع شبكة من العقد اللامركزية، تضمن استعلامات GraphQL بقاء البيانات مفتوحة وشفافة ومقاومة للرقابة.
تقارب واجهات برمجة التطبيقات وGraphQL
في النظام البيئي لـ Graph، يؤدي دمج واجهات برمجة التطبيقات مع GraphQL إلى إنشاء نظام متناغم وقوي لاستعادة البيانات:
تعريف المخطط ورسم خرائط البيانات: يحدد المطورون مخطط GraphQL ضمن الرسم البياني الفرعي الخاص بهم، مع تحديد بنية البيانات القابلة للاستعلام. يتم بعد ذلك تعيين المخطط بشكل معقد لأحداث blockchain، وترجمة الأنشطة الموجودة على السلسلة إلى بيانات منظمة.
تنفيذ الاستعلامات من خلال المفهرسات: عند إرسال استعلام GraphQL إلى واجهة برمجة تطبيقات الرسم البياني الفرعي، تتم معالجته بواسطة شبكة المفهرسات اللامركزية في The Graph. توضح هذه العملية كيفية تنفيذ الاستعلامات بطريقة موزعة، مع الحفاظ على مبادئ تقنية blockchain.
التعامل مع علاقات البيانات المعقدة: مع شيوع علاقات البيانات المعقدة في blockchain، تعد قدرة GraphQL على التعامل مع الاستعلامات المعقدة، بما في ذلك الأشكال المختلفة لتصفية البيانات وفرزها، مفيدة بشكل خاص.
تتكشف الفوائد للمطورين والمستخدمين النهائيين
يؤدي دمج GraphQL في The Graph إلى فوائد عديدة: