Гайд по интеграции 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

Получите консультацию прямо сейчас.