Настройка доступа к Ethereum через Infura API

Настройка доступа к Ethereum через Infura API Вы разворачиваете DeFi-дашборд, запускаете NFT-маркетплейс или подключаете кошелёк к блокчейну. Первое, что останавливает — собственная нода. Geth или Besu синхронизируются сутками, потребляют сотни гигабайт диска и требуют круглосуточного мониторинга

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1310
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1270
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1012

Настройка доступа к 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, что позволяет дольше тестировать без затрат.

Регистрация и первый запрос

  1. Перейдите на Infura.io и создайте аккаунт.
  2. В дашборде нажмите Create New Project и выберите сеть (Ethereum, Polygon и т.д.).
  3. Скопируйте Project ID — это ваш API-ключ. Endpoint формируется автоматически:
    • HTTP: https://mainnet.infura.io/v3/{PROJECT_ID}
    • WebSocket: wss://mainnet.infura.io/ws/v3/{PROJECT_ID}
  4. Подключите ключ в коде через любимую библиотеку. Пример с 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 под ваш проект: от простого доступа до мультичейн-инфраструктуры. Получите консультацию по вашей задаче — мы поможем выбрать оптимальный план и настроить безопасность.

Ethereum JSON-RPC спецификация