Кастомные дашборды аналитики на Dune: разработка под ключ

Разработка кастомных аналитических дашбордов на Dune Вы запустили DeFi-протокол и хотите видеть реальную картину: сколько пользователей ежедневно вызывает ваш смарт-контракт, какой объём ликвидности в пулах, как меняется TVL. Ручной сбор данных из Etherscan или The Graph — это часы бесполезных кл

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1451
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1309
  • 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
    1011

Разработка кастомных аналитических дашбордов на Dune

Вы запустили DeFi-протокол и хотите видеть реальную картину: сколько пользователей ежедневно вызывает ваш смарт-контракт, какой объём ликвидности в пулах, как меняется TVL. Ручной сбор данных из Etherscan или The Graph — это часы бесполезных кликов, а готовые дашборды не учитывают вашу токеномику и специфичные события. Мы решаем эту задачу: разрабатываем кастомные дашборды на Dune Analytics, которые дают ответы за секунды, а не часы. Экономия на аналитике достигает $3 000 в месяц, а окупаемость инвестиций — менее 3 месяцев.

Наш опыт — 10+ лет в блокчейн-разработке, более 50 успешных дашбордов для DeFi-протоколов, NFT-коллекций и инфраструктурных проектов. Мы не просто пишем SQL: мы строим продукты, которые экономят ресурсы вашей команды. Сложность Dune не в инструменте — она в понимании структуры блокчейн-данных в реляционной модели. Одна ошибка в JOIN — и запрос выполняется 5 минут вместо секунд. Мы знаем, как этого избежать.

Устройство данных в Dune

Dune работает с двумя уровнями таблиц. Использование декодированных таблиц снижает время запроса на 70%.

Тип таблиц Примеры Назначение
Raw ethereum.transactions, ethereum.logs Сырые данные цепи, требуют парсинга data и topics
Decoded uniswap_v3_ethereum.Pair_evt_Swap События протоколов с нормализованными колонками (быстрее, не требуют парсинга)

Дополнительно существуют абстракции данных: dex.trades, prices.usd из Spellbook. Они агрегируют данные по множеству протоколов, избавляя от необходимости писать JOIN на каждом проекте.

Типичные ошибки и оптимизация

Ошибка Исправление Выигрыш
Полный скан без фильтра по дате Добавить WHERE block_time >= now() - interval '90 days' Ускорение в 10-50 раз
JOIN на erc20_ethereum.evt_Transfer без диапазона Ограничить evt_block_time Снижение нагрузки на 95%

Почему важна оптимизация SQL-запросов?

Полный скан без фильтра по дате — главная причина таймаутов. Фильтруйте block_time всегда:

-- ПЛОХО: полный скан всей истории SELECT date_trunc('day', block_time), count(*) FROM ethereum.transactions WHERE "to" = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 -- ХОРОШО: ограничиваем 90 днями SELECT date_trunc('day', block_time), count(*) FROM ethereum.transactions WHERE "to" = 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 AND block_time >= now() - interval '90 days' 

Избыточные JOIN на erc20_ethereum.evt_Transfer — таблица содержит миллиарды строк. Добавляйте временной диапазон:

-- ПЛОХО: JOIN без фильтра SELECT t.from, SUM(t.value) FROM erc20_ethereum.evt_Transfer t JOIN my_users u ON t."from" = u.address WHERE t.contract_address = 0xdAC17F958D2ee523a2206206994597C13D831ec7 GROUP BY 1 -- ХОРОШО: с фильтром по evt_block_time SELECT t.from, SUM(t.value / 1e6) as usdt_sent FROM erc20_ethereum.evt_Transfer t JOIN my_users u ON t."from" = u.address WHERE t.contract_address = 0xdAC17F958D2ee523a2206206994597C13D831ec7 AND t.evt_block_time >= now() - interval '30 days' GROUP BY 1 ORDER BY 2 DESC 

Метод snapshot + delta

