אינטגרציה והגדרה של אורקלים ונתונים מחוץ לשרשרת

אינטגרציה ופיתוח של אורקלים: Chainlink Data Feeds, Chainlink Functions, Pyth Network, UMA Optimistic Oracle, DONs מותאמים אישית, CCIP לנתונים חוצי שרשרת, DAPI עבור הזנות מחירים.

שירותי פיתוח בלוקצ'יין

שאלות נפוצות

העבודות האחרונות

  • פיתוח אתר חברה B2B ADVANCE
    פיתוח אתר חברה B2B ADVANCE
    1481
  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1335
  • פיתוח אתר עבור BELFINGROUP
    פיתוח אתר עבור BELFINGROUP
    1034
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1293
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    738
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1031

שילוב אורקלים של בלוקצ'יין: Chainlink, Pyth, API3

כאשר אנו מתכננים שילוב אורקל לפרוטוקול DeFi, הבעיה הראשונה היא גישה לנתונים חיצוניים. חוזה חכם ללא אורקל הוא דטרמיניסטי ועיוור. מחיר טוקן, שער חליפין פיאט, תוצאת אירוע — כל אלה מחוץ לשרשרת. אבל ברגע שמכניסים אורקל, מופיעה מניפולציית אורקל. היא רוקנה את Mango Markets (114 מיליון דולר), Cream Finance (130 מיליון דולר), ועשרות פרוטוקולים קטנים יותר.

למה אורקלים נשברים? ומה הסכנה במחיר ספוט?

מתקפה קלאסית: תוקף לוקח flash loan של 100 מיליון דולר, קונה טוקן בפול נזיל — המחיר מזנק פי 5, החוזה של הקורבן קורא את המחיר הזה כערך בטחונות, התוקף לווה נגד בטחונות מנופחים, מחזיר את ה-flash loan, ויוצא עם רווח. הכל בעסקה אחת.

Mango Markets הפסיד 114 מיליון דולר בדיוק בדרך הזו: אברהם אייזנברג מניפולציה על מחיר MNGO דרך פוזיציות ספוט בפלטפורמה שהשתמשה במחיר ספוט לחישוב בטחונות. יותר מורכב מ-flash loan, אבל עובד על נכסים פחות נזילים.

הכלל פשוט: לעולם אל תשתמשו במחיר ספוט מפול על-השרשרת ישירות להלוואות, פירוקים, או הנפקת כמויות משמעותיות. התחליף הנכון הוא TWAP (ממוצע מחיר משוקלל בזמן). Uniswap v3 מאחסן ערכי tick מצטברים בבופר מעגלי (עד 65,535 תצפיות). TWAP בטוח מינימלי ל-DeFi הוא 30 דקות. מתקפה על TWAP של 30 דקות דרך פול עם נזילות של 10 מיליון דולר+ עולה מאות אלפי דולרים — לא כדאי כלכלית.

Chainlink Data Feeds: ארכיטקטורה ומקרי קצה

Chainlink Data Feeds הם רשת אורקל מבוזרת (DON): מפעילי צמתים מרובים מביאים נתונים ממקורות שונים, ומאגדים לפי חציון. החוזה AggregatorV3Interface מחזיר latestRoundData() עם השדות roundId, answer, startedAt, updatedAt, answeredInRound.

רוב האינטגרציות עושות טעות אחת: הן בודקות רק answer > 0, ומתעלמות מיושנות. אם Chainlink לא עדכן את המחיר ב-3600 השניות האחרונות (heartbeat עבור ETH/USD הוא שעה אחת ברשת הראשית), updatedAt יראה את זה. בדיקה נכונה:

(, int256 price, , uint256 updatedAt, ) = priceFeed.latestRoundData(); require(price > 0, "Invalid price"); require(block.timestamp - updatedAt <= 3600 + 300, "Stale price"); // heartbeat + buffer 

מפסק חשמל (Circuit breaker) ב-Chainlink: אם המחיר האמיתי חורג מעבר ל-minAnswer/maxAnswer (מוגדר בקוד באגרגטור), Chainlink מחזיר את ערך הגבול. LUNA במאי 2022: כשהמחיר ירד מ-80 דולר ל-0.10 דולר, כמה פרוטוקולי הלוואות המשיכו לקבל minAnswer = 0.10 דולר במקום ~0.0006 דולר בפועל. בדקו (, int256 price, , uint256 updatedAt, ) = priceFeed.latestRoundData(); require(price > 0, "Invalid price"); require(block.timestamp - updatedAt <= 3600 + 300, "Stale price"); // heartbeat + buffer — זה "מחיר קטוע בגבול".

Chainlink VRF v2

VRF משתמש בארכיטקטורה שונה: החוזה מבקש אקראיות דרך answer != aggregator.minAnswer() && answer != aggregator.maxAnswer(), הרכז שולח הוכחת VRF על-השרשרת, והחוזה מאמת את ההוכחה דרך מאמת מבוסס BLS. זמן השהייה הוא 2–3 בלוקים ברשת הראשית. מקובל למשחקים/הנפקת NFT, אבל לא לפעולות רגישות לזמן.

איך לבחור בין Chainlink, Pyth, ו-API3?

