Настройка доступа к 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, что позволяет дольше тестировать без затрат.
Регистрация и первый запрос
- Перейдите на 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 запросов в день на бесплатном плане, что в 2 раза превышает аналогичный лимит Alchemy (50 000). Это делает Infura выгоднее для стартапов.
Как работать с лимитами запросов?
Бесплатный план: 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 подписки?
Для 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 на резервного провайдера.
Что входит в нашу работу
- Анализ текущего RPC-доступа и выбор оптимального провайдера
- Настройка Infura проекта: эндпоинты, ключи, allowlist
- Интеграция в код (viem, ethers.js или другой библиотеки)
- Настройка кэширования, batch, fallback
- Конфигурация WebSocket подписок и reconnect
- Документация и рекомендации по мониторингу
Свяжитесь с нами для консультации. Закажите интеграцию, и мы настроим Infura под ваш проект: от простого доступа до мультичейн-инфраструктуры. Получите консультацию по вашей задаче — мы поможем выбрать оптимальный план и настроить безопасность.







