أوراكل أسعار على السلسلة · مصادر أسعار الأصول الحقيقية

أوراكل أسعار للعقود الذكية: الفوركس والذهب والمؤشرات والأسهم على السلسلة

اجلب تقرير سعر موقّعًا من الـ API الخاصة بنا ومرّره إلى عقدك. يتحقق عقد التحقق الخاص بنا من التوقيع على السلسلة، فيستطيع عقدك الوثوق بالسعر دون الوثوق بالناقل.

كيف يعمل

  1. اجلب تقريرًا موقّعًا: GET /oracle/report بمفتاح الـ API الخاص بك.
  2. أرسله ضمن معاملتك: يتحقق عقد التحقق الخاص بنا من التوقيع عبر ecrecover.
  3. استخدم السعر المُتحقَّق منه، وارفضه إن كان أقدم مما يناسب حالة استخدامك.

التقارير بيانات EIP-712 مُنمَّطة PriceReport(bytes32 feedId,int256 price,uint64 timestamp,uint64 validUntil,uint8 marketStatus,uint32 spreadBps)، مرتبطة بسلسلة واحدة وعقد تحقق واحد (لا إعادة استخدام في مكان آخر)، ولا تُقبل إلا حتى validUntil، أي نحو دقيقة بعد التوقيع (لا يمكن تكديس التقارير المواتية). الأسعار هي متوسط العرض والطلب بـ 8 منازل عشرية؛ وspreadBps هو فارق العرض والطلب. حين ترسل تقريرًا في معاملتك الخاصة، تدفع ذلك الغاز. كما يخزّن المرحِّل الخاص بنا المصادر المطلوبة على السلسلة من حين لآخر (قراءتها مجانية)، لكن تحقق دائمًا من عمر السعر المخزَّن.

ساعات السوق

يذكر كل تقرير حالة السوق: OPEN (سعر حي لا يتجاوز عمره 60 ثانية)، أو CLOSED (السعر الرسمي الأخير قبل الإغلاق، وهو نفسه للجميع، ويُوقَّع في أي وقت ما دام السوق مغلقًا)، أو HALTED (التداول متوقف). لا تُعيد getPriceNoOlderThan إلا أسعار OPEN، فلا يمكن أبدًا أن يمر سعر إغلاق على أنه سعر حي. ينبغي للرموز المدعومة بأصول أن تسوّي الأوامر المقدَّمة أثناء إغلاق السوق بسعر OPEN التالي (التسعير الآجل، كما تفعل الصناديق وصناديق ETF).

قاطع الدارة

يمكن أن يكون لكل مصدر قفزة قصوى مسموح بها. لا تُخزَّن الحركة الأكبر: يتوقف المصدر حتى نفحصه ونعيد فتحه، فلا يصل سعر خاطئ أو متلاعب به إلى عقدك أبدًا.

المصادر

الرمزfeedId
AUDUSD0x5577fa17b1be8ae0f1517fe1864ea534d6992f3721000cdb6585b11e7046d5ec
EURGBP0xeaff3420d70d388655273db9b4f3000962445a6f0ea23ec1f04d843e4dbae4b0
EURUSD0x0730076c3c0f5da594eb635c5d5a22116233bdb2a9c2977279cc348b8b8ce917
GBPUSD0xd30842147b60fe333c2700bcae5eee6815b8529847955d19522858806bca8217
IEF0x309dab183458dd939568dca0d68bea45d34aa25d31fa47fc5f12030e8f227f4e
OILCash#0xe21b90a237aa0663c02092eca221a0098c6c477054a61d05ecd3692f6631f6ff
SHY0x78f1083af8e72ddefc2e66fad95680c38a953b3136f413c61ab40f99b72991bc
SPY0xcea23e8f56b5ac447ac08d57e0808e35f468a65f29bb659b3d48934481e7c67a
TLT0x4abd434857e07567d49487ccf888348e55d5cfc15498c09a9dbcba2820e40ee4
USDCAD0xa36f6cf3195abb4e93bf276660acee423f78878e6cfdbad0eab36e455afca97e
USDCHF0xd85af9ebd6fec6b317a7ac07f6d6455c4fc915cc8e1cfe19471faca002582907
USDJPY0x3d6c40e9d821c10e442cb3fc6cb1c589ffd8b906e734a1ab3b3f7d213ac395d6
USDSGD0x8a1375bd16e33aff9be7037f83e076defe9df6efea6d39a51d0b08f17ac9bc6d
XAGUSD0x67107df7f0e95594d9bf8ad8840bbb2ff95617123c227e10aab4d161dd6959b6
XAUUSD0xe21c86d8b6a127bfef214d88fdb0c279e55d27dd8c443733e46c8d3de3c98cd6