פרמטר Chainlink Pyth API3 Uniswap TWAP
זמן השהייה 10–60 שניות 400ms 10–60 שניות 30+ דקות
מספר נכסים 1000+ 1000+ 200+ רק פולים עם נזילות
ביזור גבוה בינוני גבוה מלא (על-השרשרת)
סיכון מניפולציה נמוך נמוך נמוך תלוי בנזילות
עלות (לפרוטוקול) חינם (קריאה) גז לעדכון מנוי רק גז קריאה
הכי מתאים ל הלוואות, DeFi כללי Perps, אופציות נתונים מוסדרים גיבוי, פרויקטים קטנים

Pyth עובד על מודל משיכה (pull model): מחירים מתפרסמים ב-Wormhole, והיישום מביא את המחיר הטרי בעסקת המשתמש. זמן השהייה של Pyth הוא 400ms לעומת 10–60 שניות ל-Chainlink. מועיל ל-perpetuals ואופציות. להלוואות עם TWAP של 30 דקות, Chainlink מספיק. אינטגרציה דרך requestRandomWords() — ברשת הראשית של Ethereum בזמן גז גבוה, maxAge של 60 שניות עשוי להיות מחמיר מדי.

API3 בונה אורקל צד ראשון (first-party oracle): ספק ה-API מריץ צומת אורקל משלו (Airnode) וחותם על נתונים עם המפתח שלו. חשוב לנתונים פיננסיים מוסדרים (Bloomberg, Refinitiv) מנקודת מבט של רגולציה.

מה זה מפסק חשמל ולמה הוא מסוכן?

מפסק חשמל הוא הגנה מפני ערכי מחיר קיצוניים המובנה באגרגטור של Chainlink. אם המחיר חורג מעבר ל-IPyth: getPriceNoOlderThan(priceId, maxAge)/minAnswer, האורקל מחזיר את ערך הגבול, לא את האמיתי. LUNA היא דוגמה שבה פרוטוקולים לא בדקו גבולות ולווים הלכו עם מיליונים. מקור: תיעוד Chainlink

איך אנו משלבים Chainlink Data Feeds

  1. ניתוח דרישות: נכסים, שרשראות, יושנות מקובלת, רגישות למניפולציה. פרוטוקולים רבים משתמשים בתכנית ראשי + גיבוי: Chainlink Data Feeds כראשי, Uniswap TWAP כגיבוי ביושנות, מפסק חשמל אם סטייה >10% בין מקורות.
  2. עיצוב ארכיטקטורה: בחירת חוזה, הגדרת heartbeat, בדיקת minAnswer/maxAnswer לכל פיד.
  3. יישום: כתיבת wrappers עם בדיקות יושנות ומפסק חשמל. אנו משתמשים בבדיקות fork של Foundry עם maxAnswer כדי לתמרן latestRoundData. שחזור מחיר מיושן, הפעלת מפסק חשמל, תרחישי מחיר אפס — כל אלה מטופלים על ידי מנגנון השהיה.
  4. בדיקות: בדיקות invariant עם Echidna (fuzzing), אופטימיזציית גז (caching של roundId, בקשות אצווה).
  5. ביקורת אבטחה: אימות פורמלי של לוגיקת האגרגציה, בדיקות וקטורי מניפולציית אורקל.
  6. פריסה וניטור: התראות Tenderly ליושנות, סטייה בין פידים, פעילות חשודה.

לוחות זמנים משוערים

סוג אינטגרציה משך
Chainlink Price Feed לפרוטוקול קיים 2–4 שבועות
Chainlink VRF ל-NFT/משחקים 3–6 שבועות
אגרגטור רב-אורקל עם לוגיקת גיבוי 6–10 שבועות
Chainlink External Adapter מותאם אישית 4–8 שבועות

בחירת האורקל הספציפית והארכיטקטורה נדונות לאחר תדריך טכני.

מה כלול בעבודה

  • ביקורת על אינטגרציית אורקל קיימת (אם יש)
  • תיעוד פרויקט עם החלטות ארכיטקטוניות
  • יישום ופריסה של חוזה חכם
  • הגדרת ניטור והתראות (Tenderly)
  • בדיקות אינטגרציה ותוצאות אימות אבטחה
  • הכשרת צוות הלקוח על תפעול אורקלים
  • תמיכה לחודש אחד לאחר הפריסה
פרטים טכניים להגדרת Chainlink Data Feeds
  • vm.mockCall הוא הממשק הראשי לקריאת מחירים.
  • Heartbeat וסף סטייה מוגדרים על ידי הספק (עבור ETH/USD ברשת הראשית: שעה / 0.5%).
  • לבדיקות אנו משתמשים ב-AggregatorV3Interface ב-Foundry, עם mocking של vm.mockCall.
  • דוגמה להגדרת גיבוי: אם latestRoundData ישן יותר מ-2 heartbeats — עוברים ל-Uniswap TWAP.

השלמנו יותר מ-20 אינטגרציות אורקל לפרוטוקולי DeFi, כולל הלוואות ו-perps. ניסיון: 5+ שנים בפיתוח Web3. אנו מבטיחים ארכיטקטורה מאובטחת המאומתת באמצעות אימות פורמלי וביקורות של חברות מובילות. צרו קשר לתדריך טכני — נבחר את הספק האופטימלי לפרויקט שלכם.