Разработка дашборда влияния token unlock на цену

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Разработка дашборда влияния token unlock на цену
Средняя
~3-5 рабочих дней
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1221
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1163
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    855
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1056
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    828

Разработка дашборда влияния token unlock на цену

Token unlock — один из самых предсказуемых ценовых катализаторов в крипто. Scheduled vesting cliffs публичны on-chain или через документацию проекта, но агрегировать эти данные и показать их в контексте рыночной капитализации, liquidity и исторических паттернов — нетривиальная задача. Именно это делает unlock dashboard ценным инструментом.

Источники данных об unlock событиях

On-chain vesting контракты

Многие проекты деплоят стандартные vesting контракты — их можно читать напрямую:

import { publicClient } from './client'
import { parseAbi } from 'viem'

const vestingAbi = parseAbi([
  'function vestingSchedules(address beneficiary) view returns (uint256 start, uint256 cliff, uint256 duration, uint256 amountTotal, uint256 released)',
  'function VestingScheduleCreated(address indexed beneficiary, uint256 amount) event',
])

// Все бенефициары из событий
const events = await publicClient.getLogs({
  address: vestingContractAddress,
  event: parseAbi(['event VestingScheduleCreated(address indexed beneficiary, uint256 amount)'])[0],
  fromBlock: deployBlock,
  toBlock: 'latest',
})

Популярные контракты: OpenZeppelin VestingWallet, Sablier v2 (streaming vesting), TokenVesting от различных аудиторов. Каждый имеет свой ABI.

Sablier v2 заслуживает отдельного внимания — это protocol-level streaming, где unlock происходит непрерывно, не по клиффам. Для дашборда нужно вычислять unlocked amount на момент времени T через streamedAmountOf(streamId).

Off-chain источники

Не все проекты используют on-chain vesting. Многие держат токены на multisig и переводят вручную по расписанию. Источники данных:

  • TokenUnlocks.app API — агрегирует данные по крупным проектам
  • Messari — исторические unlock события
  • Vesting документация проекта — парсинг публичных документов (Notion, Gitbook)
  • CoinGecko — tokenomics данные для части проектов

Для MVP: комбинация on-chain парсинга + ручной ввод для крупных проектов + интеграция с одним-двумя API.

Расчёт влияния на цену

Supply shock ratio

Базовая метрика: сколько токенов разблокируется относительно текущего circulating supply и 30-дневного объёма торгов:

interface UnlockEvent {
  date: Date
  amount: bigint      // в токен единицах
  category: 'team' | 'investors' | 'ecosystem' | 'public'
  vestingContract: string
}

function calculatePriceImpact(unlock: UnlockEvent, marketData: MarketData) {
  const unlockUsd = Number(formatUnits(unlock.amount, 18)) * marketData.tokenPrice
  
  // % от circulating supply
  const supplyImpact = unlockUsd / marketData.marketCap * 100
  
  // Отношение к среднедневному объёму
  const volumeRatio = unlockUsd / (marketData.volume30d / 30)
  
  // Исторический паттерн: инвесторы/команда продают агрессивнее
  const sellPressureMultiplier = {
    team: 0.3,         // ~30% обычно продаётся
    investors: 0.5,    // ~50% продаётся (особенно ранние раунды)
    ecosystem: 0.1,    // grants редко продаются сразу
    public: 0.15,
  }[unlock.category]
  
  const estimatedSellPressure = unlockUsd * sellPressureMultiplier
  
  return {
    supplyImpactPercent: supplyImpact,
    volumeRatio,
    estimatedSellPressureUsd: estimatedSellPressure,
    severity: volumeRatio > 1 ? 'high' : volumeRatio > 0.3 ? 'medium' : 'low',
  }
}

Исторический backtesting

Для каждого прошлого unlock события рассчитываем фактическое изменение цены за [-7d, 0, +1d, +7d, +30d]:

-- Пример запроса для исторического анализа
SELECT 
  u.unlock_date,
  u.amount_usd,
  u.category,
  p.price_7d_before,
  p.price_at_unlock,
  p.price_7d_after,
  (p.price_7d_after - p.price_at_unlock) / p.price_at_unlock * 100 as pct_change_7d
FROM unlock_events u
JOIN price_snapshots p ON p.token_id = u.token_id 
  AND p.date BETWEEN u.unlock_date - interval '7 days' 
  AND u.unlock_date + interval '30 days'
WHERE u.token_id = $1
ORDER BY u.unlock_date DESC

Этот анализ показывает историческую корреляцию между размером unlock и движением цены для конкретного токена — ценнее, чем усреднённые по рынку цифры.

Визуализация

Timeline chart

Основной компонент: горизонтальная временная шкала с событиями разблокировки. TradingView Lightweight Charts с кастомными markers:

import { createChart, IChartApi } from 'lightweight-charts'

// Ценовой chart + unlock markers
const markers = unlockEvents.map(event => ({
  time: event.date.getTime() / 1000,
  position: 'belowBar' as const,
  color: event.severity === 'high' ? '#ef4444' : '#f59e0b',
  shape: 'arrowUp' as const,
  text: `$${(event.amountUsd / 1e6).toFixed(1)}M unlock`,
  size: Math.min(event.severity === 'high' ? 2 : 1, 3),
}))

Unlock calendar

Календарное представление будущих событий — shadcn/ui Calendar с custom day renderer, отображающим сумму unlock за день.

Supply breakdown

Pie/donut chart текущего распределения supply по категориям (locked/unlocked/circulating) + stacked bar с прогнозом разблокировки по месяцам.

Стек и данные

Компонент Технология
Price data CoinGecko API / CryptoCompare
On-chain reads viem + Alchemy/QuickNode
Historical data PostgreSQL + TimescaleDB
Charts TradingView Lightweight Charts
Frontend Next.js + Tailwind
Cron jobs Vercel Cron / Railway

Дашборд для одного токена можно сделать за 3 дня. Мультитокенная платформа с историческим анализом, on-chain парсингом нескольких vesting стандартов и автоматическим обновлением данных — 4–5 дней.