Интеграция с QuickNode API

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1Все 1306 услуг
Интеграция с QuickNode API
Простой
~1 день
Часто задаваемые вопросы

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

Этапы блокчейн-разработки

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

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

Интеграция с QuickNode API

Публичные RPC-эндпоинты умирают в production в первые же дни нагрузки: rate limit на Infura бесплатного тарифа — 100k запросов в сутки, Alchemy — 300M compute units в месяц, публичный Ethereum RPC вообще не имеет SLA. QuickNode решает это иначе: dedicated endpoint, предсказуемый throughput, расширенные методы и marketplace надстроек. Интеграция занимает день, но есть нюансы которые стоит знать заранее.

Что даёт QuickNode по сравнению с публичным RPC

Dedicated endpoint — никакого соседства с чужим трафиком. Ваши запросы не конкурируют с тысячами других клиентов на одном IP.

Add-ons — готовые надстройки: NFT API, Token API, DeFi stats, Trace API. Вместо самостоятельной агрегации данных подключаете готовый endpoint.

Streams — push-уведомления о новых блоках, транзакциях, событиях. Вместо polling WebSocket с фильтрами — настраиваете поток прямо в интерфейсе QuickNode.

Multi-chain — один аккаунт, десятки сетей. Один и тот же SDK работает с Ethereum, Solana, Polygon, Arbitrum, Base без изменений кода.

Интеграция: практика

QuickNode выдаёт два эндпоинта на каждую ноду: HTTPS для JSON-RPC и WSS для WebSocket subscriptions. Работают стандартным образом через любой Web3 клиент:

import { createPublicClient, http, webSocket } from 'viem'
import { mainnet } from 'viem/chains'

// HTTP для запросов
const httpClient = createPublicClient({
  chain: mainnet,
  transport: http('https://your-endpoint.quiknode.pro/YOUR_KEY/'),
})

// WebSocket для subscriptions
const wsClient = createPublicClient({
  chain: mainnet,
  transport: webSocket('wss://your-endpoint.quiknode.pro/YOUR_KEY/'),
})

// Подписка на новые блоки
const unwatch = wsClient.watchBlocks({
  onBlock: (block) => console.log('New block:', block.number),
})

Работа с Add-ons

NFT API, Token API и другие надстройки доступны через те же эндпоинты, но нестандартными JSON-RPC методами с префиксом qn_:

// Получение NFT-коллекции кошелька через QuickNode NFT API
const response = await httpClient.request({
  method: 'qn_fetchNFTs' as any,
  params: [{
    wallet: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
    page: 1,
    perPage: 20,
  }],
})

Streams: настройка push-уведомлений

Streams настраиваются в дашборде QuickNode. Выбираете тип потока (новые блоки, pending транзакции, конкретные события), destination (webhook, Kafka, S3) и фильтры. Это альтернатива самостоятельного WebSocket-сервера — меньше кода, но меньше контроля.

Для webhook-destination QuickNode шлёт POST с batch записями. Важно: настройте идемпотентность на своей стороне — при retry QuickNode может прислать дубликаты.

Управление лимитами

QuickNode считает не запросы, а credits. Простой eth_blockNumber — 20 credits, eth_getLogs с широким диапазоном — до 200+ credits. Дорогие методы: debug_traceTransaction (500 credits), trace_block (200+ credits).

Стратегия экономии credits:

  • Кэшируйте статичные данные: decimals(), symbol(), исторические блоки — они не меняются
  • Используйте eth_getLogs с узкими фильтрами, не сканируйте весь диапазон
  • Для polling — WebSocket subscriptions дешевле серии eth_getBlockByNumber
  • Батчинг запросов через JSON-RPC batch: несколько вызовов в одном HTTP-запросе
// JSON-RPC batch: один HTTP-запрос вместо трёх
const [block, balance, gasPrice] = await Promise.all([
  httpClient.getBlock({ blockNumber: 20000000n }),
  httpClient.getBalance({ address: '0x...' }),
  httpClient.getGasPrice(),
])
// viem автоматически батчит при транспорте с опцией batch

Мониторинг и failover

QuickNode предоставляет метрики в дашборде, но для production нужен собственный мониторинг:

// Обёртка с метриками и failover
class RpcClient {
  private endpoints: string[]
  private currentIndex = 0

  async request(method: string, params: any[]) {
    for (let attempt = 0; attempt < this.endpoints.length; attempt++) {
      try {
        const result = await this.callEndpoint(
          this.endpoints[this.currentIndex],
          method, params
        )
        return result
      } catch (err) {
        // Ротируем на следующий эндпоинт при ошибке
        this.currentIndex = (this.currentIndex + 1) % this.endpoints.length
        if (attempt === this.endpoints.length - 1) throw err
      }
    }
  }
}

Для серьёзного production: держите два эндпоинта — QuickNode primary + Alchemy/Infura fallback. Автоматический failover при превышении error rate или latency.