שילוב Bitquery API: נתוני On-Chain וניטור DEX
מפתחים נתקלים לעיתים קרובות בבעיות בעת שילוב Bitquery: מגבלות קצב, הבדלי סכמה בין V1 ל-V2, מורכבות בזמן אמת. עם ניסיון של 5+ שנים בנתוני בלוקצ'יין, פיתחנו גישה שמבטלת את הבעיות הללו. אנו מגדירים את Bitquery לצרכים שלך — מניטור עסקאות DEX ועד מעקב אחרי לווייתנים — ומספקים תיעוד ותמיכה. Bitquery מאנדקס מעל 40 בלוקצ'יינים, כולל Ethereum, BNB Chain, Polygon, Arbitrum, Solana, ומספק גישה לנתונים דרך GraphQL API. עם זאת, כל שילוב דורש הבנה עמוקה של סכמת הנתונים, סוגי השאילתות וגרסאות ספציפיות. אנו עוזרים לך להתמקד בלוגיקה עסקית, לא בניפוי באגים של API.
אילו בעיות פותר שילוב Bitquery API?
Bitquery הוא GraphQL API על גבי נתונים מאנדקסים מ-40+ בלוקצ'יינים. על הנייר, זה נשמע כמו "פשוט חבר וקבל נתונים." בפועל, אתה צריך להבין V1 לעומת V2, מגבלות קצב, פגינציה נכונה ונורמליזציה. אנו מטפלים בזה.
V1 לעומת V2: באיזה לבחור?
| תכונה | V1 (api.bitquery.io) | V2 (streaming.bitquery.io, EAP) |
|---|---|---|
| סוג שאילתה | Query (HTTP) | Query + Subscription (WebSocket) |
| זמן אמת | לא | כן |
| רשתות | 40+ | ~20, מתרחב |
| סטטוס | מצב תחזוקה | פיתוח פעיל |
לפרויקטים חדשים, אנו ממליצים על V2 אם הרשתות הנדרשות נתמכות. אם לא, אנו משתמשים ב-V1 עד למיגרציה. V2 הוא העתיד: זמן אמת, סטרימינג, WebSocket. אם הרשת שלך כבר נתמכת, מעבר ל-V2 מפחית את זמן האחזור של נתונים מדקות לשניות.
# V2: подписка на новые свапы Uniswap V3 в реальном времени subscription { EVM(network: eth) { DEXTrades( where: { Trade: { Dex: { ProtocolName: { is: "uniswap_v3" } } } } ) { Block { Time Number } Trade { Buy { Amount Currency { Symbol Address } } Sell { Amount Currency { Symbol Address } } Dex { PoolAddress } } } } } איך לשאול נתוני DEX?
ניטור מסחר ב-DEX עם OHLCV
query DEXOHLCVQuery($since: ISO8601DateTime!, $poolAddress: String!) { EVM(network: eth, dataset: archive) { DEXTradeByTokens( where: { Trade: { Dex: { SmartContract: { is: $poolAddress } } } Block: { Time: { since: $since } } } orderBy: { ascendingByField: "Block_Time" } limit: { count: 1000 } ) { Block { Time(interval: { in: minutes, count: 5 }) } Trade { open: PriceInUSD(minimum: Block_Time) high: PriceInUSD(maximum: Trade_PriceInUSD) low: PriceInUSD(minimum: Trade_PriceInUSD) close: PriceInUSD(maximum: Block_Time) volume: sum(of: Trade_Side_AmountInUSD) } } } } ניטור לווייתנים של העברות USDT גדולות
query WhaleTransfers($minAmount: String!) { EVM(network: eth) { Transfers( where: { Transfer: { Currency: { SmartContract: { is: "0xdac17f958d2ee523a2206206994597c13d831ec7" } } Amount: { ge: $minAmount } } } limit: { count: 50 } orderBy: { descendingByField: "Block_Time" } ) { Block { Time Number } Transfer { From To Amount Currency { Symbol } } Transaction { Hash } } } } אסטרטגיות מגבלות קצב
Bitquery גובה נקודות עבור שאילתות — כל שאילתה עולה נקודות בהתאם לנפח. האילוצים העיקריים: שאילתות לדקה ומגבלת נקודות חודשית. אנו מיישמים שלוש טכניקות:
- קאשינג. נתונים היסטוריים (עסקאות מימים קודמים) נשמרים במטמון ב-Redis או PostgreSQL למשך 24+ שעות. אנו שואלים את Bitquery רק עבור נתונים טריים.
-
פגינציה עם Cursor. שאילתות עם limit מחזירות עד 1000 רשומות. השתמש ב-offset או cursor עד שכל הנתונים נאספים.
async function fetchAllTrades(poolAddress: string, since: string) { const allTrades = []; let offset = 0; const limit = 1000; while (true) { const data = await bitquery.request(TRADES_QUERY, { poolAddress, since, limit, offset }); const trades = data.EVM.DEXTradeByTokens; allTrades.push(...trades); if (trades.length < limit) break; offset += limit; await delay(200); // уважаем rate limit } return allTrades; }סיכום אסטרטגיות:
אסטרטגיה תיאור יישום קאשינג אחסון נתונים היסטוריים ב-Redis עסקאות מימים קודמים פגינציה עם Cursor דפדוף בתוצאות עם limit/offset נפחים גדולים בכמות Batching שילוב שאילתות לבקשה אחת של GraphQL הפחתת סבבי HTTP למה להשתמש ב-WebSocket לזמן אמת?
V2 תומך במנויים דרך graphql-ws. יישום Node.js סטנדרטי:
import { createClient } from "graphql-ws"; import WebSocket from "ws"; const client = createClient({ url: "wss://streaming.bitquery.io/eap", webSocketImpl: WebSocket, connectionParams: { headers: { "X-API-KEY": process.env.BITQUERY_API_KEY } }, retryAttempts: Infinity, shouldRetry: () => true, }); const unsubscribe = client.subscribe( { query: SWAP_SUBSCRIPTION }, { next: (data) => processSwap(data.data.EVM.DEXTrades), error: (err) => logger.error("subscription error", err), complete: () => logger.info("subscription completed"), } );הערה: WebSocket של V2 דורש מפתח API נפרד (גישת EAP) המונפק לפי בקשה. מנויי WebSocket של V2 מספקים אירועים תוך 200-500 אלפיות שנייה, שזה פי 60 מהיר יותר מסקר V1 (אחזור של 30 שניות). זה קריטי לניטור בוטים של MEV ונזילות.
מגבלות של Bitquery
Bitquery הוא שירות מנוהל, כך שהאינדוקס מפגר ב-1-3 בלוקים, נתונים היסטוריים עשויים לכלול פערים, והתמיכה ברשתות חדשות מפגרת. אם הדרישות שלך כוללות SLA של פחות משנייה, אירועים מותאמים אישית ללא ABI, או עמידה ברגולציה על תשתית משלך, שקול חלופות: Dune Analytics לשאילתות SQL אד-הוק, The Graph לסבגרפים של פרויקטים, Goldsky/Envio לאינדוקס בעל ביצועים גבוהים.
מה כלול בשירות השילוב שלנו
אנו מספקים מחזור מלא ומפתח ביד:
- ניתוח דרישות ובחירת גרסת API (V1/V2).
- עיצוב סכמת שאילתות (DEX, העברות, NFT).
- יישום עם קאשינג, פגינציה וטיפול בשגיאות.
- הגדרת מנוי WebSocket לזמן אמת.
- תיעוד עבור נקודות הקצה שלך ודוגמאות.
- תמיכה בהשקה ותקופת אחריות.
הזמן שילוב Bitquery API וחסוך זמן פיתוח. צור קשר כדי לדון בפרויקט שלך. קבל ייעוץ חינמי והערכת עלות ראשונית.
למה לבחור בנו
5+ שנות ניסיון בפיתוח בלוקצ'יין, 30+ שילובים מוצלחים עם Bitquery ו-APIs אחרים. צוות של מהנדסים בכירים שמבינים את הפנים של Ethereum, Solana ו-L2s. אנחנו לא רק מחברים APIs — אנחנו בונים מערכות אמינות שלא נופלות תחת עומס.
צור קשר להערכת פרויקט. קבל ייעוץ חינמי.







