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

Розробка кастомних аналітичних дашбордів на Dune Ви запустили DeFi-протокол і хочете бачити реальну картину: скільки користувачів щоденно викликає ваш смарт-контракт, який об'єм ліквідності в пулах, як змінюється TVL. Ручний збір даних з Etherscan або The Graph — це години непотрібних кліків, а г

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • 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 секунд, кеш оновлюється із заданою періодичністю, дашборд публікується у відкритий доступ. Отримайте консультацію вже сьогодні.