Інтеграція з Ankr API
Більшість Web3-проектів починають із публічних RPC-ендпоінтів — і швидко упиваються в rate limits, нестабільність і відсутність архівних даних. Ankr вирішує кілька завдань одразу: це мультичейн RPC-провайдер з підтримкою 50+ мереж, архівними нодами та набором спеціалізованих API поверх сирих RPC-вызовів.
Що конкретно надає Ankr
Premium RPC — стандартні JSON-RPC ендпоінти для EVM і не-EVM мереж. Порівняно з публічними: гарантовані rate limits, SLA uptime, підтримка архівних методів (eth_getBalance на будь-якому історичному блоці).
Ankr Advanced API — високогорівневі методи, яких нема в стандартному JSON-RPC:
-
ankr_getAccountBalance— мультичейн баланс акаунту по всіх токенах одразу -
ankr_getNFTsByOwner— всі NFT власника по всіх мережах -
ankr_getTransactionsByAddress— історія транзакцій із пагінацією -
ankr_getTokenHolders— власники токена
Без цих методів той же результат потребує десятків RPC-вызовів і власного індексування.
Практика інтеграції
Ankr сумісний зі стандартними Web3-бібліотеками — достатньо замінити RPC URL:
import { createPublicClient, http } from "viem";
import { mainnet, polygon, bsc } from "viem/chains";
const ankrKey = process.env.ANKR_API_KEY;
const ethClient = createPublicClient({
chain: mainnet,
transport: http(`https://rpc.ankr.com/eth/${ankrKey}`),
});
// Advanced API через окремий SDK
import AnkrProvider from "@ankr.com/ankr.js";
const ankr = new AnkrProvider(`https://rpc.ankr.com/multichain/${ankrKey}`);
// Отримати всі токен-балансу адреси по всіх мережах одним запитом
const { assets } = await ankr.getAccountBalance({
walletAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
blockchain: ["eth", "polygon", "bsc", "arbitrum"],
});
Обробка помилок і retry
Ankr повертає стандартні JSON-RPC помилки плюс специфічні коди. Обов'язковий паттерн:
async function withRetry<T>(
fn: () => Promise<T>,
maxAttempts = 3,
baseDelayMs = 500
): Promise<T> {
for (let attempt = 0; attempt < maxAttempts; attempt++) {
try {
return await fn();
} catch (err: any) {
const isRateLimit = err?.code === 429 || err?.message?.includes("rate limit");
const isRetryable = isRateLimit || err?.code === -32603; // internal error
if (!isRetryable || attempt === maxAttempts - 1) throw err;
await delay(baseDelayMs * 2 ** attempt); // exponential backoff
}
}
throw new Error("unreachable");
}
Мультичейн балансу у продакшені
Advanced API особливо корисний для portfolio-трекерів і гаманців. Без нього "показати всі токени користувача" потребує: ітерувати по всіх мережах, по всіх потенційно релевантних токенах, робити balanceOf вызови — сотні запитів. З ankr_getAccountBalance — один запит, відповідь включає ціни у USD.
Обмеження, які потрібно знати
Rate limits залежать від плану. Free tier: 30 req/s. Premium: 1500+ req/s. При високому навантаженню — комбінувати Ankr з власними нодами або іншими провайдерами.
Advanced API не покриває всі мережі. Стандартний RPC є для 50+ мереж, Advanced API — для ~20 основних. Перед плануванням проекту — перевірити актуальний список у документації.
Дані Advanced API не real-time. Індексер Ankr оновлюється з невеликою затримкою (~30–60 сек). Для критичних фінансових даних на останньому блоці — використовувати прямий RPC, не Advanced API.
Коли вибирати Ankr
Ankr виправданий якщо: потрібен швидкий старт з мультичейн підтримкою, потрібні архівні дані без своєї ноди, потрібні високогорівневі методи (балансу, NFT, історія транзакцій) без написання власного індексера. При навантаженні > 1M запитів/день — розраховувати економіку: власна нода окупується швидше, ніж здається.







