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

Разворачивание собственной блокчейн-ноды отнимает время и ресурсы, замедляя запуск вашего DeFi-проекта или NFT-платформы. Мы настраиваем доступ к Ethereum и другим сетям через Infura API, избавляя вас от инфраструктурных сложностей. Наша команда реализует интеграцию под ключ — от создания ключа до настройки лимитов и безопасности, обеспечивая надёжное и масштабируемое решение с последующей поддержкой.
Часто задаваемые вопросы

Настройка доступа к 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 спецификация

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

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

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    816
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142