TVL הוא מדד תפעולי של פרוטוקול DeFi, לא מדד שיווקי. נתקלנו במשימות ניטור לפרוטוקולים עם TVL שנע בין $1M ל-$500M. ירידה פתאומית של 30% בשעה—או פריצה או משיכת שטיח של LP גדול. זינוק של 500% ביום ללא עלייה תואמת בעסקאות—מניפולציה חשודה לרישום ב-DeFiLlama. שני התרחישים דורשים מערכת שרואה שינויים בזמן אמת ויכולה לפרש אותם. עם ניסיון של 10+ שנים ב-DeFi ו-50+ פרויקטים מיושמים, המומחיות שלנו מבטיחה דיוק ואמינות. בקשו ייעוץ כדי לדון בארכיטקטורת הניטור שלכם.
כיצד לחשב TVL נכון
הבעיה של חשבונאות רב-מטבעית
הגישה הנאיבית: סכום balanceOf של כל הטוקנים בחוזי הפרוטוקול בדולרים במחירים נוכחיים. זה עובד עד שנתקלים בתרחישים הבאים:
- הפרוטוקול מקבל טוקני LP של Uniswap V2 כבטוחה.
balanceOf(LP_token)הוא מספר טוקני ה-LP, לא דולרים. צריך לחשב את הנכסים הבסיסיים דרךgetReserves()של הפול. - טוקנים סינתטיים (sUSD, stETH): המחיר שלהם ≠ מחיר הנכס הבסיסי במהלך דה-פיג. יש צורך ב-feed מחירים נפרד, שלא תמיד זמין.
- פוזיציות נזילות מרוכזות (Uniswap V3 NFT): הערך תלוי במחיר הנוכחי ובטווח הפוזיציה—יש צורך במתמטיקת tick/sqrtPrice מחוץ לרשת.
ארכיטקטורה נכונה: כל סוג נכס מקבל אדפטר נפרד עם הלוגיקה resolveToUSD(address asset, uint256 amount) → uint256. זה הדפוס שבו משתמשת DeFiLlama באדפטרים שלהם.
Chainlink לעומת מחירי AMM
Chainlink Data Feeds הם תקן הזהב לנכסים מרכזיים (ETH, BTC, USDC, ERC-20s מרכזיים). Heartbeat: שעה אחת לסטייבלקוינס, שעה אחת לנכסים גדולים. הבעיה: אין feed של Chainlink לטוקנים עם זנב ארוך.
גיבוי: Uniswap V3 TWAP דרך IUniswapV3Pool.observe() עם periodSecond = 1800 (30 דקות). TWAP מגן מפני מניפולציה של הלוואות פלאש, אבל בפולים עם נזילות נמוכה זה לא מדויק.
חשוב: feeds של Chainlink יכולים להחזיר נתונים מיושנים. תמיד בדקו את answeredInRound >= roundId ו-updatedAt > block.timestamp - staleness_threshold.
למה חישוב מחוץ לרשת יעיל יותר מאשר על הרשת?
חישוב TVL כולו על הרשת דרך חוזה חכם getTVL() מושך לשקיפות, אבל:
- יקר בגז לחישובים מורכבים
- מוגבל על ידי גודל מחסנית הקריאות
- טוקני LP מ-Uniswap דורשים קריאות חיצוניות, מה שמגדיל את הגז באופן אקספוננציאלי
גישה טובה יותר: שירות מחוץ לרשת עם גישה לצומת ארכיון. אלגוריתם:
- קבלת יתרות דרך
eth_callבקבוצות (Multicall3 ליעילות) - בקשת מחירים מ-Chainlink + API של DeFiLlama + CoinGecko Pro
- חישוב TVL עם נורמליזציה של עשרוניות
- כתיבת תמונת מצב למסד נתונים עם מספר בלוק וחותמת זמן
- שירות דרך API ולוח מחוונים
תדירות: כל בלוק להתראות קריטיות (~12 שניות באת'ריום), כל 5 דקות לנתונים היסטוריים.
שירות מחוץ לרשת מהיר פי 10 מ-Dune Analytics בהשהיה וחוסך עד 60% בעלויות תשתית. לדוגמה, ב-TVL של $100M, החיסכון יכול להגיע עד $5,000 בחודש. צרו קשר להערכה מדויקת.
The Graph Subgraph ל-TVL
The Graph מאפשר להירשם לאירועי חוזה חכם ולאגד נתונים ב-GraphQL. לניטור TVL, ה-subgraph מעבד אירועים:
-
Deposit(address user, address asset, uint256 amount)— עליית TVL -
Withdraw(address user, address asset, uint256 amount)— ירידת TVL -
Liquidation(...)— שינויי בטוחה
הבעיה של ה-subgraph: מחירים לא מאוחסנים על הרשת; יש צורך באינטגרציית אורקל דרך handler מסוג @priceOracle. זה מאט את האינדוקס ומוסיף תלות.
חלופה מהירה יותר לפריסה: Dune Analytics עם שאילתות SQL על נתוני את'ריום מאונדקסים. עובד ללא פיתוח, אבל ההשהיה גבוהה יותר (5-15 דקות).
כיצד להגדיר התראות לשינויי TVL חדים?
דפוס זיהוי חריגות:
currentTVL < previousTVL * (1 - threshold) → CRITICAL alert
currentTVL > previousTVL * (1 + spike_threshold) → WARNING (possible manipulation)סף לקריטי: 10% בבלוק אחד הוא חריגה ברורה. 30% ב-5 דקות הוא אירוע קריטי.
ערוצי התראה: Telegram Bot API להתראות מיידיות, PagerDuty לתורנות, Slack webhooks להתראות צוות. לפרוטוקולי DeFi עם TVL > $1M, ניטור 24/7 הוא חובה.
| שיטה | השהיה | עלות (טווח) | מורכבות |
|---|---|---|---|
| שירות מותאם אישית מחוץ לרשת | ~בלוק (12 שניות) | גבוהה (צומת) | גבוהה |
| The Graph subgraph | 1-5 דקות | בינונית (אירוח) | בינונית |
| Dune Analytics | 5-15 דקות | נמוכה (SQL) | נמוכה |
| API של DeFiLlama | 5-15 דקות | אפס | נמוכה |
חישוב TVL מפורט לטוקני LP
לטוקני LP של Uniswap V2: קבלו רזרבות פול דרך currentTVL < previousTVL * (1 - threshold) → CRITICAL alert currentTVL > previousTVL * (1 + spike_threshold) → WARNING (possible manipulation) , ואז החלק של טוקן ה-LP בפול: getReserves(). ל-Uniswap V3 NFTs: ספרייה מחוץ לרשת שמחשבת את ערך הפוזיציה על בסיס tick, sqrtPrice וטווח.
אינטגרציה עם לוחות מחוונים
Grafana + InfluxDB הוא הסט הטכנולוגי הסטנדרטי לסדרות זמן של TVL. מדדים: (balanceOf(LP) / totalSupply) * (reserve0 * price0 + reserve1 * price1), tvl_total, tvl_by_asset, tvl_by_chain, tvl_change_1h.
אדפטר DeFiLlama: אם פרוטוקול רוצה להופיע ב-DeFiLlama, הוא צריך PR עם אדפטר במאגר שלהם. האדפטר הוא פונקציית JavaScript tvl_change_24h שמשתמשת בממשק tvl(api) שלהם. אנחנו כותבים ומתחזקים את האדפטרים האלה.
לוח מחוונים מותאם אישית: React + recharts או תרשימים מוטמעים של Dune Analytics לעמוד הציבורי של הפרוטוקול. נתונים דרך נקודת קצה API משלכם או ישירות מה-subgraph דרך Apollo Client.
| סוג נכס | אדפטר | מקור מחיר |
|---|---|---|
| ERC-20 | יתרה ישירה | Chainlink |
| טוקני LP של Uniswap V2 | api.add(token, balance) |
Chainlink / TWAP |
| Uniswap V3 NFT | מתמטיקת tick מחוץ לרשת | TWAP |
מה כלול
- מלאי של חוזי פרוטוקול וסוגי נכסים
- פיתוח אדפטרים לכל סוג נכס
- בחירה והתקנה של הסט הטכנולוגי (שירות מחוץ לרשת, subgraph, Dune)
- הגדרת התראות (Telegram, PagerDuty, Slack)
- יצירת לוח מחוונים (Grafana או React מותאם אישית)
- אינטגרציית DeFiLlama (אדפטר + PR)
- תיעוד והדרכת צוות
- תמיכה בהוספת פולים חדשים או מיגרציות
תהליך
אנליטיקה (יום אחד). מלאי של חוזי פרוטוקול, סוגי נכסים מתקבלים, אירועים למעקב, דרישות השהיה להתראות.
פיתוח (1-3 ימים). בחירת סט טכנולוגי לפי דרישות → יישום → הגדרת התראות → פריסת לוח מחוונים.
תמיכה. כאשר מתווספים פולים או נכסים חדשים, עדכון אדפטרים. במקרה של פיצול רשת או מיגרציית חוזה, עדכון כתובות.
הערכות זמן
ניטור בסיסי דרך The Graph + התראות Telegram: 1-2 ימים. מערכת מלאה עם שירות מותאם אישית, לוח מחוונים של Grafana ואינטגרציית DeFiLlama: 3-5 ימים.
התמחור מחושב באופן פרטני על בסיס מספר החוזים, סוגי הנכסים ודרישות ההשהיה. קבלו ייעוץ והערכה ראשונית ביום אחד—צרו קשר.







