אורקל מחירים on-chain · פידי מחירים לנכסים מהעולם האמיתי
אורקל מחירים לחוזים חכמים: מט״ח, זהב, מדדים ומניות on-chain
קבלו דוח מחיר חתום מה-API שלנו והעבירו אותו לחוזה שלכם. חוזה המאמת שלנו בודק את החתימה on-chain, כך שהחוזה שלכם יכול לסמוך על המחיר בלי לסמוך על השליח.
איך זה עובד
- קבלו דוח חתום:
GET /oracle/reportעם מפתח ה-API שלכם. - שלחו אותו בעסקה שלכם: חוזה המאמת שלנו בודק את החתימה עם
ecrecover. - השתמשו במחיר המאומת; דחו אותו אם הוא ישן מדי לשימוש שלכם.
הדוחות הם נתונים מוקלדים EIP-712 PriceReport(bytes32 feedId,int256 price,uint64 timestamp,uint64 validUntil,uint8 marketStatus,uint32 spreadBps), קשורים לרשת אחת ולחוזה מאמת אחד (אין שימוש חוזר במקום אחר) ומתקבלים רק עד validUntil, כדקה אחרי החתימה (אי אפשר לאגור דוחות נוחים). המחירים הם האמצע בין קנייה למכירה עם 8 ספרות אחרי הנקודה; spreadBps הוא מרווח הקנייה-מכירה. כששולחים דוח בעסקה משלכם, אתם משלמים את הגז הזה. פידים מבוקשים נשמרים גם on-chain מדי פעם על ידי הממסר שלנו (קריאה בחינם), אבל תמיד בדקו את גיל המחיר השמור.
שעות מסחר
כל דוח מציין את מצב השוק: OPEN (מחיר חי, לכל היותר בן 60 שניות), CLOSED (המחיר הרשמי האחרון לפני הסגירה, זהה לכולם, נחתם בכל עת כל עוד השוק סגור) או HALTED (המסחר הופסק). getPriceNoOlderThan מחזיר רק מחירי OPEN, כך שמחיר סגירה לעולם לא ייחשב כמחיר חי. טוקנים מגובי נכסים צריכים לסלק פקודות שניתנו כשהשוק סגור לפי מחיר ה-OPEN הבא (תמחור קדימה, כמו שעושות קרנות ותעודות סל).
מפסק זרם
לכל פיד יכולה להיות קפיצה מרבית מותרת. תנועה גדולה יותר לא נשמרת: הפיד מושהה עד שנבדוק ונפתח אותו מחדש, כך שמחיר שגוי או מתומרן לעולם לא מגיע לחוזה שלכם.
פידים
| סימול | 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 הרגילה שלכם. קריאת מחירים שכבר שמורים on-chain היא בחינם.
שימושים לפידי המחירים on-chain שלנו
- נכסים שעברו טוקניזציה ו-RWA: תמחרו מניות שעברו טוקניזציה, טוקנים מגובי זהב ונכסים אחרים מהעולם האמיתי עם נתוני מחירים שמתחשבים בשעות המסחר.
- הלוואות DeFi ובטוחות: העריכו בטוחות מגובות מט״ח וסחורות עם מחירים טריים וניתנים לאימות ובדיקות עדכניות בטוחות לחיסולים.
- נכסים סינתטיים ו-FX on-chain: סלקו פוזיציות סינתטיות של מט״ח, מדדים וסחורות מול מחירי ייחוס חתומים.
- מטבעות יציבים ותשלומים: המירו בין מטבעות on-chain עם שערי EUR/USD, GBP/USD ושערי מט״ח נוספים בזמן אמת.
למה אורקל משיכה חתום?
אורקלי דחיפה מתעדכנים לפי לוח זמנים ומישהו משלם גז על כל עדכון. עם אורקל משיכה החוזה שלכם מקבל מחיר טרי וחתום קריפטוגרפית בדיוק כשהוא צריך אותו: עלות נמוכה יותר, נתונים טריים יותר ואותו אימות on-chain. מצב השוק, מרווח הקנייה-מכירה ותוקף הם חלק מכל דוח חתום.
שאלות נפוצות על אורקל המחירים
מהו אורקל מחירים לבלוקצ׳ין?
אורקל מחירים מביא מחירי שוק מחוץ לשרשרת אל חוזים חכמים. האורקל שלנו חותם על כל מחיר בחתימת EIP-712; החוזה שלכם מאמת אותה on-chain עם ecrecover לפני השימוש, כך שאי אפשר לזייף את המחיר בדרך.
אילו נכסים מכוסים בפידי המחירים?
צמדי מט״ח כמו EUR/USD, מתכות יקרות כמו זהב (XAU/USD) וכסף, מדדי מניות ומניות בודדות, כפי שמפורסם ברשימת הפידים בעמוד זה. לכל פיד יש feedId קבוע (keccak256 של הסימול).
האם הוא מתאים ל-RWA ולנכסים שעברו טוקניזציה?
כן. הדוחות כוללים את מצב השוק (פתוח, סגור, מושהה), כך שמניות שעברו טוקניזציה, סחורות ונכסים אחרים מהעולם האמיתי יכולים להחיל תמחור קדימה מחוץ לשעות המסחר במקום לסחור במחיר מיושן.
האם האורקל תואם Chainlink?
כל פיד ניתן לקריאה דרך מתאם שמממש את Chainlink AggregatorV3Interface (latestRoundData), כך שקוד DeFi קיים שקורא פידי מחירים בסגנון Chainlink עובד עם שינויים מינימליים.
איך נמנעת מניפולציה?
הדוחות פגים תוך כדקה וחייבים להיות חדשים יותר מהמחיר השמור, מפסק זרם לכל פיד משהה פיד אחרי קפיצה חריגה, וכשיש כמה ברוקרים המחיר הוא החציון של מקורות בלתי תלויים לאחר הסרת חריגים.
מי משלם את עמלות הגז?
זהו אורקל משיכה: האפליקציה שלכם שולחת את הדוח החתום בעסקה משלה ומשלמת את הגז הזה. הממסר שלנו גם שומר מדי פעם on-chain פידים מבוקשים; קריאת מחירים שמורים היא בחינם, אבל בדקו את גילם לפני השימוש.
אילו בלוקצ׳יינים נתמכים?
כל רשת EVM שבה פרוס חוזה המאמת, למשל Ethereum, Base, Arbitrum, Optimism, BNB Smart Chain ו-Polygon ורשתות הבדיקה שלהן; הרשימה העדכנית מוצגת למעלה.
מומלץ: דפוס המשיכה (מחירים טריים תמיד)
אל תסתמכו על המחיר שכבר שמור on-chain. קבלו דוח חתום טרי ושלחו אותו באותה עסקה שמשתמשת בו: החוזה שלכם תמיד רואה את המחיר הנוכחי, ואתם משלמים רק על העדכונים שלכם.
// 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. דוחות תקפים כדקה, אז קבלו אותם ממש לפני שליחת העסקה.
הודעת סיכון. המחירים הם נתוני שוק אינדיקטיביים מהמקור שלנו, לא זירת ביצוע. חוזים חכמים שמעבירים כספים על סמך אורקל כלשהו חייבים לבדוק עדכניות, לטפל בעדכונים חסרים ולהגביל את ההשפעה של מחיר שגוי. קראו את התנאים לפני שאתם מסתמכים על האורקל בסביבת ייצור.