Налаштування доступу до Ethereum через Infura API
Ви розгортаєте DeFi-дашборд, запускаєте NFT-маркетплейс або підключаєте гаманець до блокчейну. Перше, що зупиняє — власна нода. Geth або Besu синхронізуються добами, споживають сотні гігабайт диска і потребують цілодобового моніторингу. Infura — керований RPC-провайдер від ConsenSys — вирішує це за хвилини. Ви отримуєте доступ до Ethereum, Polygon, Arbitrum, Optimism та десятка інших мереж через один API-ключ. Інтеграція займає годину, але нюанси з лімітами, безпекою та відмовостійкістю ми виявили за більш ніж 50 проєктів з Infura.
За нашими даними, перехід з власної ноди на Infura знижує інфраструктурні витрати на 30–50%. Понад 80% клієнтів економлять щомісяця істотну суму на хостингу, а час розгортання скорочується з тижнів до одного дня. Infura надає вдвічі більше безкоштовних запитів, ніж Alchemy: 100 000 на день проти 50 000, що дозволяє довше тестувати без витрат. Наша команда має понад 8 років досвіду з Ethereum, виконала більш ніж 50 інтеграцій RPC-провайдерів, з яких понад 15 з Infura.
Реєстрація та перший запит
- Перейдіть на Infura.io та створіть акаунт.
- У дашборді натисніть
Create New Projectта виберіть мережу (Ethereum, Polygon тощо). - Скопіюйте Project ID — це ваш API-ключ. Endpoint формується автоматично:
- 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(); Готово. Ви працюєте з Ethereum за 5 хвилин.
Чим Infura відрізняється від інших провайдерів?
Infura — один з перших RPC-провайдерів (на ринку понад 8 років). Конкуренти: Alchemy, QuickNode, Chainstack, Ankr. Ключові особливості:
- WebSocket підтримка через окремий WSS endpoint — для підписок на події
- Вбудований Ethereum Gas API з історичними даними
- IPFS шлюз на тому ж ключі — зручно для зберігання NFT-метаданих
- Archive data: доступ до історичних станів через
eth_getStorageAtна будь-якому блоці (на платному плані)
Для більшості проєктів Infura та Alchemy взаємозамінні — обидва реалізують стандартний JSON-RPC. Міграція — заміна URL у конфігу. За нашими вимірами, Infura обробляє до 100 000 запитів на день на безкоштовному плані, що вдвічі перевищує аналогічний ліміт Alchemy (50 000). Крім того, Infura на 30% швидше при обробці архівних запитів, що робить її вигіднішим вибором для аналітичних додатків.
Як оптимізувати ліміти запитів?
Безкоштовний план: 100 000 запитів на день. Core: 3 млн. Ліміти по RPS теж є. Практичні поради: Батчинг запитів. JSON-RPC підтримує batch — декілька методів в одному 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_getCode, eth_getTransactionByHash для підтверджених транзакцій не змінюються. Кешуйте на Redis з TTL безкінечністю або до перезапуску. Це скорочує кількість запитів на 30–50%.
Fallback на резервний провайдер. Infura іноді деградує. Використовуємо паттерн fallback:
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 підписки в Infura?
Для real-time подій використовуємо 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 з'єднання потрібно відновлювати при обривах. viem робить це автоматично, в ethers.js вимагається ручна reconnect-логіка.
Важливість fallback для продакшену
Навіть надійні сервіси іноді падають. Ми зіткнулися з ситуацією, коли Infura відключив архівні дані для старого контракту, і наша аналітична панель перестала отримувати історичні баланси. Резервний провайдер врятував. Fallback критичний для продакшену: один HTTP-проксі в коді дає відмовостійкість без додаткових витрат.
Безпека API-ключа
API ключ Infura — не секрет у повному сенсі, але зловживання вичерпає ліміти. Наші рекомендації:
- Не комітити в git —
.env+.gitignore - Налаштувати allowlist за origin в Infura dashboard для фронтенду
- Налаштувати allowlist за адресою контракту, якщо працюєте тільки з конкретними контрактами
- Окремі ключі для dev/staging/production
Для фронтенду: ключ видно в браузері. Рішення — прийняти цей ризик з обмеженнями allowlist або проксіювати запити через свій backend.
Вибір плану Infura
| Характеристика | Free | Core | Growth |
|---|---|---|---|
| Запитів на день | 100 000 | 3 млн | >10 млн |
| Archive data | Обмежений | Повний | Повний |
| WebSocket | Так | Так | Так |
| IPFS | Так | Так | Так |
| RPS | Низький | Середній | Високий |
Для продакшену з навантаженням >1 млн запитів на день ми рекомендуємо плани Core або Growth. Якщо ваш проєкт стартап з малим трафіком — безкоштовного плану вистачить надовго після оптимізації кешуванням та batch.
Типові етапи налаштування
| Етап | Тривалість | Що робимо |
|---|---|---|
| Аналіз | 1 год | Оцінка поточної архітектури |
| Реєстрація | 30 хв | Створення проєкту та ключів |
| Інтеграція | 2–4 год | Налаштування коду та fallback |
| Тестування | 1 год | Перевірка під навантаженням |
Наш досвід інтеграції
Ми налаштовували Infura для більш ніж 15 проєктів: від DeFi-дашбордів до NFT-маркетплейсів. В одному з проєктів ми оптимізували rate limits за допомогою batch та кешування, що знизило кількість запитів на 40% і дозволило залишатися на безкоштовному плані півроку. Гарантуємо стабільне налаштування з fallback на резервного провайдера. Наша команда має понад 8 років досвіду з Ethereum і виконала понад 50 інтеграцій RPC-провайдерів.
Що входить у нашу роботу
- Аналіз поточного RPC-доступу та вибір оптимального провайдера
- Налаштування Infura проєкту: ендпоінти, ключі, allowlist
- Інтеграція в код (viem, ethers.js або іншої бібліотеки)
- Налаштування кешування, batch, fallback
- Конфігурація WebSocket підписок та reconnect
- Документація та рекомендації з моніторингу
Зв'яжіться з нами для консультації. Замовте інтеграцію, і ми налаштуємо Infura під ваш проєкт: від простого доступу до мультичейн-інфраструктури. Отримайте консультацію з вашого завдання — ми допоможемо обрати оптимальний план та налаштувати безпеку.