الشبكات

الشبكةمعرّف السلسلةعقد التحقق
Optimism100xaeF7f701acFB42267015D3F593ce17CF536Afd6B
Optimism Sepolia شبكة اختبار111554200xBBf36E7Cd75494f28E02C5698EaD35fF4960a943

عنوان المُوقِّع: 0x83fa2d8836525251FAd214A78A72038D0864f877. قائمة قابلة للقراءة آليًا: /oracle/feeds.

التكامل

1. اجلب تقريرًا موقّعًا

curl -H "Authorization: Bearer $API_KEY" \
  "https://api.marketapi.app/v1/oracle/report?symbols=EURUSD&chain_id=10"

يُعيد report (الصف المرمَّز بـ ABI) وsignature (65 بايت) لكل رمز. يحتاج مفتاحك إلى النطاق read:oracle.

2. تحقّق منه في عقدك

interface IMarketApiOracle {
    struct PriceReport { bytes32 feedId; int256 price; uint64 timestamp; uint64 validUntil;
                         uint8 marketStatus; uint32 spreadBps; }
    function submit(PriceReport calldata r, bytes calldata sig) external returns (bool);  // verifies, stores if newer
    function getPriceNoOlderThan(bytes32 feedId, uint256 maxAge)
        external view returns (int256 price, uint64 timestamp);   // OPEN and fresh only, else reverts
    function getPrice(bytes32 feedId) external view
        returns (int256 price, uint64 timestamp, uint8 marketStatus, uint32 spreadBps);   // incl. CLOSED
}

contract MyVault {
    IMarketApiOracle immutable oracle;
    bytes32 constant EURUSD = keccak256("EURUSD");
    constructor(IMarketApiOracle o) { oracle = o; }

    function act(IMarketApiOracle.PriceReport calldata r, bytes calldata sig) external {
        oracle.submit(r, sig);                                       // reverts on a bad signature
        (int256 price, ) = oracle.getPriceNoOlderThan(EURUSD, 60);   // 8 decimals
        // ... use price ...
    }
}

يمكن للمستهلكين بأسلوب Chainlink قراءة المصدر عبر MarketApiFeedAdapter (latestRoundData()، AggregatorV3Interface).

الأسعار

5 رصيد لكل تقرير موقّع، يُدفع من رصيد الـ API المعتاد. وقراءة الأسعار المخزَّنة مسبقًا على السلسلة مجانية.

حالات استخدام مصادر أسعارنا على السلسلة

لماذا أوراكل سحب موقّع؟

تتحدّث أوراكلات الدفع وفق جدول، ويدفع أحدهم الغاز عن كل تحديث. أما مع أوراكل السحب فيجلب عقدك سعرًا حديثًا موقّعًا تشفيريًا في اللحظة التي يحتاجه فيها تمامًا: تكلفة أقل وبيانات أحدث والتحقق نفسه على السلسلة. وحالة السوق وفارق العرض والطلب وانتهاء الصلاحية جزء من كل تقرير موقّع.

الأسئلة الشائعة عن أوراكل الأسعار

ما أوراكل الأسعار على البلوكشين؟

ينقل أوراكل الأسعار أسعار السوق من خارج السلسلة إلى العقود الذكية. يوقّع أوراكلنا كل سعر بتوقيع EIP-712، ويتحقق عقدك منه على السلسلة عبر ecrecover قبل استخدامه، فلا يمكن تزوير السعر أثناء النقل.

ما الأصول التي تغطيها مصادر الأسعار؟

