Гайд з інтеграції Moralis API для Web3: дані, NFT і стріми

При розробці Web3-додатку ви стикаєтеся з проблемою: потрібно отримати історичні дані про транзакції або NFT за сотнями адрес. Самостійний парсинг RPC — дорогий: кожен запит до вузла коштує часу та газу, а відсутність індексації змушує зберігати великі обсяги сирих логів. Ми вирішуємо це завдання ін

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1452
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1310
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1005
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1270
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1012

При розробці Web3-додатку ви стикаєтеся з проблемою: потрібно отримати історичні дані про транзакції або NFT за сотнями адрес. Самостійний парсинг RPC — дорогий: кожен запит до вузла коштує часу та газу, а відсутність індексації змушує зберігати великі обсяги сирих логів. Ми вирішуємо це завдання інтеграцією Moralis API — готової інфраструктури для доступу до блокчейн-даних, яка індексує блоки в реальному часі та надає REST-ендпоінти і Streams-вебхуки. Запити балансів, метаданих NFT і подій контрактів займають мілісекунди, а мультичейн-доступ не потребує адаптації під кожну мережу. Наші інженери мають багаторічний досвід у блокчейн-розробці та реалізували понад 30 успішних інтеграцій Moralis.

Чому варто використовувати Moralis?

Економія часу та ресурсів. Налаштування інтеграції займає 1–2 дні замість 2 тижнів самостійної розробки індексатора. Moralis вже обробив дані за основними EVM-мережами. Історичні події контрактів доступні через простий API без написання підписок.

Real-time без головного болю. Streams надсилають розпарсені логи контрактів на ваш бекенд. Верифікація підпису через x-signature захищає від фальшивих подій. Ми налаштовуємо фільтри, щоб не перевантажувати CU.

Мультичейн з коробки. Одна інтеграція — Ethereum, Polygon, BNB Chain, Arbitrum, Avalanche. Не потрібно писати адаптери для кожного RPC-ендпоінта.

Які дані можна отримати через Moralis API?

Moralis надає готові ендпоінти для типових завдань:

  • Баланси токенів — нативні та ERC-20 для будь-якого гаманця (повертає до 1000 токенів за запит).
  • NFT-метадані — з автоматичною нормалізацією (URI, image, traits).
  • Транзакції — історія за останні 90 днів з фільтрацією за датою, токеном, адресою.
  • Ціни та курси — актуальні дані по токенах у USD/EUR (оновлюються кожні 5 секунд).
  • Події контрактів — лог і декодування за ABI.

Також підтримуються DeFi-позиції, баланси в пулах, історія стейкінгу. Для рідкісних контрактів можлива затримка індексації до 1 години — ми передбачаємо fallback на прямий RPC.

Як ми інтегруємо Moralis?

Процес включає п'ять етапів:

  1. Аналіз джерел — з'ясовуємо, які дані потрібні (NFT, токени, стріми), оцінюємо частоту запитів і денний ліміт CU.
  2. Проектування інтеграції — вибираємо ендпоінти, проектуємо схему webhook-обробників, шардуємо адреси при необхідності.
  3. Реалізація — пишемо код на TypeScript з @moralisweb3/common-evm-utils. Обробляємо пагінацію, помилки, кешування.
  4. Тестування — перевіряємо коректність даних, навантаження до 1000 запитів/хв, підпис webhook.
  5. Деплой і документуємо — розгортаємо у хмарі або на вашому сервері, передаємо інструкцію.

Практичний приклад: отримання NFT і токенів

import Moralis from 'moralis'; import { EvmChain } from '@moralisweb3/common-evm-utils'; await Moralis.start({ apiKey: process.env.MORALIS_API_KEY }); // NFT у гаманці const nfts = await Moralis.EvmApi.nft.getWalletNFTs({ address: userAddress, chain: EvmChain.ETHEREUM, tokenAddresses: [COLLECTION_ADDRESS], }); // Баланси ERC-20 const tokenBalances = await Moralis.EvmApi.token.getWalletTokenBalances({ address: userAddress, chain: EvmChain.ETHEREUM, }); tokenBalances.result.forEach(token => { console.log(`${token.symbol}: ${token.displayValue}`); // нормалізовано }); // Нативний баланс const nativeBalance = await Moralis.EvmApi.balance.getNativeBalance({ address: userAddress, chain: EvmChain.ETHEREUM, }); 

Приклад налаштування Streams webhook

Код налаштування стріму та верифікація webhook
const stream = await Moralis.Streams.add({ chains: [EvmChain.ETHEREUM], description: 'Track transfers', tag: 'token-transfers', webhookUrl: 'https://yourserver.com/webhooks/moralis', includeContractLogs: true, abi: ERC20_ABI, topic0: ['Transfer(address,address,uint256)'], filter: { eq: ['address', TOKEN_ADDRESS] }, }); await Moralis.Streams.addAddress({ id: stream.result.id, address: [TOKEN_ADDRESS], }); 

Обробник webhook з верифікацією:

app.post('/webhooks/moralis', async (req, reply) => { const body = req.body; const providedSignature = req.headers['x-signature']; const generatedSignature = crypto .createHmac('sha3-256', process.env.MORALIS_API_KEY!) .update(JSON.stringify(body)) .digest('hex'); if (providedSignature !== generatedSignature) { return reply.code(401).send('Invalid signature'); } body.logs.forEach((log: any) => { // log.decoded містить аргументи }); return reply.send({ received: true }); }); 

Порівняння Moralis з альтернативами

Критерій Moralis The Graph Self-hosted (Alchemy + indexer)
Час налаштування 1 година 1–2 дні 1 тиждень+
Історичні дані Готові Потребують синхронізації Парсинг з нуля
Real-time Streams webhook Підписка WebSocket Kafka + важка інфраструктура
Вартість (МСП) Економія до 40% порівняно з самостійною розробкою Безкоштовний хост + газ Витрати на сервер і розробку
Кастомні контракти Затримка індексації ~1 год Індекс з моменту деплою Повний контроль

Moralis оптимальний для MVP та середніх проектів. Наприклад, інтеграція Moralis налаштовується в 3 рази швидше, ніж розгортання сабграфа на The Graph. При зростанні трафіку ми комбінуємо Moralis з The Graph для складних агрегацій. Якщо вам потрібна допомога з інтеграцією, зв'яжіться з нами – ми допоможемо вибрати архітектуру.

Типові помилки при інтеграції Moralis

  • Ключ на фронтенді — розкриває ключ і ліміт CU. Використовуйте бекенд-проксі.
  • Ігнорування пагінації — не обробляти cursor: втрачаєте 90% даних.
  • Пропуск верифікації webhook — будь-хто може надіслати фальшивий лог. Завжди перевіряйте x-signature.
  • Надмірна фільтрація — без фільтра filter стрім шле всі події, швидко спалюючи CU.

Що входить в роботу

  • Документація інтеграції з описом ендпоінтів і схеми даних.
  • Налаштовані доступи до API Moralis (ключі, webhook-URL).
  • Приклади коду на TypeScript для типових операцій.
  • Тестування під навантаженням до 1000 запитів/хв.
  • Підтримка при запуску протягом 2 тижнів.

Орієнтири за строками та результатами

Тип інтеграції Строк (дні) Результат
NFT портфоліо + баланси 1–2 Dashboard з гаманцями та історією
Streams webhook + бот 2–3 Real-time сповіщення в Telegram/Discord
Повний дата-пайплайн 5–7 Moralis + ClickHouse + Grafana

Отримайте консультацію прямо зараз.