אורקל מחירים on-chain · פידי מחירים לנכסים מהעולם האמיתי

אורקל מחירים לחוזים חכמים: מט״ח, זהב, מדדים ומניות on-chain

קבלו דוח מחיר חתום מה-API שלנו והעבירו אותו לחוזה שלכם. חוזה המאמת שלנו בודק את החתימה on-chain, כך שהחוזה שלכם יכול לסמוך על המחיר בלי לסמוך על השליח.

איך זה עובד

  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 הוא מרווח הקנייה-מכירה. כששולחים דוח בעסקה משלכם, אתם משלמים את הגז הזה. פידים מבוקשים נשמרים גם on-chain מדי פעם על ידי הממסר שלנו (קריאה בחינם), אבל תמיד בדקו את גיל המחיר השמור.

שעות מסחר

כל דוח מציין את מצב השוק: OPEN (מחיר חי, לכל היותר בן 60 שניות), CLOSED (המחיר הרשמי האחרון לפני הסגירה, זהה לכולם, נחתם בכל עת כל עוד השוק סגור) או HALTED (המסחר הופסק). getPriceNoOlderThan מחזיר רק מחירי OPEN, כך שמחיר סגירה לעולם לא ייחשב כמחיר חי. טוקנים מגובי נכסים צריכים לסלק פקודות שניתנו כשהשוק סגור לפי מחיר ה-OPEN הבא (תמחור קדימה, כמו שעושות קרנות ותעודות סל).

מפסק זרם

לכל פיד יכולה להיות קפיצה מרבית מותרת. תנועה גדולה יותר לא נשמרת: הפיד מושהה עד שנבדוק ונפתח אותו מחדש, כך שמחיר שגוי או מתומרן לעולם לא מגיע לחוזה שלכם.

פידים

סימול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 הרגילה שלכם. קריאת מחירים שכבר שמורים on-chain היא בחינם.

שימושים לפידי המחירים on-chain שלנו

למה אורקל משיכה חתום?

אורקלי דחיפה מתעדכנים לפי לוח זמנים ומישהו משלם גז על כל עדכון. עם אורקל משיכה החוזה שלכם מקבל מחיר טרי וחתום קריפטוגרפית בדיוק כשהוא צריך אותו: עלות נמוכה יותר, נתונים טריים יותר ואותו אימות 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. דוחות תקפים כדקה, אז קבלו אותם ממש לפני שליחת העסקה.

הודעת סיכון. המחירים הם נתוני שוק אינדיקטיביים מהמקור שלנו, לא זירת ביצוע. חוזים חכמים שמעבירים כספים על סמך אורקל כלשהו חייבים לבדוק עדכניות, לטפל בעדכונים חסרים ולהגביל את ההשפעה של מחיר שגוי. קראו את התנאים לפני שאתם מסתמכים על האורקל בסביבת ייצור.