Налаштування доступу до 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, що дозволяє довше тестувати без витрат. Наша команда має понад 8 років досвіду з Ethereum, виконала більш ніж 50 інтеграцій RPC-провайдерів, з яких понад 15 з Infura.

Реєстрація та перший запит

  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 запитів на день на безкоштовному плані, що вдвічі перевищує аналогічний ліміт 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 під ваш проєкт: від простого доступу до мультичейн-інфраструктури. Отримайте консультацію з вашого завдання — ми допоможемо обрати оптимальний план та налаштувати безпеку.

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

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

Останні роботи

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