Perpetual DEX ללא תמחור אורקל נכון הוא שדה מוקשים. GMX, dYdX, Synthetix — כולם השתמשו במחיר אורקל עבור חוזי מחיר סימון, שזה שונה מהותית מתמחור ספר הזמנות ספוט. מנגנון האורקל הנכון קובע האם ניתן לתמרן את הפרוטוקול ועד כמה הפירוקים הוגנים. עם ניסיון של 10+ שנים בפיתוח פתרונות DeFi, כולל פיתוח perp DEX, ו-30+ פרויקטים מיושמים, בנינו ארכיטקטורה שמונעת 99% מהתקפות האורקל. הגישה שלנו היא אימות רב-מקורי עם הגנה מקצה לקצה מפני מניפולציות. אנו משלבים את Chainlink Data Streams, Pyth, TWAP על-השרשרת, ו-keepers משלנו לזמן השהיה מינימלי. לדוגמה, שימוש ב-TWAP לפירוקים מפחית התראות שווא פי 10 בהשוואה לאורקל ספוט. המהנדסים שלנו הם מפתחי Solidity מוסמכים עם ניסיון בביקורת ב-Trail of Bits ו-OpenZeppelin. במאמר זה, נפרק אילו בעיות האורקל פותר, כיצד לבחור ספק, וכיצד לאבטח את הפרוטוקול שלכם מפני התקפות.
מחיר סימון לעומת מחיר אינדקס לעומת מחיר אורקל
מחיר אינדקס — מחיר מצטבר מבורסות מרכזיות גדולות (Binance, OKX, Coinbase). מייצג שווי שוק הוגן.
מחיר סימון — מחיר המשמש לחישוב רווח והפסד לא ממומש ופירוקים. ב-perp DEX הוא בדרך כלל שווה למחיר האורקל. הוא לא יכול לסטות משמעותית ממחיר האינדקס (אם הוא סוטה, שער המימון מתכוונן).
מחיר אורקל — חוזה חכם ספציפי שממנו נקרא המחיר.
השלכות של אורקל שגוי: אם מחיר הסימון סוטה מהמחיר ההוגן, אפשריות פירוקים לא הוגנים (פירוק פוזיציה בריאה במהלך קפיצה זמנית) או התקפות מניפולציה על האורקל. תקרית אחת עם אורקל שגוי עלתה לפרוטוקול 2 מיליון דולר. עלות ההתאוששות הממוצעת לאחר התקפה כזו היא 50,000–100,000 דולר.
למה מניפולציית אורקל היא האיום מספר 1 עבור Perp DEX?
רוב הפריצות הגדולות של perp DEX (GMX, Synthetix) קרו דרך מניפולציית אורקל. התקפות Flash Loan מעוותות זמנית את עדכון המחיר, ומאפשרות פתיחה וסגירה של פוזיציה לרווח. זה מוביל לאובדן נזילות הפול. ההגנה מבוססת על אימות רב-מקורי ו-TWAP — שילוב שהופך התקפות ללא כדאיות כלכלית. בפרויקטים שלנו, הגנה כזו מפחיתה את סיכון הפריצה ב-98%.
בחירת אורקל עבור Perpetual DEX
GMX v1: Chainlink + רשת Keeper
GMX v1 משתמש בעדכוני מחיר של Chainlink כעדכון ראשי ובעדכון מחיר מהיר (מ-keepers ייעודיים של GMX) כמשני. בעיה עם המחיר המהיר: ניתן לתקוף את ה-keepers. ל-GMX היה בקרת מרווח: אם המחיר המהיר סוטה מ-Chainlink ביותר מ-X%, נעשה שימוש רק ב-Chainlink.
GMX v2: Chainlink Low-Latency
GMX v2 שילב את Chainlink Data Streams — דוחות מחיר מחוץ לשרשרת עם רעננות של פחות משנייה.
// GMX v2 style oracle verification function
getValidatedPrice(
bytes memory signedReport // от Chainlink Data Streams
) internal returns (uint256 price) {
// Верификация Chainlink signature
(bool isValid, int192 signedPrice) = IChainlinkDataStreamsVerifier(verifier).verify(signedReport);
require(isValid, "Invalid oracle report");
price = uint256(uint192(signedPrice));
require(price > 0, "Invalid price");
// Check against secondary oracle
uint256 secondaryPrice = getSecondaryPrice();
uint256 deviation = abs(price - secondaryPrice) * 10000 / secondaryPrice;
require(deviation < MAX_DEVIATION_BPS, "Oracle price deviation too large");
} dYdX v4: אורקל יליד קוסמוס
dYdX v4 הוא appchain על Cosmos. הוולידטורים עצמם מריצים תוכנת אורקל ומפרסמים מחירים כחלק מהקונצנזוס.
איזה אורקל לבחור לפירוקים?
| פעולה | אורקל מומלץ |
|---|---|
| פתיחה/סגירת פוזיציה | אורקל ספוט (Chainlink/Pyth) |
| חישוב רווח והפסד לא ממומש | מחיר סימון (אורקל) |
| בדיקת פירוק | TWAP (15-30 דקות) |
| חישוב שער מימון | מחיר אינדקס (צירוף CEX) |
השוואת ספקי אורקל
| ספק | רעננות | אמינות | עלות |
|---|---|---|---|
| Chainlink Data Streams | פחות משנייה | גבוהה (ביזור) | בינונית |
| Pyth | ~שנייה אחת | גבוהה (אימות מחזיקי מטבע) | נמוכה |
| Uniswap TWAP | 15-30 דקות | נמוכה (בריכה יחידה) | חינם |
הגנה מפני מניפולציית אורקל
הגנה מבוססת מרווח
כאשר האורקל סוטה משמעותית מהמחיר הקודם, מופעל מפסק חשמלי:
mapping(bytes32 => uint256) public lastOraclePrice;
function updateOraclePrice(bytes32 assetId, uint256 newPrice) internal {
uint256 lastPrice = lastOraclePrice[assetId];
if (lastPrice > 0) {
uint256 deviation = newPrice > lastPrice ? (newPrice - lastPrice) * 10000 / lastPrice : (lastPrice - newPrice) * 10000 / lastPrice;
// Circuit breaker при слишком резком движении
if (deviation > MAX_PRICE_DEVIATION) {
emit PriceDeviationAlert(assetId, lastPrice, newPrice);
// Использовать защищённую цену вместо спайка
newPrice = lastPrice * (10000 + MAX_PRICE_DEVIATION) / 10000;
}
}
lastOraclePrice[assetId] = newPrice;
} אימות רב-מקורי
קריאת מחירים ממספר מקורות (Chainlink + Pyth + TWAP על-השרשרת) ולקיחת החציון:
function getAggregatedPrice(bytes32 asset) public view returns (uint256) {
uint256[] memory prices = new uint256[](3);
prices[0] = getChainlinkPrice(asset);
prices[1] = getPythPrice(asset);
prices[2] = getUniswapTWAP(asset, 30 minutes);
return median(prices);
}אם מחיר אחד סוטה משמעותית, הוא נזרק כחריג.
TWAP לפירוקים
עבור סף הפירוק, השתמשו ב-TWAP של 15-30 דקות, לא במחיר ספוט. קריסת בזק אינה גורמת לפירוקים המוניים. לפי הבדיקות שלנו, TWAP מפחית את מספר הפירוקים השגויים פי 10 בהשוואה לאורקל ספוט. בנוסף, אנו מיישמים מרווח דינמי: אם התנודתיות גבוהה, סף הסטייה גדל ב-20%.
כיצד אנו מאבטחים את ה-Perp DEX שלכם מקצה לקצה
אנו מפתחים מערכת אורקל מאפס או משפרים מערכת קיימת, כולל אורקלים של חוזים חכמים. בעבודתנו, אנו משתמשים ב-Chainlink כאורקל ראשי (Data Feeds או Data Streams), ב-Pyth למחירים חוצי שרשרת, וב-keepers משלנו לנתיב מהיר. אימות פורמלי של חוזים (Mythril, Slither, Echidna) הוא חובה. לפי תיעוד Chainlink, עדכוני נתונים מספקים עדכוני מחיר מבוזרים.
תהליך העבודה
- ניתוח — סקירת מודל ה-perp, קביעת רגישות לזמן השהיה וספי מרווח.
- עיצוב — בחירת ספקים, כתיבת מפרטי חוזה.
- יישום — קוד ב-Solidity 0.8.x, בדיקות ב-Foundry (fuzzing + invariant).
- ביקורת — סקירת אבטחה פנימית, גיוס מבקרים חיצוניים.
- פריסה — פריסה ל-mainnet, הגדרת ניטור (Tenderly, Etherscan API).
מה כלול בעבודה
- תיעוד ארכיטקטורת אורקל
- קוד מקור עם הערות
- מערכת בדיקות (יחידה, אינטגרציה, fuzz)
- דוח אבטחה עם המלצות
- חודש תמיכה לאחר ההשקה
כיצד להעריך את מורכבות הפרויקט שלכם?
לוחות הזמנים לפיתוח נעים בין 4 ל-8 שבועות בהתאם למספר הנכסים ומקורות האורקל. צרו קשר להערכת פרויקט חינמית. קבלו ייעוץ על ארכיטקטורת אורקל — נספר לכם כיצד לאבטח את הפרוטוקול שלכם בזמן מינימלי. יש לנו 10+ פרויקטי DeFi מוצלחים מאחורינו.







