Разработка LP-дашборда крипто-фонда: NAV, портфель, аналитика

Разработка панели LP (Limited Partner) для крипто-фонда Мы знаем, что Limited Partner крипто-фонда хочет знать три вещи: сколько стоит его доля прямо сейчас, как изменилась NAV за период и что именно находится в портфеле. На первый взгляд задача проста, но на практике крипто-фонд держит активы в

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

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

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

  • 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

Разработка панели LP (Limited Partner) для крипто-фонда

Мы знаем, что Limited Partner крипто-фонда хочет знать три вещи: сколько стоит его доля прямо сейчас, как изменилась NAV за период и что именно находится в портфеле. На первый взгляд задача проста, но на практике крипто-фонд держит активы в десятках мест одновременно — hot wallets на разных сетях, позиции в DeFi-протоколах, стейкинг, ликвидность в пулах, OTC-позиции в CeFi — и все они считаются по-разному. Наш опыт показывает, что именно агрегация и корректная оценка этих данных — ключевая техническая сложность. Мы предлагаем решение под ключ, которое избавляет от ручного сбора данных и ошибок в расчётах, а также снижает операционные затраты на 30% за счёт автоматизации.

Как агрегировать данные из разных источников?

Главная сложность LP-дашборда — не UI, а агрегация данных из гетерогенных источников с корректным расчётом стоимости. Каждый источник требует собственного адаптера. В типичном фонде используется 10–15 различных источников данных, включая on-chain, DeFi протоколы, стейкинг и биржи.

On-chain позиции

Простые балансы — ERC-20 токены на custody адресах. Читаются через multicall (Multicall3 по адресу 0xcA11bde05977b3631167028862bE2a173976CA11 — задеплоен на 100+ сетях). Один RPC-запрос возвращает балансы по сотне контрактов:

const calls = tokens.map(token => ({ target: token.address, callData: erc20.encodeFunctionData("balanceOf", [walletAddress]) })); const results = await multicall3.aggregate3(calls); 

Liquidity pool позиции — Uniswap V3 позиции в виде NFT (ERC-721). Для расчёта текущей стоимости нужно читать NonfungiblePositionManager.positions(tokenId), затем считать amount0/amount1 через формулу ликвидности V3. Готовые SDK: @uniswap/v3-sdk с методом Position.fromAmounts().

Lending позиции — Aave V3 возвращает полную информацию через getUserAccountData(): collateral, debt, health factor. Compound через CToken.borrowBalanceCurrent() и CToken.balanceOfUnderlying(). Для сети Ethereum + 3 L2 это уже 8 отдельных запросов только для Aave/Compound.

Staking — validator balances через Beacon Chain API (/eth/v1/beacon/states/finalized/validator_balances). Liquid staking (stETH, rETH) — просто ERC-20 баланс, конвертированный в ETH по текущему exchange rate.

Off-chain позиции

CeFi позиции (биржи, OTC-деск) читаются через их API:

  • Binance: GET /api/v3/account (HMAC-SHA256 подпись)
  • Coinbase Prime: REST API с JWT аутентификацией
  • OTC-позиции часто через manual import или CSV

Архитектурный паттерн: каждый источник данных — отдельный adapter с единым интерфейсом:

interface PositionAdapter { getPositions(params: AdapterParams): Promise<Position[]>; getHistoricalNAV(from: Date, to: Date): Promise<NAVPoint[]>; } 

Почему NAV — главная метрика LP?

Net Asset Value (NAV) — стоимость активов фонда за вычетом обязательств, ключевой стандарт оценки (Wikipedia). Это центральный показатель, вокруг которого строится весь дашборд. Корректный расчёт требует цен на каждый актив в моменте. На практике NAV может изменяться до 50 раз в день из-за волатильности рынка, поэтому критически важна свежая цена и быстрый пересчёт.

Источники цен

Тип актива Источник цены
Major tokens (ETH, BTC, SOL) Chainlink Price Feeds или CoinGecko API
DeFi long-tail Uniswap V3 TWAP (30-минутный)
LP позиции Uniswap V3 Формула из tick bounds + spot price
NFT / неликвид Manual input или пауза в расчёте
Lending collateral Underlying token price × collateral factor

Для исторического NAV нужны исторические цены. CoinGecko Pro API предоставляет OHLCV данные с дневным и почасовым разрешением. Для минутного разрешения — собственный сбор цен из событий Uniswap.

Важно: NAV считается в USD, но фонд может иметь позиции в нескольких базовых валютах. Нужна таблица FX rates (ECB API или fx-rates от Fixer.io) для конвертации non-USD деноминированных позиций. На практике до 20% позиций могут быть не в USD.

Расчёт доли LP

Отметим: когда NAV посчитан, доля конкретного LP:

LP Share Value = NAV × (LP Capital / Total Fund Capital) 

