При розробці 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?
Процес включає п'ять етапів:
- Аналіз джерел — з'ясовуємо, які дані потрібні (NFT, токени, стріми), оцінюємо частоту запитів і денний ліміт CU.
- Проектування інтеграції — вибираємо ендпоінти, проектуємо схему webhook-обробників, шардуємо адреси при необхідності.
- Реалізація — пишемо код на TypeScript з
@moralisweb3/common-evm-utils. Обробляємо пагінацію, помилки, кешування. - Тестування — перевіряємо коректність даних, навантаження до 1000 запитів/хв, підпис webhook.
- Деплой і документуємо — розгортаємо у хмарі або на вашому сервері, передаємо інструкцію.
Практичний приклад: отримання 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 |
Отримайте консультацію прямо зараз.







