في مجال البلوكشين، تعتبر آلة الأوراكل نظامًا يزود العقود الذكية بشكل دقيق ببيانات العالم الحقيقي الخارجية. تعمل آلة الأوراكل جوهريًا كوسيط مهم يملأ الفجوة بين البلوكشين ومعلومات العالم الحقيقي، وتصبح بنية تحتية لا غنى عنها تدعم نظام التطبيقات اللامركزية (DApps) وبيئتها.
ما هي آلة الأوراكل: نظام وساطة معلومات البلوكشين
عند تنفيذ العقود الذكية، يحتاج العديد منها إلى الوصول إلى بيانات خارجية. على سبيل المثال، عند بناء عقد ذكي لمشتقات النفط على شبكة إيثريوم، يلزم بيانات حول كمية تداول النفط في تاريخ معين. ومع ذلك، نظرًا لأن العقود الذكية تقتصر على البيئة على السلسلة، فهي لا تستطيع الحصول مباشرة على هذه البيانات الخارجية. هنا تأتي آلة الأوراكل لتلعب دورها.
تقوم بشكل محدد، العقود الذكية بتسجيل طلب البيانات الضرورية في سجل الأحداث. ثم يراقب عملية خارج السلسلة هذه سجل الأحداث، ويحلل محتوى الطلب. بعد الحصول على البيانات اللازمة عبر واجهات برمجة التطبيقات الخارجية (APIs)، يتم بث المعاملة لإرسال البيانات إلى السلسلة، وتنفيذ وظيفة رد الاتصال (callback) الخاصة بالعقد الذكي. من خلال هذه السلسلة من العمليات، يمكن للعقد الذكي الوصول إلى معلومات خارجية موثوقة.
مكانة Chainlink وعملة LINK
في مجال البلوكشين، تهيمن آلة الأوراكل اللامركزية Chainlink على أكبر حصة سوقية. دور مشروع Chainlink هو توفير البيانات المولدة في العالم الحقيقي إلى البلوكشين بأكثر الطرق أمانًا وموثوقية. من خلال آليات الحوافز الاقتصادية، أنشأ المشروع نظامًا بيئيًا يدور حول عملة LINK.
بيانات سوق عملة LINK الحالية (حتى 21 يناير 2026):
السعر الحالي: $12.25
معدل التغير خلال 24 ساعة: -2.14%
حجم التداول خلال 24 ساعة: $4.32M
القيمة السوقية المتداولة: $8.68B
الحصة السوقية: 0.38%
آلة الأوراكل من Chainlink تُشغل بواسطة نقل عملة LINK. هذه العملة عبارة عن عقد ذكي يعتمد على معيار ERC677 يعمل على شبكة إيثريوم. وظيفة آلة الأوراكل المبنية على LINK تُصنف عادة كنموذج طلب/استجابة.
الابتكار الذي جلبه معيار ERC677
تصميم طريقة transferAndCall
المشكلة الأساسية في آلة الأوراكل هي أن المستخدم يحتاج إلى دفع رسوم الخدمة لمزود الخدمة (الأوراكل). لكن، في معيار ERC20 القياسي، توجد وظيفة تحويل بسيطة فقط، ولا يمكنها تلبية متطلبين: الدفع وطلب الخدمة في معاملة واحدة.
لذلك، اقترحت Chainlink معيار ERC677، الذي أضاف وظيفة transferAndCall إلى معيار ERC20 التقليدي، مما يتيح تنفيذ نقل الرموز وطلب الخدمة في معاملة واحدة. عند تنفيذ transferAndCall، يتحقق من ما إذا كان عنوان المستقبل هو عقد ذكي (وليس حسابًا خارجيًا)، وإذا كان كذلك، يتم استدعاء وظيفة onTokenTransfer تلقائيًا.
بفضل هذا التصميم، يتم دمج عملية الدفع واستدعاء الوظيفة، مما يجعل من الممكن تنفيذ منطق الأعمال الخاص بآلة الأوراكل بكفاءة.
هيكلية التحقق الأمني متعددة الطبقات
قبل استخدام خدمة الأوراكل، يجب على المستخدم التحقق من موثوقية آلة الأوراكل مسبقًا. في Chainlink، يمكن لأي شخص أن يشارك كمزود خدمة أوراكل، ويعزز هذا الشفافية وقابلية التحقق من النظام موثوقيته.
تدفق معالجة الطلبات على السلسلة
آلية قبول الطلبات في عقد Oracle
عند دفع الرسوم وطلب خدمة الأوراكل باستخدام طريقة transferAndCall، يكون عنوان الهدف هو عنوان عقد الأوراكل. في وظيفة onTokenTransfer لعقد Oracle، يتم تنفيذ عدة عمليات تحقق تدريجية:
أولاً، التأكد من أن عملية التحويل تأتي من عقد LINK (باستخدام قيد onlyLINK)، ويتم ذلك بمقارنة msg.sender مع عنوان عقد LINK. بعد ذلك، يتم التحقق من أن طول البيانات المرسلة (_data) لا يتجاوز الحد الأقصى. والأهم، يتم التحقق من أن _data يحتوي على مُعرف وظيفة يبدأ بـ “oracleRequest”.
عند اجتياز هذه الفحوصات الأمنية، يتم استدعاء وظيفة oracleRequest عبر delegatecall، حيث يتم تنفيذها فعليًا.
توليد وتسجيل معرف الطلب (requestId)
داخل وظيفة oracleRequest، يتم تنفيذ العمليات التالية بشكل متسلسل:
يتم دمج معرف المرسل (المستخدم) و nonce المرسل معه، ثم يُمرران عبر دالة هاش لتوليد requestId فريد لهذا الطلب. يتم التحقق من عدم وجود هذا requestId مسبقًا في خريطة الالتزام (commitment)، لضمان عدم التكرار.
عند النجاح، يتم تعيين مدة صلاحية (expiration)، وتسجيل قيمة تتضمن _payment، _callbackAddress، _callbackFunctionId، و expiration في خريطة الالتزام. وأهم خطوة هي إصدار حدث OracleRequest، الذي يتضمن البيانات المشفرة بصيغة CBOR (تمثيل كائن ثنائي مختصر)، وهو تنسيق خفيف وفعال لنقل البيانات.
استجابة العقد الخارجي (Off-chain node)
التحقق والتنفيذ في fulfillOracleRequest
مُعِدّات Chainlink التي تعمل خارج السلسلة تراقب حدث OracleRequest. عند اكتشافه، تنفذ عدة عمليات تحقق مهمة قبل إرجاع البيانات إلى الشبكة.
أولاً، يتم التحقق من أن msg.sender هو مالك العقد أو ضمن قائمة العقد المعتمدة (باستخدام قيد onlyAuthorizedNode). ثم، يتم التحقق من أن requestId موجود في خريطة الالتزام، وأن القيم _payment، _callbackAddress، _callbackFunctionId، و expiration تتطابق مع القيم المسجلة سابقًا (isValidRequest).
عند النجاح، يتم تجميع مبلغ _payment في مخزون drawableTokens، ثم يُحذف الطلب من خريطة الالتزام. وأخيرًا، يتم التحقق من أن كمية الغاز المتبقية تكفي لاستدعاء وظيفة رد الاتصال في العقد الأصلي، ثم يتم استدعاؤها رسميًا باستخدام call، مع إرسال البيانات المستلمة.
نمط تنفيذ وظيفة رد الاتصال (callback)
من حدث OracleRequest، يمكن استنتاج معرف وظيفة الرد (مثل: 6A9705B4) والتوقيع المقابل (مثل: chainlinkCallback(bytes32,int256)). على جانب العقد المستهلك الذي يستقبل البيانات، يتم تنفيذ وظيفة تحقق مثل validateChainlinkCallback.
هذه الوظيفة تتحقق من أن requestId المقدم موجود فعلاً في pendingRequests، وأن الطلب جاء من الأوراكل الصحيح. عند النجاح، يُصدر حدث ChainlinkFulfilled، ويمكن بعد ذلك معالجة البيانات المستجيبة، وتحديث خريطة الردود، وتحديث سعر الأوراكل إذا كان ذلك مناسبًا.
نمط تنفيذ توقعات الأسعار
واجهة Aggregator وتغذية الأسعار
الخطوات أعلاه تمثل العملية الكاملة لنظام أوراكل شامل. من ناحية أخرى، توفر Chainlink نمطًا أبسط لتنفيذ توقعات الأسعار.
كل زوج تداول (مثل ETH/USD، BTC/USD) لديه تغذية سعر خاصة به (Aggregator أو نسخة البروكسي منها، AggregatorProxy). تحتوي على عدة طرق استعلام قياسية:
طرق الاستعلام الأساسية:
decimals() - عدد الأرقام بعد الفاصلة العشرية (عادة 8 أو 18)
description() - اسم زوج التداول (مثل ETH/USD)
version() - تحديد إصدار المُجمع الذي يشير إليه البروكسي
getRoundData(_roundId) - استرجاع بيانات السعر لرقم الجولة المحدد
latestRoundData() - استرجاع أحدث بيانات السعر
أفضل الممارسات في التنفيذ
في معظم سيناريوهات تطوير التطبيقات، يكون المطلوب هو قراءة السعر الأحدث فقط، باستخدام طريقة latestRoundData(). وتحتوي على السعر الأحدث.
بالإضافة إلى ذلك، تستخدم العديد من التطبيقات سعر العملة بالدولار الأمريكي (USD) كوحدة قياس. في هذه الحالة، يكون دقة زوج العملات بالدولار ثابتة عند 8 أرقام، ولا حاجة عادةً لمراعاة الاختلافات في الدقة. وإذا كانت أزواج عملات مختلفة لها دقة مختلفة، يمكن التحقق من ذلك باستخدام طريقة decimals() لضبط المعالجة بشكل مناسب.
وبهذه الطريقة، لا تقتصر آلة الأوراكل من Chainlink على مجرد وساطة البيانات، بل تقدم أنماطًا متقدمة مثل توقعات الأسعار، مما يوفر بنية أساسية مالية عملية وموثوقة في نظام البلوكشين.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
سلسلة لينك من أجهزة الأوراكل: آلية تربط العقود الذكية والعالم خارج البلوكشين
في مجال البلوكشين، تعتبر آلة الأوراكل نظامًا يزود العقود الذكية بشكل دقيق ببيانات العالم الحقيقي الخارجية. تعمل آلة الأوراكل جوهريًا كوسيط مهم يملأ الفجوة بين البلوكشين ومعلومات العالم الحقيقي، وتصبح بنية تحتية لا غنى عنها تدعم نظام التطبيقات اللامركزية (DApps) وبيئتها.
ما هي آلة الأوراكل: نظام وساطة معلومات البلوكشين
عند تنفيذ العقود الذكية، يحتاج العديد منها إلى الوصول إلى بيانات خارجية. على سبيل المثال، عند بناء عقد ذكي لمشتقات النفط على شبكة إيثريوم، يلزم بيانات حول كمية تداول النفط في تاريخ معين. ومع ذلك، نظرًا لأن العقود الذكية تقتصر على البيئة على السلسلة، فهي لا تستطيع الحصول مباشرة على هذه البيانات الخارجية. هنا تأتي آلة الأوراكل لتلعب دورها.
تقوم بشكل محدد، العقود الذكية بتسجيل طلب البيانات الضرورية في سجل الأحداث. ثم يراقب عملية خارج السلسلة هذه سجل الأحداث، ويحلل محتوى الطلب. بعد الحصول على البيانات اللازمة عبر واجهات برمجة التطبيقات الخارجية (APIs)، يتم بث المعاملة لإرسال البيانات إلى السلسلة، وتنفيذ وظيفة رد الاتصال (callback) الخاصة بالعقد الذكي. من خلال هذه السلسلة من العمليات، يمكن للعقد الذكي الوصول إلى معلومات خارجية موثوقة.
مكانة Chainlink وعملة LINK
في مجال البلوكشين، تهيمن آلة الأوراكل اللامركزية Chainlink على أكبر حصة سوقية. دور مشروع Chainlink هو توفير البيانات المولدة في العالم الحقيقي إلى البلوكشين بأكثر الطرق أمانًا وموثوقية. من خلال آليات الحوافز الاقتصادية، أنشأ المشروع نظامًا بيئيًا يدور حول عملة LINK.
بيانات سوق عملة LINK الحالية (حتى 21 يناير 2026):
آلة الأوراكل من Chainlink تُشغل بواسطة نقل عملة LINK. هذه العملة عبارة عن عقد ذكي يعتمد على معيار ERC677 يعمل على شبكة إيثريوم. وظيفة آلة الأوراكل المبنية على LINK تُصنف عادة كنموذج طلب/استجابة.
الابتكار الذي جلبه معيار ERC677
تصميم طريقة transferAndCall
المشكلة الأساسية في آلة الأوراكل هي أن المستخدم يحتاج إلى دفع رسوم الخدمة لمزود الخدمة (الأوراكل). لكن، في معيار ERC20 القياسي، توجد وظيفة تحويل بسيطة فقط، ولا يمكنها تلبية متطلبين: الدفع وطلب الخدمة في معاملة واحدة.
لذلك، اقترحت Chainlink معيار ERC677، الذي أضاف وظيفة transferAndCall إلى معيار ERC20 التقليدي، مما يتيح تنفيذ نقل الرموز وطلب الخدمة في معاملة واحدة. عند تنفيذ transferAndCall، يتحقق من ما إذا كان عنوان المستقبل هو عقد ذكي (وليس حسابًا خارجيًا)، وإذا كان كذلك، يتم استدعاء وظيفة onTokenTransfer تلقائيًا.
بفضل هذا التصميم، يتم دمج عملية الدفع واستدعاء الوظيفة، مما يجعل من الممكن تنفيذ منطق الأعمال الخاص بآلة الأوراكل بكفاءة.
هيكلية التحقق الأمني متعددة الطبقات
قبل استخدام خدمة الأوراكل، يجب على المستخدم التحقق من موثوقية آلة الأوراكل مسبقًا. في Chainlink، يمكن لأي شخص أن يشارك كمزود خدمة أوراكل، ويعزز هذا الشفافية وقابلية التحقق من النظام موثوقيته.
تدفق معالجة الطلبات على السلسلة
آلية قبول الطلبات في عقد Oracle
عند دفع الرسوم وطلب خدمة الأوراكل باستخدام طريقة transferAndCall، يكون عنوان الهدف هو عنوان عقد الأوراكل. في وظيفة onTokenTransfer لعقد Oracle، يتم تنفيذ عدة عمليات تحقق تدريجية:
أولاً، التأكد من أن عملية التحويل تأتي من عقد LINK (باستخدام قيد onlyLINK)، ويتم ذلك بمقارنة msg.sender مع عنوان عقد LINK. بعد ذلك، يتم التحقق من أن طول البيانات المرسلة (_data) لا يتجاوز الحد الأقصى. والأهم، يتم التحقق من أن _data يحتوي على مُعرف وظيفة يبدأ بـ “oracleRequest”.
عند اجتياز هذه الفحوصات الأمنية، يتم استدعاء وظيفة oracleRequest عبر delegatecall، حيث يتم تنفيذها فعليًا.
توليد وتسجيل معرف الطلب (requestId)
داخل وظيفة oracleRequest، يتم تنفيذ العمليات التالية بشكل متسلسل:
يتم دمج معرف المرسل (المستخدم) و nonce المرسل معه، ثم يُمرران عبر دالة هاش لتوليد requestId فريد لهذا الطلب. يتم التحقق من عدم وجود هذا requestId مسبقًا في خريطة الالتزام (commitment)، لضمان عدم التكرار.
عند النجاح، يتم تعيين مدة صلاحية (expiration)، وتسجيل قيمة تتضمن _payment، _callbackAddress، _callbackFunctionId، و expiration في خريطة الالتزام. وأهم خطوة هي إصدار حدث OracleRequest، الذي يتضمن البيانات المشفرة بصيغة CBOR (تمثيل كائن ثنائي مختصر)، وهو تنسيق خفيف وفعال لنقل البيانات.
استجابة العقد الخارجي (Off-chain node)
التحقق والتنفيذ في fulfillOracleRequest
مُعِدّات Chainlink التي تعمل خارج السلسلة تراقب حدث OracleRequest. عند اكتشافه، تنفذ عدة عمليات تحقق مهمة قبل إرجاع البيانات إلى الشبكة.
أولاً، يتم التحقق من أن msg.sender هو مالك العقد أو ضمن قائمة العقد المعتمدة (باستخدام قيد onlyAuthorizedNode). ثم، يتم التحقق من أن requestId موجود في خريطة الالتزام، وأن القيم _payment، _callbackAddress، _callbackFunctionId، و expiration تتطابق مع القيم المسجلة سابقًا (isValidRequest).
عند النجاح، يتم تجميع مبلغ _payment في مخزون drawableTokens، ثم يُحذف الطلب من خريطة الالتزام. وأخيرًا، يتم التحقق من أن كمية الغاز المتبقية تكفي لاستدعاء وظيفة رد الاتصال في العقد الأصلي، ثم يتم استدعاؤها رسميًا باستخدام call، مع إرسال البيانات المستلمة.
نمط تنفيذ وظيفة رد الاتصال (callback)
من حدث OracleRequest، يمكن استنتاج معرف وظيفة الرد (مثل: 6A9705B4) والتوقيع المقابل (مثل: chainlinkCallback(bytes32,int256)). على جانب العقد المستهلك الذي يستقبل البيانات، يتم تنفيذ وظيفة تحقق مثل validateChainlinkCallback.
هذه الوظيفة تتحقق من أن requestId المقدم موجود فعلاً في pendingRequests، وأن الطلب جاء من الأوراكل الصحيح. عند النجاح، يُصدر حدث ChainlinkFulfilled، ويمكن بعد ذلك معالجة البيانات المستجيبة، وتحديث خريطة الردود، وتحديث سعر الأوراكل إذا كان ذلك مناسبًا.
نمط تنفيذ توقعات الأسعار
واجهة Aggregator وتغذية الأسعار
الخطوات أعلاه تمثل العملية الكاملة لنظام أوراكل شامل. من ناحية أخرى، توفر Chainlink نمطًا أبسط لتنفيذ توقعات الأسعار.
كل زوج تداول (مثل ETH/USD، BTC/USD) لديه تغذية سعر خاصة به (Aggregator أو نسخة البروكسي منها، AggregatorProxy). تحتوي على عدة طرق استعلام قياسية:
طرق الاستعلام الأساسية:
أفضل الممارسات في التنفيذ
في معظم سيناريوهات تطوير التطبيقات، يكون المطلوب هو قراءة السعر الأحدث فقط، باستخدام طريقة latestRoundData(). وتحتوي على السعر الأحدث.
بالإضافة إلى ذلك، تستخدم العديد من التطبيقات سعر العملة بالدولار الأمريكي (USD) كوحدة قياس. في هذه الحالة، يكون دقة زوج العملات بالدولار ثابتة عند 8 أرقام، ولا حاجة عادةً لمراعاة الاختلافات في الدقة. وإذا كانت أزواج عملات مختلفة لها دقة مختلفة، يمكن التحقق من ذلك باستخدام طريقة decimals() لضبط المعالجة بشكل مناسب.
وبهذه الطريقة، لا تقتصر آلة الأوراكل من Chainlink على مجرد وساطة البيانات، بل تقدم أنماطًا متقدمة مثل توقعات الأسعار، مما يوفر بنية أساسية مالية عملية وموثوقة في نظام البلوكشين.