أوراكل أسعار على السلسلة · مصادر أسعار الأصول الحقيقية
أوراكل أسعار للعقود الذكية: الفوركس والذهب والمؤشرات والأسهم على السلسلة
اجلب تقرير سعر موقّعًا من الـ API الخاصة بنا ومرّره إلى عقدك. يتحقق عقد التحقق الخاص بنا من التوقيع على السلسلة، فيستطيع عقدك الوثوق بالسعر دون الوثوق بالناقل.
كيف يعمل
- اجلب تقريرًا موقّعًا:
GET /oracle/reportبمفتاح الـ API الخاص بك. - أرسله ضمن معاملتك: يتحقق عقد التحقق الخاص بنا من التوقيع عبر
ecrecover. - استخدم السعر المُتحقَّق منه، وارفضه إن كان أقدم مما يناسب حالة استخدامك.
التقارير بيانات 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 |
|---|---|
| AUDUSD | 0x5577fa17b1be8ae0f1517fe1864ea534d6992f3721000cdb6585b11e7046d5ec |
| EURGBP | 0xeaff3420d70d388655273db9b4f3000962445a6f0ea23ec1f04d843e4dbae4b0 |
| EURUSD | 0x0730076c3c0f5da594eb635c5d5a22116233bdb2a9c2977279cc348b8b8ce917 |
| GBPUSD | 0xd30842147b60fe333c2700bcae5eee6815b8529847955d19522858806bca8217 |
| IEF | 0x309dab183458dd939568dca0d68bea45d34aa25d31fa47fc5f12030e8f227f4e |
| OILCash# | 0xe21b90a237aa0663c02092eca221a0098c6c477054a61d05ecd3692f6631f6ff |
| SHY | 0x78f1083af8e72ddefc2e66fad95680c38a953b3136f413c61ab40f99b72991bc |
| SPY | 0xcea23e8f56b5ac447ac08d57e0808e35f468a65f29bb659b3d48934481e7c67a |
| TLT | 0x4abd434857e07567d49487ccf888348e55d5cfc15498c09a9dbcba2820e40ee4 |
| USDCAD | 0xa36f6cf3195abb4e93bf276660acee423f78878e6cfdbad0eab36e455afca97e |
| USDCHF | 0xd85af9ebd6fec6b317a7ac07f6d6455c4fc915cc8e1cfe19471faca002582907 |
| USDJPY | 0x3d6c40e9d821c10e442cb3fc6cb1c589ffd8b906e734a1ab3b3f7d213ac395d6 |
| USDSGD | 0x8a1375bd16e33aff9be7037f83e076defe9df6efea6d39a51d0b08f17ac9bc6d |
| XAGUSD | 0x67107df7f0e95594d9bf8ad8840bbb2ff95617123c227e10aab4d161dd6959b6 |
| XAUUSD | 0xe21c86d8b6a127bfef214d88fdb0c279e55d27dd8c443733e46c8d3de3c98cd6 |
الشبكات
| الشبكة | معرّف السلسلة | عقد التحقق |
|---|---|---|
| Optimism | 10 | 0xaeF7f701acFB42267015D3F593ce17CF536Afd6B |
| Optimism Sepolia شبكة اختبار | 11155420 | 0xBBf36E7Cd75494f28E02C5698EaD35fF4960a943 |
عنوان المُوقِّع: 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 المعتاد. وقراءة الأسعار المخزَّنة مسبقًا على السلسلة مجانية.
حالات استخدام مصادر أسعارنا على السلسلة
- الأصول المرمّزة وRWA: سعّر الأسهم المرمّزة والرموز المدعومة بالذهب والأصول الحقيقية الأخرى ببيانات أسعار تراعي ساعات السوق.
- إقراض DeFi والضمانات: قيّم الضمانات المدعومة بالعملات والسلع بأسعار حديثة قابلة للتحقق وبفحوصات حداثة آمنة للتصفية.
- الأصول الاصطناعية وصرف العملات على السلسلة: سوِّ مراكز الفوركس والمؤشرات والسلع الاصطناعية مقابل أسعار مرجعية موقّعة.
- العملات المستقرة والمدفوعات: حوّل بين العملات على السلسلة بأسعار EUR/USD وGBP/USD وغيرها الحية.
لماذا أوراكل سحب موقّع؟
تتحدّث أوراكلات الدفع وفق جدول، ويدفع أحدهم الغاز عن كل تحديث. أما مع أوراكل السحب فيجلب عقدك سعرًا حديثًا موقّعًا تشفيريًا في اللحظة التي يحتاجه فيها تمامًا: تكلفة أقل وبيانات أحدث والتحقق نفسه على السلسلة. وحالة السوق وفارق العرض والطلب وانتهاء الصلاحية جزء من كل تقرير موقّع.
الأسئلة الشائعة عن أوراكل الأسعار
ما أوراكل الأسعار على البلوكشين؟
ينقل أوراكل الأسعار أسعار السوق من خارج السلسلة إلى العقود الذكية. يوقّع أوراكلنا كل سعر بتوقيع 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. التقارير صالحة لنحو دقيقة، فاجلبها قبيل إرسال المعاملة مباشرة.
تنبيه بالمخاطر. الأسعار بيانات سوق استرشادية من مصدرنا، وليست مكان تنفيذ. يجب على العقود الذكية التي تنقل الأموال بناءً على أي أوراكل أن تتحقق من الحداثة، وتعالج التحديثات المفقودة، وتحدّ من أثر السعر الخاطئ. اقرأ الشروط قبل الاعتماد على الأوراكل في بيئة الإنتاج.