Інтеграція з 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 add-ons. Інтеграція займає день, але є нюанси, які варто знати заздалегідь.

Що дає 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.