"רק לשאול את ה-API של CoinGecko פעם בדקה" — הגישה הזו עובדת בדיוק עד למגבלת הקצב הראשונה. נתקלנו בפרויקטים שהיו צריכים נתונים מהר יותר מכל 60 שניות, עם חביון מינימלי. מערכת ניטור קריפטו היא צינור של חמש שכבות: מקור נתונים → נורמליזציה → אחסון → מסירה ללקוחות → התראות. כל שכבה דורשת ארכיטקטורה משלה: WebSocket לחביון נמוך, PostgreSQL לאחסון, Redis לקאש, ותור הודעות לעיבוד אסינכרוני. במהלך 5 השנים האחרונות, יישמנו יותר מ-20 מערכות כאלה עבור פלטפורמות מסחר ופרויקטי DeFi. אנו מבטיחים זמינות של 99.9% והפחתה של עד 40% בעלויות התשתית. לדוגמה: לקוח היה צריך מחירים בזמן אמת משלושה CEXים ושני DEXים בו-זמנית — המערכת מעבדת 200,000 טיקים בשנייה עם חביון מתחת ל-100 אלפיות השנייה. עם 5 שנות נוכחות בשוק ו-20+ פרויקטים שהושלמו, אנו מביאים מומחיות עמוקה.
איך לבחור מקורות נתונים – בניית מערכת בזמן אמת
CEX דרך WebSocket (החביון הנמוך ביותר)
למחירי קריפטו בזמן אמת, התחבר ישירות לסטרימינג של WebSocket של הבורסה. ללא אגרגציה, חביון מינימלי:
const ws = new WebSocket('wss://stream.binance.com:9443/stream?streams=btcusdt@ticker/ethusdt@ticker') ws.on('message', (data) => { const { stream, data: tick } = JSON.parse(data) const price = parseFloat(tick.c) const volume24h = parseFloat(tick.v) normalizeAndStore({ source: 'binance', symbol: tick.s, price, volume24h }) }) סטרימינג דומה של מחירי קריפטו דרך WebSocket קיים עבור Coinbase, OKX, Bybit. עבור זוגות נזילים אנו משתמשים בלפחות שלושה מקורות ומחיר חציוני כדי להגן מפני חריגים.
מחירי DEX On-Chain
עבור אפליקציות DeFi, מחירים לעיתים קרובות צריכים להיות על השרשרת. שתי גישות:
TWAP של Uniswap V3 – עמיד בפני התקפות flash loan, דורש מחיר על פני N הבלוקים האחרונים. אינטגרציית אורקל של Chainlink היא הסטנדרט לחוזים חכמים בייצור, תוך שימוש ברשת אורקל מבוזרת (תיעוד Chainlink Data Feeds):
AggregatorV3Interface priceFeed = AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419); (, int256 price, , uint256 updatedAt,) = priceFeed.latestRoundData(); require(block.timestamp - updatedAt < 3600, "Price feed stale"); אגרגטורים (CoinGecko/CoinMarketCap)
לנתונים היסטוריים וטוקנים פחות נזילים. מגבלות קצב: התוכנית החינמית של CoinGecko – 30 בקשות לדקה. אנו מבצעים קאש אגרסיבי.
| מקור | חביון | אמינות | מקרה שימוש |
|---|---|---|---|
| CEX WebSocket (Binance) | <100 אלפיות השנייה | גבוהה | מסחר בזמן אמת |
| DEX TWAP (Uniswap V3) | ~12 שניות (בלוק) | בינונית | אפליקציות DeFi |
| Chainlink Price Feeds | ~1 דקה | גבוהה מאוד | חוזים חכמים בייצור |
| CoinGecko API | 1–60 שניות | בינונית | נתונים היסטוריים |
למה TimescaleDB?
טיקי מחיר הם מקרה שימוש טיפוסי לסדרות זמן. PostgreSQL עם הרחבת TimescaleDB היא בחירה מוצקה אם אתה כבר משתמש ב-PG. TimescaleDB לאחסון טיקים מאפשר חלוקה אוטומטית ודחיסה, חוסך עד 60% משטח הדיסק:
CREATE TABLE price_ticks ( time TIMESTAMPTZ NOT NULL, symbol VARCHAR(20) NOT NULL, source VARCHAR(20) NOT NULL, price NUMERIC(20, 8) NOT NULL, volume_24h NUMERIC(30, 2) ); SELECT create_hypertable('price_ticks', 'time'); -- Автоматическая агрегация в OHLCV свечи SELECT time_bucket('1 minute', time) AS bucket, symbol, first(price, time) AS open, max(price) AS high, min(price) AS low, last(price, time) AS close, sum(volume_24h) AS volume FROM price_ticks WHERE time > NOW() - INTERVAL '1 hour' GROUP BY bucket, symbol ORDER BY bucket DESC; TimescaleDB מחלק אוטומטית נתונים לפי זמן. מדיניות שמירה – מחיקה אוטומטית של טיקים ישנים מ-30 יום, שמירת אגרגטים בלבד להיסטוריה. אנו משתמשים בדחיסה כדי לחסוך עד 60% משטח הדיסק.
איך התראות עובדות
התראת שינוי מחיר
המחיר השתנה ב-X% במשך Y דקות:
class PriceAlertService { constructor(redis) { this.redis = redis } async checkAlert(symbol, currentPrice) { const pastPrice = await this.redis.get(`price:${symbol}:1m_ago`) if (pastPrice) { const changePercent = Math.abs((currentPrice - pastPrice) / pastPrice * 100) if (changePercent >= ALERT_THRESHOLD_PERCENT) { await this.triggerAlert({ symbol, currentPrice, changePercent }) } } await this.redis.setex(`price:${symbol}:1m_ago`, 60, currentPrice.toString()) } } התראת נתונים מיושנים
אם מקור מפסיק להתעדכן, אנו בודקים את חותמת הזמן של הטיק האחרון ושולחים הודעה ל-Telegram/Slack/דוא"ל. Webhooks הניתנים להגדרה מאפשרים אינטגרציה עם כל מערכת.
| מדד | סף | פעולה |
|---|---|---|
| עיכוב עדכון | >5 שניות | חיבור מחדש ל-WebSocket |
| אין נתונים מהמקור | >30 שניות | מעבר למקור גיבוי |
| שינוי מחיר תוך דקה | >1% | התראת שינוי מחיר |
TWAP להגנה מפני מניפולציות
TWAP (ממוצע מחיר משוקלל בזמן) – מחיר ממוצע על פני תקופה מוגדרת. ב-Uniswap V3 הוא מחושב על פני הבלוק האחרון ועמיד בפני מניפולציות קצרות טווח כמו התקפות flash loan. עבור אפליקציות DeFi, זהו תקן האבטחה.
תהליך
- ניתוח – הגדרת דרישות: מקורות, חביון, נפח נתונים, סוגי התראות.
- עיצוב – ארכיטקטורת צינור, בחירת מסד נתונים, סכמת נתונים, פרוטוקול מסירה.
- יישום – חיבור מקורות, כתיבת קולקטור, נורמליזציה, התראות ו-API.
- בדיקות – בדיקות עומס (עד 100,000 טיקים/שנייה), אימות מעבר לגיבוי, בדיקות יחידה.
- פריסה – פריסה על תשתית הלקוח, הגדרת ניטור.
מה כלול
- תיעוד ארכיטקטוני עם צינור וסכמת נתונים.
- גישה לריפוזיטורי עם קוד המקור של הקולקטור, ההתראות וה-API.
- אינטגרציה עם התשתית שלך (CI/CD, ניטור, לוגים).
- מפגש הדרכה לצוות שלך (עד שעתיים).
- תמיכה ל-30 יום לאחר הפריסה.
לוחות זמנים ועלות
לוחות הזמנים נעים בין 2 ל-8 שבועות בהתאם למורכבות. תקציב הפרויקט הממוצע הוא בין $5,000 ל-$20,000. אנו מבטיחים הפחתה של עד 40% בעלויות התשתית – לקוחות בדרך כלל חוסכים $2,000-$8,000 בחודש. נבחן את הפרויקט שלך בחינם.
טעויות נפוצות ואיך להימנע מהן
| טעות | פתרון |
|---|---|
| חוסר בחיבור מחדש עם השהיה אקספוננציאלית ל-WebSocket | יישום חיבור מחדש אוטומטי עם עיכוב מצטבר |
| אחסון כל הטיקים ללא אגרגציה | שימוש ב-TimescaleDB עם דחיסה ומדיניות שמירה |
| שימוש במקור יחיד | חיבור לפחות שני מקורות עצמאיים עם גיבוי |
| בדיקת טריות הנתונים רק בצד הלקוח | הגדרת התראות נתונים מיושנים בצד השרת |
| התעלמות ממגבלות קצב של אגרגטורים | קאש של תגובות והגבלת תדירות בקשות |
קבל ייעוץ ממהנדס עם ניסיון של למעלה מ-5 שנים בבניית מערכות ניטור קריפטו. צור קשר כדי לבחון את הפרויקט שלך.







