לוחות מחוונים אנליטיים מותאמים אישית ב-Dune: פיתוח מקצה לקצה
השקת פרוטוקול DeFi ואתה רוצה לראות את התמונה האמיתית: כמה משתמשים קוראים לחוזה החכם שלך מדי יום, נפח נזילות בבריכות, שינויים ב-TVL. משיכת נתונים ידנית מ-Etherscan או The Graph מבזבזת שעות של לחיצות, ולוחות מחוונים מוכנים מראש מפספסים את הטוקנומיקה שלך ואת האירועים הספציפיים. אנחנו פותרים את זה: אנחנו בונים לוחות מחוונים מותאמים אישית על Dune Analytics שמספקים תשובות בשניות, לא בשעות. החיסכון באנליטיקה מגיע ל-$3,000 בחודש, עם ROI מתחת ל-3 חודשים.
הניסיון שלנו — 10+ שנים בפיתוח בלוקצ'יין, מעל 50 לוחות מחוונים מוצלחים לפרוטוקולי DeFi, אוספי NFT ופרויקטי תשתית. אנחנו לא רק כותבים SQL: אנחנו בונים מוצרים שחוסכים במשאבי הצוות שלך. המורכבות של Dune היא לא הכלי — היא הבנת מבנה נתוני הבלוקצ'יין במודל רלציוני. JOIN אחד שגוי והשאילתה שלך רצה 5 דקות במקום שניות. אנחנו יודעים איך להימנע מזה.
מבנה נתונים ב-Dune
Dune עובד עם שתי רמות טבלאות. שימוש בטבלאות מפוענחות מקצר את זמן השאילתה ב-70%.
| סוג טבלה | דוגמאות | מטרה |
|---|---|---|
| גולמי | ethereum.transactions, ethereum.logs |
נתוני on-chain גולמיים, דורש פענוח של data ו-topics |
| מפוענח | uniswap_v3_ethereum.Pair_evt_Swap |
אירועי פרוטוקול עם עמודות מנורמלות (מהיר יותר, אין צורך בפענוח) |
בנוסף, קיימות הפשטות נתונים: dex.trades, prices.usd מ-Spellbook. הן מאגדות נתונים על פני מספר פרוטוקולים, ומבטלות את הצורך בכתיבת JOINs על כל פרויקט.
טעויות נפוצות ואופטימיזציה
| טעות | תיקון | רווח |
|---|---|---|
| סריקה מלאה ללא מסנן תאריך | הוסף WHERE block_time >= now() - interval '90 days' |
האצה פי 10–50 |
JOIN על erc20_ethereum.evt_Transfer ללא טווח |
הגבל evt_block_time |
הפחתת עומס ב-95% |
למה אופטימיזציה של שאילתות SQL חשובה
סריקה מלאה ללא מסנן תאריך היא הגורם מספר אחת לזמני timeout. תמיד סנן block_time:
-- ПЛОХО: полный скан всей истории SELECT date_trunc('day', block_time), count(*) FROM ethereum.transactions WHERE "to" = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -- ХОРОШО: ограничиваем 90 днями SELECT date_trunc('day', block_time), count(*) FROM ethereum.transactions WHERE "to" = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 AND block_time >= now() - interval '90 days' JOINs מוגזמים על -- ПЛОХО: полный скан всей истории SELECT date_trunc('day', block_time), count(*) FROM ethereum.transactions WHERE "to" = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -- ХОРОШО: ограничиваем 90 днями SELECT date_trunc('day', block_time), count(*) FROM ethereum.transactions WHERE "to" = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 AND block_time >= now() - interval '90 days' — הטבלה מכילה מיליארדי שורות. הוסף טווח זמן:
-- ПЛОХО: JOIN без фильтра SELECT t.from, SUM(t.value) FROM erc20_ethereum.evt_Transfer t JOIN my_users u ON t."from" = u.address WHERE t.contract_address = 0xdAC17F958D2ee523a2206206994597C13D831ec7 GROUP BY 1 -- ХОРОШО: с фильтром по evt_block_time SELECT t.from, SUM(t.value / 1e6) as usdt_sent FROM erc20_ethereum.evt_Transfer t JOIN my_users u ON t."from" = u.address WHERE t.contract_address = 0xdAC17F958D2ee523a2206206994597C13D831ec7 AND t.evt_block_time >= now() - interval '30 days' GROUP BY 1 ORDER BY 2 DESC תבנית Snapshot + Delta
עבור לוחות מחוונים עם עומק היסטורי מעל 30 יום, אנחנו משתמשים בסכימת שתי שכבות:
- Snapshot: שאילתה כבדה רצה פעם ביום (מאוחסנת במטמון).
- Delta: שאילתה קלה עבור 24 השעות האחרונות.
- מיזוג באמצעות
erc20_ethereum.evt_Transfer.
זה נותן למשתמש נתונים עדכניים ללא זמני המתנה של 5 דקות. חיסכון בזמן חישוב — עד 90%.
WITH historical AS ( SELECT * FROM snapshot_table -- пересчитывается раз в день ), delta AS ( SELECT * FROM live_table WHERE evt_block_time >= now() - interval '1 day' ) SELECT * FROM historical UNION ALL SELECT * FROM delta מה זה Spellbook ולמה להשתמש בו?
Spellbook (Dune V2) הוא פרויקט dbt עם מודלים מוכנים: -- ПЛОХО: JOIN без фильтра SELECT t.from, SUM(t.value) FROM erc20_ethereum.evt_Transfer t JOIN my_users u ON t."from" = u.address WHERE t.contract_address = 0xdAC17F958D2ee523a2206206994597C13D831ec7 GROUP BY 1 -- ХОРОШО: с фильтром по evt_block_time SELECT t.from, SUM(t.value / 1e6) as usdt_sent FROM erc20_ethereum.evt_Transfer t JOIN my_users u ON t."from" = u.address WHERE t.contract_address = 0xdAC17F958D2ee523a2206206994597C13D831ec7 AND t.evt_block_time >= now() - interval '30 days' GROUP BY 1 ORDER BY 2 DESC (מחירי טוקנים), UNION ALL (כל החלפות DEX), WITH historical AS ( SELECT * FROM snapshot_table -- пересчитывается раз в день ), delta AS ( SELECT * FROM live_table WHERE evt_block_time >= now() - interval '1 day' ) SELECT * FROM historical UNION ALL SELECT * FROM delta (סמלים ועשרוניות). אין צורך לבצע JOIN לפיידי מחיר בכל פעם — השתמש בטבלאות מובנות מראש. אנחנו משלבים את Spellbook בכל לוח מחוונים כדי להאיץ את הפיתוח פי 2. תיעוד Spellbook הרשמי מכיל את הרשימה המלאה של המודלים.
דוגמה: TVL של פרוטוקול
WITH deposits AS ( SELECT date_trunc('day', evt_block_time) AS day, token, SUM(amount / POWER(10, decimals)) AS amount FROM protocol_ethereum.Pool_evt_Deposit JOIN tokens.erc20 ON token = contract_address AND blockchain = 'ethereum' WHERE evt_block_time >= now() - interval '180 days' GROUP BY 1, 2 ), withdrawals AS ( SELECT date_trunc('day', evt_block_time) AS day, token, -SUM(amount / POWER(10, decimals)) AS amount FROM protocol_ethereum.Pool_evt_Withdraw JOIN tokens.erc20 ON token = contract_address AND blockchain = 'ethereum' WHERE evt_block_time >= now() - interval '180 days' GROUP BY 1, 2 ), daily_flows AS ( SELECT day, token, SUM(amount) AS net_flow FROM (SELECT * FROM deposits UNION ALL SELECT * FROM withdrawals) GROUP BY 1, 2 ) SELECT day, token, SUM(net_flow) OVER (PARTITION BY token ORDER BY day) AS cumulative_tvl FROM daily_flows ORDER BY day DESC, token ארכיטקטורת לוח מחוונים
לוח מחוונים טוב הוא מוצר. היררכיית מדדים: KPI ברמה העליונה (TVL, נפח, משתמשים) → פירוט (לפי רשת, טוקן) → פרטים (כתובות מובילות). השתמש בפרמטרים כמו prices.usd לאינטראקטיביות. לדוגמה, לוח מחוונים ל-AMM מאפשר לך לבחור בריכה, טווח זמן, ולראות מיד נפח, עמלות, הפסד בלתי קבוע.
איך אנחנו בונים לוח מחוונים: תהליך שלב אחר שלב
- ניתוח הפרוטוקול והגדרת מדדי מפתח. חקור את ABI של החוזה, זהה אירועי הפקדה, משיכה, החלפה. מפה שדות.
- כתיבת שאילתות SQL עם אופטימיזציית זמן (הפחתת חביון ב-70%). השתמש בטבלאות מפוענחות וב-Spellbook.
- הגדרת ויזואליזציות: בחירת סוגי תרשימים (קו, עמודות, שטח), פרמטריזציה (מסנני רשת, טווחי תאריכים), מטמון.
- תיעוד לוגיקת החישוב עבור הצוות שלך — תאר כל מדד, נוסחה, קישורי חוזה.
- פרסום פומבי עם תמיכה. לאחר השחרור, אנו מנטרים שגיאות ומתאימים שאילתות על פורקס.
תהליך עבודה
- אנליטיקה: בחינת חוזה חכם, זיהוי אירועי מפתח.
- עיצוב: יצירת אב טיפוס של לוח מחוונים ב-Dune.
- יישום: כתיבת שאילתות SQL אופטימליות, הגדרת פרמטרים.
- בדיקות: בדיקת טווחי זמן, נכונות אגרגציה.
- פריסה: פרסום לוח המחוונים, הפעלת מטמון.
לוחות זמנים — בין 3 ל-10 ימים תלוי במורכבות. צור קשר לפתרון מותאם אישית לפרוטוקול שלך. הזמן פיתוח turnkey: אנו מבטיחים שכל השאילתות רצות מתחת ל-30 שניות, עדכוני מטמון במרווחים מוגדרים, ולוח המחוונים מתפרסם פומבית. קבל ייעוץ היום.







