גישה יעילה לאת'ריום באמצעות Infura API
אתם פורסים לוח מחוונים ל-DeFi, משיקים שוק NFT, או מחברים ארנק לבלוקצ'יין. המכשול הראשון הוא הרצת צומת משלכם. Geth או Besu מסנכרנים במשך ימים, צורכים מאות ג'יגה-בייט של דיסק, ודורשים ניטור 24/7. Infura — ספק RPC מנוהל מ-ConsenSys — פותר זאת תוך דקות. אתם מקבלים גישה לאת'ריום, Polygon, Arbitrum, Optimism, ועוד תריסר רשתות עם מפתח API אחד. האינטגרציה אורכת שעה, אבל גילינו את הניואנסים עם מגבלות, אבטחה, וסובלנות לתקלות ביותר מ-50 פרויקטים המשתמשים ב-Infura.
לפי הנתונים שלנו, מעבר מצומת מתארח עצמאית ל-Infura מפחית עלויות תשתית ב-30–50%. למעלה מ-80% מהלקוחות חוסכים סכום משמעותי מדי חודש על אירוח, וזמן הפריסה מתקצר משבועות ליום אחד. Infura עדיפה על Alchemy לסטארטאפים: המגבלה החינמית של 100,000 בקשות ליום לעומת 50,000 מאפשרת בדיקות ארוכות יותר ללא עלויות.
רישום ובקשה ראשונה
- עברו אל Infura.io וצרו חשבון.
- בלוח הבקרה, לחצו על
Create New Projectובחרו את הרשת (Ethereum, Polygon וכו'). - העתיקו את Project ID — זהו מפתח ה-API שלכם. נקודת הקצה נוצרת אוטומטית:
- HTTP:
https://mainnet.infura.io/v3/{PROJECT_ID} - WebSocket:
wss://mainnet.infura.io/ws/v3/{PROJECT_ID}
- HTTP:
- חברו את המפתח בקוד באמצעות הספרייה המועדפת עליכם. דוגמה עם viem:
import { createPublicClient, http } from 'viem'; import { mainnet } from 'viem/chains'; const client = createPublicClient({ chain: mainnet, transport: http(`https://mainnet.infura.io/v3/${process.env.INFURA_KEY}`), }); const blockNumber = await client.getBlockNumber(); בוצע. אתם עובדים עם את'ריום תוך 5 דקות.
מה זה Infura וכיצד הוא שונה מספקים אחרים?
Infura הוא אחד מספקי ה-RPC הראשונים (מעל 8 שנים בשוק). מתחרים: Alchemy, QuickNode, Chainstack, Ankr. תכונות מפתח:
- תמיכה ב-WebSocket דרך נקודת קצה WSS נפרדת — למנויים לאירועים
- ממשק Ethereum Gas API מובנה עם נתונים היסטוריים
- שער IPFS על אותו מפתח — נוח לאחסון מטא-דאטה של NFT
- נתוני ארכיון: גישה למצבים היסטוריים דרך
import { createPublicClient, http } from 'viem'; import { mainnet } from 'viem/chains'; const client = createPublicClient({ chain: mainnet, transport: http(`https://mainnet.infura.io/v3/${process.env.INFURA_KEY}`), }); const blockNumber = await client.getBlockNumber();בכל בלוק (בתוכניות בתשלום)
עבור רוב הפרויקטים, Infura ו-Alchemy ניתנים להחלפה — שניהם מיישמים JSON-RPC סטנדרטי. מעבר פירושו שינוי ה-URL בקונפיגורציה. במבחני הביצועים שלנו, Infura מתמודד עם עד 100,000 בקשות ליום בתוכנית החינמית, שזה פי שניים מהמגבלה הדומה של Alchemy (50,000). זה הופך את Infura לחסכוני יותר עבור סטארטאפים.
כיצד לעבוד עם מגבלות בקשות?
תוכנית חינמית: 100,000 בקשות ליום. Core: 3 מיליון. יש גם מגבלות RPS. טיפים מעשיים: איחוד בקשות. JSON-RPC תומך באצווה — מספר שיטות בבקשת HTTP אחת:
const [block, balance, nonce] = await client.multicall({ contracts: [...] }); // Или через raw batch const batch = [ { jsonrpc: '2.0', method: 'eth_blockNumber', params: [], id: 1 }, { jsonrpc: '2.0', method: 'eth_getBalance', params: ['0x...', 'latest'], id: 2 }, ]; const response = await fetch(rpcUrl, { method: 'POST', body: JSON.stringify(batch) }); פרטי אצווה: אילו בקשות לשלב
איחוד יעיל לבקשות עצמאיות. לדוגמה, קבלת יתרות עבור 10 כתובות בבקשה אחת במקום 10. אבל אל תערבבו בקשות שבהן התוצאה של אחת תלויה באחרת (למשל, getTransactionByHash ו-getTransactionReceipt) — עדיף לא לשלב אותן, מכיוון שהאצווה עלולה להחזיר שגיאה עבור אחת הבקשות.
שמירת נתונים סטטיים במטמון. תוצאות של eth_getStorageAt, const [block, balance, nonce] = await client.multicall({ contracts: [...] }); // Или через raw batch const batch = [ { jsonrpc: '2.0', method: 'eth_blockNumber', params: [], id: 1 }, { jsonrpc: '2.0', method: 'eth_getBalance', params: ['0x...', 'latest'], id: 2 }, ]; const response = await fetch(rpcUrl, { method: 'POST', body: JSON.stringify(batch) }); עבור עסקאות מאושרות אינן משתנות. שמרו במטמון על Redis עם TTL אינסופי או עד להפעלה מחדש. זה מפחית את מספר הבקשות ב-30–50%.
גיבוי לספק חלופי. Infura לפעמים מתדרדר. אנו משתמשים בתבנית הגיבוי:
import { fallback, http } from 'viem'; const transport = fallback([ http(`https://mainnet.infura.io/v3/${INFURA_KEY}`), http(`https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY}`), ]); כיצד להגדיר מנויי WebSocket?
לאירועים בזמן אמת, אנו משתמשים ב-WebSocket:
import { createPublicClient, webSocket } from 'viem'; const wsClient = createPublicClient({ chain: mainnet, transport: webSocket(`wss://mainnet.infura.io/ws/v3/${INFURA_KEY}`), }); // Подписка на новые блоки const unwatch = wsClient.watchBlockNumber({ onBlockNumber: (bn) => console.log(bn) }); // Подписка на события контракта const unwatch = wsClient.watchContractEvent({ address: '0x...', abi: erc20Abi, eventName: 'Transfer', onLogs: (logs) => processTransfers(logs), }); חשוב: חיבורי WebSocket צריכים להיות משוחזרים בעת ניתוקים. eth_getCode מטפל בכך אוטומטית, בעוד eth_getTransactionByHash דורש לוגיקת חיבור מחדש ידנית.
מדוע גיבוי קריטי לסביבת ייצור?
אפילו שירותים אמינים לפעמים נכשלים. נתקלנו במצב שבו Infura השבית נתוני ארכיון עבור חוזה ישן, ולוח הניתוחים שלנו הפסיק לקבל יתרות היסטוריות. ספק גיבוי הציל אותנו. גיבוי הוא קריטי לייצור: פרוקסי HTTP יחיד בקוד מספק סובלנות לתקלות ללא עלות נוספת.
אבטחת מפתח API
מפתח ה-API של Infura אינו סוד במובן המלא, אבל שימוש לרעה ימצה את המגבלות שלכם. ההמלצות שלנו:
- אל תעלו ל-git —
import { fallback, http } from 'viem'; const transport = fallback([ http(`https://mainnet.infura.io/v3/${INFURA_KEY}`), http(`https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_KEY}`), ]);+import { createPublicClient, webSocket } from 'viem'; const wsClient = createPublicClient({ chain: mainnet, transport: webSocket(`wss://mainnet.infura.io/ws/v3/${INFURA_KEY}`), }); // Подписка на новые блоки const unwatch = wsClient.watchBlockNumber({ onBlockNumber: (bn) => console.log(bn) }); // Подписка на события контракта const unwatch = wsClient.watchContractEvent({ address: '0x...', abi: erc20Abi, eventName: 'Transfer', onLogs: (logs) => processTransfers(logs), }); - הגדירו רשימת היתרים לפי מקור בלוח הבקרה של Infura עבור צד-לקוח
- הגדירו רשימת היתרים לפי כתובת חוזה אם אתם עובדים רק עם חוזים ספציפיים
- מפתחות נפרדים לפיתוח/סטייג'ינג/ייצור
עבור צד-לקוח: המפתח גלוי בדפדפן. הפתרון הוא לקבל סיכון זה עם הגבלות רשימת היתרים או לנתב בקשות דרך השרת האחורי שלכם.
בחירת תוכנית Infura
| תכונה | חינמי | Core | Growth |
|---|---|---|---|
| בקשות ליום | 100,000 | 3 מיליון | >10 מיליון |
| נתוני ארכיון | מוגבל | מלא | מלא |
| WebSocket | כן | כן | כן |
| IPFS | כן | כן | כן |
| RPS | נמוך | בינוני | גבוה |
עבור ייצור עם עומסים של מעל מיליון בקשות ליום, אנו ממליצים על תוכניות Core או Growth. אם הפרויקט שלכם הוא סטארטאפ עם תנועה נמוכה, התוכנית החינמית תספיק לזמן רב לאחר אופטימיזציה עם שמירה במטמון ואיחוד.
שלבי הגדרה אופייניים
| שלב | משך | מה אנו עושים |
|---|---|---|
| ניתוח | שעה | הערכת הארכיטקטורה הנוכחית |
| רישום | 30 דקות | יצירת פרויקט ומפתחות |
| אינטגרציה | 2–4 שעות | הגדרת קוד וגיבוי |
| בדיקות | שעה | בדיקת עומס |
הניסיון שלנו באינטגרציה
הגדרנו את Infura עבור יותר מ-15 פרויקטים: מלוחות מחוונים ל-DeFi ועד שווקי NFT. בפרויקט אחד, אופטימיזציה של מגבלות קצב באמצעות איחוד ושמירה במטמון הפחיתה את מספר הבקשות ב-40% ואפשרה לנו להישאר בתוכנית החינמית למשך שישה חודשים. אנו מבטיחים הגדרה יציבה עם גיבוי לספק חלופי.
מה העבודה שלנו כוללת
- ניתוח גישת RPC הנוכחית ובחירת הספק האופטימלי
- הגדרת פרויקט Infura: נקודות קצה, מפתחות, רשימות היתרים
- אינטגרציית קוד (viem, ethers.js, או ספרייה אחרת)
- הגדרת שמירה במטמון, איחוד, גיבוי
- הגדרת מנויי WebSocket עם חיבור מחדש
- תיעוד והמלצות ניטור
צרו קשר לייעוץ. הזמינו אינטגרציה, ואנו נגדיר את Infura עבור הפרויקט שלכם: מגישה פשוטה ועד תשתית רב-רשתית. קבלו ייעוץ על המשימה שלכם — נעזור לבחור את התוכנית האופטימלית ולהגדיר אבטחה.