أزواج الفوركس مثل EUR/USD، والمعادن الثمينة مثل الذهب (XAU/USD) والفضة، ومؤشرات الأسهم والأسهم الفردية، كما هو منشور في قائمة المصادر في هذه الصفحة. لكل مصدر feedId ثابت (keccak256 للرمز).

هل يناسب الأصول الحقيقية (RWA) والأصول المرمّزة؟

نعم. تحمل التقارير حالة السوق (مفتوح، مغلق، متوقف)، لذا يمكن للأسهم المرمّزة والسلع والأصول الحقيقية الأخرى تطبيق التسعير الآجل خارج ساعات السوق بدل التداول بسعر قديم.

هل الأوراكل متوافق مع Chainlink؟

يمكن قراءة كل مصدر عبر محوّل يطبّق واجهة Chainlink AggregatorV3Interface (latestRoundData)، لذا يعمل كود DeFi الحالي الذي يقرأ مصادر أسعار بأسلوب Chainlink بأقل قدر من التغييرات.

كيف يُمنع التلاعب؟

تنتهي صلاحية التقارير خلال نحو دقيقة ويجب أن تكون أحدث من السعر المخزَّن، ويوقف قاطع دارة خاص بكل مصدر المصدر بعد قفزة غير طبيعية، ومع عدة وسطاء يكون السعر وسيط مصادر مستقلة بعد استبعاد القيم الشاذة.

من يدفع رسوم الغاز؟

إنه أوراكل سحب: يرسل تطبيقك التقرير الموقّع في معاملته الخاصة ويدفع ذلك الغاز. كما يخزّن المرحِّل الخاص بنا المصادر المطلوبة على السلسلة من حين لآخر؛ وقراءة الأسعار المخزَّنة مجانية، لكن تحقق من عمرها قبل الاستخدام.

ما سلاسل الكتل المدعومة؟

أي سلسلة EVM نُشر عليها عقد التحقق، مثل Ethereum وBase وArbitrum وOptimism وBNB Smart Chain وPolygon وشبكات الاختبار الخاصة بها؛ والقائمة الحالية معروضة أعلاه.

موصى به: نمط السحب (أسعار حديثة دائمًا)

لا تعتمد على السعر المخزَّن مسبقًا على السلسلة. اجلب تقريرًا موقّعًا حديثًا وأرسله في المعاملة نفسها التي تستخدمه: فيرى عقدك دائمًا السعر الحالي، ولا تدفع إلا مقابل تحديثاتك.

// 1) off-chain: GET https://api.marketapi.app/v1/oracle/report?symbols=EURUSD&chain_id=CHAIN_ID  (header: Authorization: Bearer KEY)
// 2) on-chain: verify, store and use the report atomically
interface IMarketApiOracle {
    struct PriceReport { bytes32 feedId; int256 price; uint64 timestamp; uint64 validUntil; uint8 marketStatus; uint32 spreadBps; }
    function submit(PriceReport calldata r, bytes calldata sig) external returns (bool);
    function getPriceNoOlderThan(bytes32 feedId, uint256 maxAge) external view returns (int256 price, uint64 timestamp);
}

contract MyVault {
    IMarketApiOracle immutable oracle;
    bytes32 constant EURUSD = keccak256("EURUSD");
    constructor(IMarketApiOracle o) { oracle = o; }

    function settle(IMarketApiOracle.PriceReport calldata r, bytes calldata sig) external {
        oracle.submit(r, sig);                                         // ignored if an equal/newer price is stored
        (int256 price, ) = oracle.getPriceNoOlderThan(EURUSD, 60);    // reverts unless OPEN and fresh
        // ... use price (8 decimals)
    }
}

حقلا report وsignature في التقرير من الـ API هما بالضبط وسيطا submit. التقارير صالحة لنحو دقيقة، فاجلبها قبيل إرسال المعاملة مباشرة.

تنبيه بالمخاطر. الأسعار بيانات سوق استرشادية من مصدرنا، وليست مكان تنفيذ. يجب على العقود الذكية التي تنقل الأموال بناءً على أي أوراكل أن تتحقق من الحداثة، وتعالج التحديثات المفقودة، وتحدّ من أثر السعر الخاطئ. اقرأ الشروط قبل الاعتماد على الأوراكل في بيئة الإنتاج.