لأغراض تعليمية فقط؛ لا يشكل ذلك نصيحة استثمارية أو توصية استثمارية. قد تؤدي الاستثمارات إلى خسائر.
الإجابة المباشرة
تكون قيمة الأوراكل متقادمة بالنسبة إلى إجراء محدد لدى المستهلك عندما تتجاوز age = consumerClock - sourceTimestamp قيمة maxAge المضبوطة لذلك الإجراء. وقد يكون السعر الذي لم يتغير حديثا، بينما قد تكون القيمة المنشورة حديثا خاطئة اقتصاديا. لذلك يجب على المستهلك أولا رفض الطوابع الزمنية المفقودة أو المستقبلية والإجابات غير الصالحة، ثم تطبيق سياسة قبول خاصة بالفيد والأصل والسلسلة وساعات السوق والإجراء.
الفاصل الدوري وحد الانحراف هما محفزان للنشر، وليسا ضمانين لحداثة البيانات أو اتفاقية لمستوى الخدمة. قد يتأخر التقرير بعد تحقق المحفز، وقد يتحرك السوق بأقل من حد الانحراف بينما يتطلب الإجراء حدا أقصر للعمر. وتضيف أوراكلات السحب حدا آخر: فقد يضطر المستدعي إلى تقديم تحديث موثق قبل القراءة، وعلى العقد رفض التحديثات الأقدم من الحد المعلن.
على شبكة من الطبقة الثانية، تشكل حالة المنظم وفترة السماح بعد تعافيه بوابة مستقلة. اجتياز هذه البوابة لا يثبت أن سعر الأصل حديث، أو أن حالة الطبقة الثانية نهائية، أو أن جميع المستخدمين تمتعوا بفرصة وصول متساوية. والأسعار البديلة وأسعار آخر قيمة سليمة هي أوضاع تدهور منضبط وليست حقيقة؛ لذلك يحتاج كل مصدر ومسار تعاف إلى وحدات وطوابع زمنية واستقلالية وصلاحيات وإجراءات مسموحة وقواعد تسوية.
آلية العمل
- ثبت السلسلة والكتلة والساعة وعقد المستهلك والإجراء ووكيل الفيد والمجمع وزوج الأصل وعدد المنازل العشرية وإصدار الواجهة وإعداد البديل وحالة الترقية.
- اقرأ الاستجابة الدقيقة عبر الواجهة المنشورة وتعامل مع حالات التراجع أو غياب البيانات. تحقق من الإجابة والحالة أو مستوى الثقة حيثما ينطبق، ومن
sourceTimestamp != 0وsourceTimestamp <= consumerClockقبل إجراء الطرح. - سجل إعدادات الفاصل الدوري والانحراف وساعات السوق والنشر، ثم عين
maxAgeمستقلة لكل إجراء. عرف الحد صراحة، مثل قبولage <= maxAgeورفضage > maxAge. - في عمليات النشر المدعومة على الطبقة الثانية، تحقق من تهيئة فيد المنظم وحالته، واحسب الزمن منذ التعافي من الحقل الموثق، وطبق فترة السماح المضبوطة قبل فحص حداثة السعر بصورة مستقلة.
- تتبع كل ساق لازمة للأسعار المركبة وأسعار النسب والأسعار البديلة. وحد الاتجاه والوحدات، وقيد الحداثة الفعلية بأقدم تبعية لازمة لا بأحدث طابع زمني.
- عرف الحالات العادية والمتدهورة والمتوقفة لكل إجراء. قد يفشل الاقتراض أو السك أو الرفع المالي الجديد بصورة مغلقة، مع إبقاء السداد أو إضافة الضمان متاحين؛ واختبر الأسعار المتقادمة والبديلة والمستأنفة مقابل التعرض والسيولة وقدرة منفذي التصفية.
- راقب تغيرات المصدر والوكيل وتأخر التحديث ومعدلات الرفض وحالة المنظم والتباعد بين المصادر وساعات السوق؛ وتدرب على انقطاع الخدمة وفشل البديل والقفزة عند التعافي والتصفية المركزة وMEV ومحاسبة الديون المعدومة والعودة إلى الوضع الطبيعي.
بالنسبة إلى الواجهات المشابهة لـ Chainlink، قد تعرض latestRoundData() معرف الجولة والإجابة الموقعة ووقت البدء ووقت التحديث وحقل جولة قديما. توثق الواجهة الحالية answeredInRound بوصفه حقلا مهملا، ولذلك لا يجوز عرض اختبار عدم مساواة تاريخي كقاعدة حالية عامة؛ بل يجب فحص الوكيل والمجمع والتنفيذ الفعلي. يشير الطابع الزمني إلى وقت تحديث حالة الفيد الموثقة، لا إلى أن القيمة قابلة للتنفيذ بأي حجم. وتمثل block.timestamp في Solidity الطابع الزمني للكتلة الحالية ضمن قيود الإجماع، لا ساعة خارجية مطلقة.
أمثلة محلولة
- حد العمر الأقصى. لنفترض
consumerClock = 1,800,000,000وsourceTimestamp = 1,799,999,100، فتكونage = 900 seconds = 15 minutes. ترفضها سياسةmaxAge = 600 secondsبفارق300 seconds، بينما تقبلها سياسةmaxAge = 1,200 secondsبهامش300 seconds. لذا قد تكون قيمة الفيد نفسها مقبولة لإجراء ومتقادمة لإجراء آخر. - المحفز ليس ضمانا للحداثة. آخر سعر منشور هو
100.00، ومحفز الانحراف1%، والفاصل الدوري3,600 seconds. بعد2,700 secondsيكون سعر السوق المرصود100.80بعيدا بنسبة0.8%فقط، فلا يكون أي من المحفزين التعليميين قد تحقق. وعند101.20يصبح الانحراف1.2%وقد يبدأ النشر، لكن المستهلك يظل يقرأ100.00إلى أن يدرج تقرير جديد صالح. - بوابتان على الطبقة الثانية. يبلغ فيد المنظم أن الخدمة عادت، مع
startedAt = 1,799,996,400وconsumerClock = 1,800,000,000وgrace = 3,600 seconds، فيكون الزمن المنقضي بالضبط3,600 seconds. بموجب سياسة تمنع الإجراء حينelapsed <= grace، يظل الإجراء محظورا ولا يصبح مؤهلا إلا عند3,601 seconds. وتظل الأهلية مرهونة بالطابع الزمني المنفصل للسعر والإجابة وجميع فحوص المستهلك الأخرى. - قفزة التعافي. مع ضمان قدره
10 ETHودين12,000 USDوحد تصفية75%، تعطي القيمة المتقادمة2,000 USD/ETHناتجhealthFactor = 10 * 2,000 * 0.75 / 12,000 = 1.25. وتعطي القيمة المستأنفة1,400 USD/ETHناتج0.875. يصبح الحساب قابلا للتصفية وفقا لهذه المدخلات التعليمية، لكن التنفيذ يظل معتمدا على قواعد البروتوكول والسيولة والمنفذين والغاز والترتيب وتوافر السلسلة.
المخاطر
- اختيار سلسلة أو فيد أو وكيل أو مجمع أو زوج أصل أو إصدار واجهة خاطئ.
- قراءة المستهلك إجابة بلا طابع زمني أو حالة موثقة.
- عدم رفض الطابع الزمني الصفري أو المستقبلي أو السماح بانخفاض حسابي عند الطرح.
- كون الحد الأقصى للعمر متساهلا أكثر من اللازم بالنسبة إلى الأصل أو الإجراء أو ساعات السوق أو التقلب.
- كون الحد الأقصى للعمر صارما أكثر من اللازم فيسبب حجب الخدمة أو يمنع خفض المخاطر.
- معاملة الفاصل الدوري كموعد نشر مضمون أو اتفاقية لمستوى الخدمة.
- تراكم الانجراف أو فرق الأساس تحت الحد من دون تحقق محفز الانحراف.
- تأخر تقرير تحقق محفزه بسبب المصدر أو الموقعين أو الشبكة أو الغاز أو المرحل أو تعطل السلسلة.
- تطبيق اختبار جولة مهمل أو خاص بتنفيذ معين على جميع الحالات.
- تغير الفيد أو الوكيل أو المجمع أو الفاصل الدوري أو الانحراف أو إعداد الواجهة من دون ملاحظة.
- تجاهل دلالة السوق المغلقة أو العطلة أو السوق المتوقفة أو البيانات المرحلة.
- ظهور سعر مركب أو سعر نسبة حديثا مع تقادم إحدى ساقيه اللازمتين.
- تجاهل حالة منظم الطبقة الثانية أو عدم تهيئتها أو تأخرها أو قراءتها من شبكة خاطئة.
- غياب فترة السماح بعد التعافي أو سوء ضبطها أو وجود خطأ بمقدار واحد عند الحد.
- اجتياز حالة المنظم بينما يظل سعر الأصل متقادما أو غير متاح.
- الخلط بين وقت الطبقة الأولى ووقت كتلة الطبقة الثانية ووقت الرصد ووقت النشر والوقت الفعلي.
- غياب تحديث السحب أو تقادمه أو اختياره انتقائيا أو تشوهه أو نقص تمويله.
- كون البديل أو آخر قيمة سليمة متقادما أو مترابطا أو مختلف القياس أو دائريا.
- سماح الفشل المفتوح بإجراءات غير آمنة، بينما يمنع الفشل المغلق الشامل السداد أو إضافة الضمان أو التعافي المنظم.
- تسبب قفزة التعافي أو تركز التصفيات أو MEV أو ضعف السيولة أو سباقات الإيقاف أو تسوية الديون المعدومة في خسارة ثانوية.
مفاهيم خاطئة شائعة
- “يضمن الفاصل الدوري تحديثا حديثا في كل فترة.” إنه إعداد يحفز التحديث، ومع ذلك قد يؤخر تعطل المصدر أو السلسلة عملية النشر.
- “يثبت الطابع الزمني الحديث صحة سعر قابل للتنفيذ.” إنه لا يثبت إلا وقت التحديث الموثق؛ وتظل جودة المصدر والوحدات والثقة وعمق السوق ومنطق المستهلك مسائل مستقلة.
- “يناسب حد أقصى واحد للعمر كل فيد وإجراء.” تختلف احتياجات التأخر والتوافر بين الأصول وساعات السوق والسلاسل وإجراءات الاقتراض والتصفية والتداول والتسوية.
- “تعني عودة المنظم أن كل إجراء يمكن أن يستأنف فورا.” فترة السماح وحداثة السعر بوابتان مستقلتان، وقد تضيف سياسات البروتوكول أو السلسلة قيودا أخرى.
- “البديل أو جعل كل دالة تتراجع هو الخيار الأكثر أمانا دائما.” يسيء البديل الضعيف تسعير المخاطر، بينما قد يمنع الفشل الشامل المستخدمين من السداد أو تحسين نسبة الضمان.
مواضيع ذات صلة
المصادر
- Chainlink Data Feeds - Chainlink Documentation (تاريخ الاطلاع: 2026-08-13)
- Data Feeds API Reference - Chainlink Documentation (تاريخ الاطلاع: 2026-08-13)
- Developer Responsibilities - Chainlink Documentation (تاريخ الاطلاع: 2026-08-13)
- L2 Sequencer Uptime Feeds - Chainlink Documentation (تاريخ الاطلاع: 2026-08-13)
- How to Use Real-Time Data in EVM Contracts - Pyth Developer Hub (تاريخ الاطلاع: 2026-08-13)
- Best Practices - Pyth Developer Hub (تاريخ الاطلاع: 2026-08-13)
- Units and Globally Available Variables - Solidity Documentation (تاريخ الاطلاع: 2026-08-13)
- SC03:2026 Price Oracle Manipulation - OWASP Smart Contract Security (تاريخ الاطلاع: 2026-08-13)