Для дашбордов с исторической глубиной свыше 30 дней используем двухуровневую схему:

  • Snapshot: тяжёлый запрос выполняется раз в сутки (кешируется).
  • Delta: лёгкий запрос за последние 24 часа.
  • Объединение через UNION ALL.

Это даёт пользователю актуальные данные без 5-минутного ожидания. Экономия времени вычислений — до 90%.

WITH historical AS ( SELECT * FROM snapshot_table -- пересчитывается раз в день ), delta AS ( SELECT * FROM live_table WHERE evt_block_time >= now() - interval '1 day' ) SELECT * FROM historical UNION ALL SELECT * FROM delta 

Что такое Spellbook и зачем его использовать?

Spellbook (Dune V2) — это dbt-проект с готовыми моделями: prices.usd (цены токенов), dex.trades (все DEX-свапы), tokens.erc20 (символы и decimals). Не нужно каждый раз джойнить price feeds — используйте готовые таблицы. Мы интегрируем Spellbook в каждый дашборд для ускорения разработки в 2 раза. Официальная документация Spellbook содержит полный список моделей.

Пример: TVL протокола

WITH deposits AS ( SELECT date_trunc('day', evt_block_time) AS day, token, SUM(amount / POWER(10, decimals)) AS amount FROM protocol_ethereum.Pool_evt_Deposit JOIN tokens.erc20 ON token = contract_address AND blockchain = 'ethereum' WHERE evt_block_time >= now() - interval '180 days' GROUP BY 1, 2 ), withdrawals AS ( SELECT date_trunc('day', evt_block_time) AS day, token, -SUM(amount / POWER(10, decimals)) AS amount FROM protocol_ethereum.Pool_evt_Withdraw JOIN tokens.erc20 ON token = contract_address AND blockchain = 'ethereum' WHERE evt_block_time >= now() - interval '180 days' GROUP BY 1, 2 ), daily_flows AS ( SELECT day, token, SUM(amount) AS net_flow FROM (SELECT * FROM deposits UNION ALL SELECT * FROM withdrawals) GROUP BY 1, 2 ) SELECT day, token, SUM(net_flow) OVER (PARTITION BY token ORDER BY day) AS cumulative_tvl FROM daily_flows ORDER BY day DESC, token 

Архитектура дашборда

Хороший дашборд — это продукт. Иерархия метрик: top-level KPI (TVL, Volume, Users) → drill-down (по сетям, токенам) → детали (топ адресов). Используйте параметры {{token_address}} для интерактивности. Например, дашборд для AMM позволяет выбрать пул, временной диапазон и сразу видеть объём, комиссии, impermanent loss.

Как мы строим дашборд: пошаговый процесс

  1. Анализ протокола и определение ключевых метрик. Изучаем ABI контракта, выделяем события Deposit, Withdraw, Swap. Составляем маппинг полей.
  2. Написание SQL-запросов с оптимизацией по времени (снижаем latency на 70%). Используем декодированные таблицы и Spellbook.
  3. Настройка визуализаций: выбор типов графиков (line, bar, area), параметризация (сетевые фильтры, диапазоны дат), кеширование.
  4. Документация логики расчётов для вашей команды — описание каждой метрики, формулы, ссылки на контракты.
  5. Публикация в открытый доступ с поддержкой. После релиза мы мониторим ошибки и корректируем запросы при форках.

Процесс работы

  • Аналитика: изучаем смарт-контракт, выявляем ключевые события.
  • Проектирование: создаём прототип дашборда на Dune.
  • Реализация: пишем оптимизированные SQL-запросы, настраиваем параметры.
  • Тест: проверяем временные диапазоны, корректность агрегаций.
  • Деплой: публикуем дашборд, подключаем кеширование.

Сроки — от 3 до 10 дней в зависимости от сложности. Свяжитесь с нами — и мы спроектируем дашборд, который даст полную картину по вашему протоколу. Закажите разработку под ключ: гарантируем, что все запросы выполняются <30 секунд, кеш обновляется с заданной периодичностью, дашборд публикуется в открытый доступ. Получите консультацию уже сегодня.