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

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка панелі LP (Limited Partner) для крипто-фонду
Середній
~1-2 тижні
Часті запитання

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

Етапи блокчейн-розробки

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1311
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1222
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    922
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1151
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    614
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    887

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

Limited Partner крипто-фонду хоче знати три речі: скільки стоїть його доля прямо зараз, як змінилася NAV за період та що саме знаходиться в портфелі. Звучить просто, але на практиці крипто-фонд тримає активи в десятках місць одночасно — hot wallets на різних мережах, позиції в DeFi-протоколах, стейкинг, ліквідність у пулах, OTC-позиції в CeFi — і всі вони розраховуються по-різному.

Джерела даних портфеля

Головна складність LP-дашборду — не UI, а агрегація даних з гетерогенних джерел з коректним розрахунком стоимості.

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 та ціноутворення

NAV (Net Asset Value) — центральний показник, навколо якого будується весь дашборд. Коректний розрахунок потребує цін на кожен актив у момент.

Джерела цін

Тип активу Джерело ціни
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 деноміованих позицій.

Розрахунок доля LP

Коли NAV розраховуватися, доля конкретного LP:

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

Для фондів з кількома класами акцій (Fund I / Fund II, різні 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
    (агрегація портфеля, FX конверсія, логіка share class)
          ↓
    Database (PostgreSQL + TimescaleDB для time-series NAV)
          ↓
    API Layer (REST / GraphQL)
          ↓
    LP Dashboard (React)

TimescaleDB — розширення PostgreSQL для time-series даних. NAV snapshots пишуться кожні 15–60 хвилин, історичні запити ("NAV за останні 90 днів з daily resolution") виконуються через continuous aggregates.

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

Для 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 (управляючий фонду):

  • Повний portfolio view з позиціями по адресах
  • Risk metrics: concentration risk, correlation matrix
  • Waterfall розрахунок carried interest при різних сценаріях виходу
  • Експорт у CSV/Excel для звітності перед інвесторами

Безпека та доступ

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

Білий-ліст IP з яких приймаються API-запити до бірж — додатковий рівень захисту від компрометації ключів.

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

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) для portfolio breakdown.

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

Типовий timeline: MVP з основними функціями — 8–12 тижнів. Production-ready система з аудитом доступу, повним набором адаптерів та документооборотом — 4–6 місяців.