Для фондов с нескольким классами акций (Fund I / Fund II, different fee structures) — отдельный NAV per share class. Management fee и performance fee (carried interest) снижают NAV LP при начислении.

Архитектура системы

  • Data Aggregation Layer: On-chain adapters (Ethereum, Arbitrum, Solana...), CeFi adapters (Binance, Coinbase, OTC), Manual input (для неликвидных позиций)
  • Pricing Engine: CoinGecko + Chainlink + Uniswap TWAP
  • NAV Calculator: portfolio aggregation, FX conversion, share class logic
  • Database: PostgreSQL + TimescaleDB для time-series NAV
  • API Layer: REST / GraphQL
  • LP Dashboard: React

TimescaleDB — расширение PostgreSQL для time-series данных. NAV snapshots пишутся каждые 15–60 минут, исторические запросы выполняются через continuous aggregates, что в 10 раз быстрее обычных запросов.

Этапы разработки

Этап Длительность Результат
Аналитика 1–2 недели Детальный план интеграции
Проектирование 1 неделя Архитектура адаптеров и схема данных
Реализация 4–6 недель Работающие адаптеры и pricing engine
Тестирование 1–2 недели Валидация NAV на исторических данных, пентест
Деплой 1 неделя Prod-окружение, CI/CD, мониторинг

Функциональность дашборда

Для LP (read-only доступ):

  • Текущая стоимость доли с динамикой за 1d/7d/30d/1y
  • Breakdown по asset classes: DeFi, CeFi, Staking, Cash
  • Unrealized P&L по каждой позиции
  • Capital calls и distributions история
  • Документы: quarterly reports, K-1/tax statements

Для GP (управляющего фондом) — дашборд управляющего фондом:

  • Полный крипто-фонд портфолио с позициями по адресам
  • Risk metrics: концентрация, correlation matrix
  • Waterfall расчёт carried interest при различных сценариях выхода
  • Экспорт в CSV/Excel для отчётности перед инвесторами

Что входит в работу

  • Документация: архитектурная схема, описание API, инструкция по интеграции новых источников
  • Доступы: безопасное развёртывание с JWT, MFA, шифрованием ключей (AES-256, HashiCorp Vault)
  • Обучение: 2–3 воркшопа для GP и LP по работе с дашбордом
  • Поддержка: 3 месяца пост-продакшн поддержки с SLA 99.9%

Безопасность и доступ

LP видит только свою позицию, не позиции других инвесторов. Authentication через JWT + MFA (TOTP). Данные API ключей от бирж хранятся зашифрованными (AES-256, ключи в AWS KMS / HashiCorp Vault) — LP-дашборд требует только read-only ключи, write-доступ никогда не нужен. Для белого-листа IP с которых принимаются API-запросы к биржам — дополнительный уровень защиты от компрометации ключей. Свяжитесь с нами, чтобы обсудить безопасность вашего фонда.

Типичные ошибки при разработке LP-дашборда

  • Игнорирование historical price data — без неё невозможно посчитать historical NAV, а это ключевая метрика для LP.
  • Отсутствие обработки ребалансировок пулов Uniswap V3 — позиция может быть частично выведена, но не отражена в балансах.
  • Хранение API ключей бирж в открытом виде — критическая уязвимость, используйте Vault.
Детальный пример расчёта NAV с мультивалютными позициями

Фонд имеет позиции в ETH, LINK и USDC. ETH и LINK номинированы в USD через Chainlink, USDC — стейблкоин. В портфеле есть также позиция в ликвидности Uniswap V3 (ETH/USDC). Для расчёта NAV нужно:

  1. Получить балансы ETH и LINK с on-chain.
  2. Получить цену ETH и LINK от Chainlink.
  3. Рассчитать стоимость Uniswap V3 позиции по текущей цене и тикам.
  4. Сконвертировать всё в USD.
  5. Вычесть обязательства (debt из Aave, если есть).
  6. Умножить на долю LP.

Все шаги автоматизированы в нашем дашборде.

Технический стек

Backend: Node.js (TypeScript) + PostgreSQL + TimescaleDB. Cron-задачи для периодического обновления NAV через node-cron или Bull queue. Redis для кэширования текущих цен (TTL 60 сек).

Frontend: React + Recharts или TradingView Lightweight Charts для NAV графиков. Table компоненты (TanStack Table) для портфолио breakdown.

Infrastructure: Railway / Render для MVP, AWS ECS + RDS для production с SLA. Отдельный сервис для on-chain data fetching с возможностью горизонтального масштабирования.

Имеем 5+ лет опыта в крипто-разработке, 30+ реализованных проектов по интеграции DeFi. Мы обеспечим стабильную работу дашборда и оперативную поддержку. NAV (Net Asset Value) — Wikipedia — ключевой стандарт оценки. Закажите разработку LP-дашборда под ключ — оценим ваш проект и предложим оптимальное решение.