При разработке 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 |
Получите консультацию прямо сейчас.







