ТЗ: Crypto Back-Office¶
Статус: Черновик для согласования OKR: O4 — Перевести учёт и операционное управление крипто-инвестициями из ручного процесса в единый автоматизированный back-office
1. Обзор проекта¶
1.1. Цель¶
Создание единой системы автоматизированного учёта крипто-инвестиций, которая:
- Заменяет ручной процесс сбора данных из блокчейнов
- Автоматически классифицирует транзакции и формирует операционные объекты (сделки, позиции, стратегии)
- Предоставляет единый источник корректной отчётности
- Интегрируется с app.saga.fund для отображения пользователям куда вложены их средства
1.2. Архитектурное размещение¶
| Компонент | Домен | Описание |
|---|---|---|
| Back-Office | back.saga.fund |
Административный интерфейс + Investor Portal (разграничение по ролям) |
| User App | app.saga.fund |
Интерфейс для обычных клиентов (ограниченный функционал) |
| API | Общий backend | Единая система данных для всех интерфейсов |
1.3. Целевая аудитория¶
- Внутренняя команда — менеджеры инвестиций, операторы, аналитики
- Внешние клиенты — инвесторы, партнёры (ограниченный доступ к отчётности)
2. Целевые метрики (KR)¶
KR4-1: Автоматический сбор данных (Q1)¶
| Метрика | Целевое значение |
|---|---|
| Блокчейны подключены к системе | 100% |
| Кошельки с автоматическим сбором | 100% |
| Время получения актуальных данных | ≤ 15 минут |
KR4-2: Автоматическая классификация транзакций (Q1)¶
| Метрика | Целевое значение |
|---|---|
| Транзакции автоматически классифицированы | ≥ 95% |
| Транзакции требующие ручной коррекции | ≤ 25% |
| Операционные объекты формируются автоматически | ≥ 90% |
KR4-3: Единый источник отчётности (Q2)¶
| Метрика | Целевое значение |
|---|---|
| Время формирования ключевого отчёта | ≤ 5 минут |
| Отчёты доступны и корректны | 100% |
| Расхождение с ручной сверкой | 0% |
3. Функциональные модули¶
3.1. Модуль сбора остатков (Balances)¶
Приоритет: Высокий · Срок: Фаза 1 (3 мес.)
Требования¶
| № | Задача | Детали |
|---|---|---|
| 1 | Сбор остатков по сети Tron | Автоматический polling |
| 2 | Сбор остатков по сети Solana | Автоматический polling |
| 3 | Сбор остатков по ETH | Mainnet + основные L2 |
| 4 | Сбор остатков по иным EVM | Arbitrum, Optimism, Base, Polygon и др. |
| 5 | Единый дашборд остатков | Обновление каждые 30 минут |
| 6 | Конвертация в USD | По актуальному курсу |
| 7 | Отображение в оригинальной валюте | Показывать крипто-баланс + USD эквивалент |
| 8 | Отделение остатков от позиций | Чистые остатки без сумм открытых позиций |
Дополнительные дашборды¶
- Кастомные монеты — отдельный дашборд
- Суммы сделок — отдельный дашборд
Конфигурация¶
Фиксированный список кошельков для отслеживания через конфигурационный файл с возможностью добавления/обновления без деплоя.
3.2. Модуль истории транзакций (Transactions)¶
Приоритет: Высокий · Срок: Фаза 1 (3 мес.)
Требования¶
| № | Задача | Детали |
|---|---|---|
| 1 | Сбор транзакций со всех сетей | Все поддерживаемые блокчейны |
| 2 | Единое отображение | Хронологический порядок |
| 3 | Выгрузка в CSV | + возможность других форматов |
| 4 | Загрузка исторических данных | Полный pull истории из блокчейнов |
Отображаемые данные¶
- Дата/время транзакции
- Блокчейн/сеть
- Хеш транзакции (ссылка на explorer)
- Адреса отправителя/получателя
- Сумма (оригинальная валюта + USD)
- Комиссия (gas fee)
- Статус
- Назначение (автоматическое правило или ручной мэппинг)
3.3. Модуль классификации транзакций (Categories)¶
Приоритет: Высокий · Срок: Фаза 1 (3 мес.)
Категории транзакций¶
Финансовые категории (до 5):
- Рост AUM (вход в сделку)
- Выход из сделки
- Доход от сделки
- Заработная плата
- Операционные расходы
DeFi категории (до 5):
- Стратегия
- Коллатерал
- Займ
- Ликвидность
- Прочее
Правила автоматической классификации¶
Система правил на основе паттернов:
Если пришло с кошелька A → прибыль от сделки X
Если ушло на кошелёк B → Заработная плата
Если ушло на кошелёк C → частная сделка Y
Цель: До 70% транзакций классифицируются автоматически по правилам.
Ручная классификация¶
- UI для присвоения/изменения категорий
- Возможность создания новых правил на основе ручных классификаций
- Выгрузка классифицированных данных в CSV
3.4. Модуль позиций/сделок (Positions & Deals)¶
Приоритет: Высокий · Срок: Фаза 1-2 (3 мес.)
Типы позиций¶
- DeFi позиции — стратегии в DeFi протоколах
- Private deals — частные сделки между кошельками
- Market positions — рыночные позиции (спот, derivatives)
Атрибуты позиции¶
| Поле | Описание |
|---|---|
| Название/идентификатор | Уникальное имя позиции |
| Тип | DeFi / Private deal / Market position |
| Статус | active / closed / loan / collateral / stop |
| Дата открытия | Первая транзакция (OUT) |
| Дата закрытия | Зеркальная транзакция (IN) |
| Сумма входа (Start) | USD на момент входа |
| Текущая стоимость (Current) | USD по актуальному курсу |
| Стоимость при закрытии (Close) | USD на момент выхода |
| Прибыль (Profit) | Рассчитывается по формуле |
| Доходность 1W% | Недельная доходность |
| APY | Годовая доходность |
| APY средневзвешенный | С учётом веса в портфеле |
| Вес в портфеле (Weight) | Доля от общего портфеля |
Формирование позиций из транзакций¶
- После маркировки транзакций как часть сделки → формируется позиция
- Операторы могут связывать транзакции с позициями вручную
- Возможность ручного ввода позиции (для off-chain сделок)
Расчёт прибыли¶
- По формуле при закрытии позиции
- Курс фиксируется на дату закрытия
- Возможность ручного ввода прибыли
Формула APY¶
3.5. Модуль Cash Flow (CF)¶
Приоритет: Средний · Срок: Фаза 2 (3 мес.)
Структура Cash Flow¶
Валюта: EUR для операционных расходов, USD для крипто-операций
OCF (Операционный поток):
- Total Payroll (Payroll Net, Tax + SSC)
- Outsource (Legal, Tech, Scouting)
- Administrative (Set up entities, Monthly providers, G&A, Office, Bank&Crypto fees, Consulting, Others)
- IT (DB subscriptions, CRM/Software, Hardware, Others)
- Commercial (MICE, PR & Marketing, Travel & Representation, Others)
- Contingency
ICF (Инвестиционный поток):
- New investments (VC/PE) — Target №1, №2, ...
- Loans (Outbound, Inbound)
- Proceeds
FFCF (Финансовый поток):
- Займы от UBO
- Прочие источники фондирования
- Дивиденды
Функциональность¶
| № | Задача | Детали |
|---|---|---|
| 1 | Сбор CF из классифицированных транзакций | Автоматическая агрегация |
| 2 | Ежедневный пересчёт | По текущему расчётному периоду (месяц) |
| 3 | Фиксация закрытых периодов | По среднему курсу месяца (x-rates.com) или по курсу на дату |
| 4 | Ручной ввод и корректировка | UI для операторов |
| 5 | Корректировка по старым периодам | С сохранением audit trail |
| 6 | Выгрузка в CSV | Для внешней отчётности |
Представление¶
- Помесячная разбивка с колонками факт/план
- Поквартальная агрегация
- TOTAL за год
3.6. Модуль доходности (APY/ROI)¶
Приоритет: Средний · Срок: Фаза 2 (3 мес.)
Требования¶
| № | Задача | Детали |
|---|---|---|
| 1 | Расчёт APY | По формулам из образца (см. ниже) |
| 2 | Пересчёт за периоды | День, неделя, месяц, кастомный период |
| 3 | APY по портфелю в целом | Агрегированный показатель |
| 4 | APY по каждой позиции | Индивидуальные показатели |
| 5 | Ручной ввод и корректировка | Для исключительных случаев |
| 6 | Выгрузка в CSV |
Формулы расчёта¶
Простой APY (для позиции):
1W% = (Current / Start - 1) * 100
APY = (Current / Start - 1) * (365 / (DateEnd - DateStart))
APY средневзвешенный = SUM(APY[i] * Weight[i])
Time-Weighted Return (TWR) — для портфеля в целом:
TWR исключает влияние денежных потоков (депозитов/выводов) на расчёт доходности.
Зачем нужен TWR (простой пример):
Этап 1: $100, рынок +10% → $110
Этап 2: Довложили $100 → $210
Этап 3: Рынок -5% → $199.50
Простой расчёт: ($199.50 - $200) / $200 = -0.25% ❌ НЕПРАВИЛЬНО
TWR: (1 + 0.10) × (1 - 0.05) - 1 = +4.5% ✅ ПРАВИЛЬНО
Простой расчёт показывает убыток, хотя управляющий заработал +10% и потерял -5% = чистый плюс.
Почему это важно:
- Управляющий не контролирует когда инвесторы вкладывают/выводят
- TWR показывает качество управления, а не удачу тайминга инвестора
- Если инвестор вложил перед падением — это его решение
Формула:
Когда начинается новый подпериод:
- Любой подтверждённый депозит
- Любой подтверждённый вывод
- Конец дня (daily snapshot)
Важно: Только подтверждённые (confirmed) денежные потоки влияют на расчёт TWR.
3.7. Модуль прибыльности направлений¶
Приоритет: Средний · Срок: Фаза 2 (3 мес.)
Требования¶
| № | Задача | Детали |
|---|---|---|
| 1 | Прибыльность направления за период | На базе позиций и сделок |
| 2 | Загрузка исторических данных | До запуска системы |
| 3 | Ручная корректировка | |
| 4 | Ролевой доступ | Ограничения по ролям |
Направления¶
- DeFi portfolio
- Private deals portfolio
- Market positions portfolio
- TOTAL Crypto portfolio
3.8. Модуль управления инвесторами (Investor Management)¶
Приоритет: Средний · Срок: Фаза 2
Концепция¶
Система поддерживает учёт индивидуальных инвесторов (LP) с их датами входа, взносами и пропорциональной доходностью. Каждый инвестор видит доходность, рассчитанную от своей даты входа.
Профиль инвестора¶
| Поле | Описание |
|---|---|
| Имя | Имя инвестора |
| Контактный email (для аутентификации) | |
| Дата входа | Дата присоединения к фонду |
| Начальная инвестиция | Первоначальный взнос (USD) |
| Текущая доля | Процент владения в фонде |
| Статус | Active / Exited / Pending |
| Привязанный пользователь | Ссылка на аккаунт в системе |
События капитала (Capital Events)¶
| Тип события | Описание |
|---|---|
| Initial | Первоначальный взнос |
| TopUp | Дополнительный взнос |
| PartialExit | Частичный выход |
| FullExit | Полный выход |
Для каждого события фиксируется: дата, сумма, NAV фонда на момент события, цена за долю.
Расчёт доли инвестора¶
Вход: share% = investment_amount / fund_nav_at_entry × 100
Довложение: new_shares = topup_amount / current_nav_per_share
Выход: exit_value = shares_sold × current_nav_per_share
Индивидуальный TWR¶
Доходность каждого инвестора рассчитывается от его даты входа:
Пример:
- Фонд стартовал: 1 января 2025
- Инвестор A присоединился: 15 марта 2025
- Текущая дата: 30 января 2026
- TWR фонда (Jan 1 - Jan 30): +45%
- TWR инвестора A (Mar 15 - Jan 30): +28%
Инвестор-портал (часть back.saga.fund)¶
Ограниченный доступ для инвесторов (роль External Viewer):
- Персональный дашборд с их метриками
- График доходности от даты входа
- Таблица помесячной доходности
- Скачивание персональных отчётов
- Нет доступа к данным других инвесторов и отдельным позициям
Реализуется через ролевую систему на back.saga.fund, не как отдельный поддомен.
3.9. Система уведомлений (Alerts)¶
Приоритет: Низкий · Срок: Фаза 2-3
Типы уведомлений¶
| Тип | Триггер |
|---|---|
| Price Alert | Цена актива пересекает порог |
| Drawdown Alert | Просадка портфеля превышает X% |
| Position Size Alert | Одна позиция > X% портфеля |
| Chain Concentration | Одна сеть > X% портфеля |
| Inactivity Alert | Нет транзакций X дней |
| Large Transaction | Депозит/вывод > X USD |
Каналы уведомлений¶
- Telegram Bot — основной канал
- Email — для важных уведомлений
- In-app notifications — в интерфейсе системы
4. Роли и безопасность¶
4.1. Система ролей¶
| Роль | Описание | Доступ |
|---|---|---|
| Full Access | Полный доступ | Все модули, редактирование, настройки |
| Analytics Only | Только аналитика | Просмотр отчётов, дашбордов без редактирования |
| DeFi Only | Только DeFi | DeFi позиции, стратегии |
| Transactions & CF | Транзакции и CF | История транзакций, Cash Flow |
| External Viewer | Внешний пользователь | Ограниченные отчёты (для инвесторов в app.saga.fund) |
4.2. Требования безопасности¶
- Аутентификация — интеграция с существующей системой Supabase Auth
- Авторизация — ролевая модель доступа (RBAC)
- Audit log — логирование всех действий пользователей
- Шифрование — TLS для всех соединений, шифрование чувствительных данных в БД
- Multi-tenant изоляция — клиенты видят только свои кошельки/позиции/отчёты; администраторы имеют полный доступ
5. Интеграции¶
5.1. Блокчейн API и агрегаторы¶
5.1.1. Сети для первой фазы (минимально необходимый список)¶
EVM-сети:
| Сеть | Приоритет |
|---|---|
| Ethereum | Критичный |
| Avalanche | Критичный |
| Arbitrum | Критичный |
Non-EVM сети (из TRD):
| Сеть | Приоритет | Примечание |
|---|---|---|
| Solana | Высокий | 2 кошелька в TRD |
| SUI | Средний | 1 кошелёк в TRD |
| TON | Средний | 1 кошелёк в TRD |
✅ Исследование завершено (2026-02-02). Ни один сервис не покрывает все сети. Рекомендуется гибридный подход из 3 API.
Результаты практического тестирования кошельков¶
Проверены реальные балансы через публичные RPC:
| Сеть | Кошелёк | Результат |
|---|---|---|
| BSC | 0x72Ea177...6565 | ~0.1 BNB |
| Arbitrum | 0x72Ea177...6565 | ~0.014 ETH |
| Base | 0x72Ea177...6565 | ~0.0037 ETH |
| Arbitrum | 0x04F461A...021C | ~0.005 ETH |
| Solana | HWErhALt...DC1q | ~0.078 SOL + 6 SPL токенов |
| SUI | 0x729b23a...0e0b | ~8.42 SUI |
| TON | UQBrh14W...LD9w | 0 (неактивирован) |
Сравнение API агрегаторов¶
| Сервис | EVM | Solana | SUI | TON | Free Tier | DeFi |
|---|---|---|---|---|---|---|
| Zerion | 38+ chains | ✅ | ❌ | ❌ | 100K credits/мес | 8000+ протоколов |
| Moralis | 19+ chains | ✅ | ❌ | ❌ | 40K CU/день | ✅ |
| DeBank | 14+ chains | ❌ | ❌ | ❌ | ❌ Платный | ✅ Лучшее |
| Zapper | 50+ chains | ❌ | ❌ | ❌ | 10K points/мес | ✅ |
| Sui RPC | ❌ | ❌ | ✅ | ❌ | Бесплатно | ❌ |
| tonapi.io | ❌ | ❌ | ❌ | ✅ | 1 req/4s | Jettons, NFT |
Рекомендуемая архитектура (3 API)¶
┌─────────────────────────────────────────────────────────────┐
│ WALLET AGGREGATION │
├───────────────────┬─────────────────┬───────────────────────┤
│ EVM + Solana │ SUI │ TON │
│ ───────────── │ ───────── │ ────────── │
│ Zerion API │ Sui RPC │ tonapi.io │
│ (основной) │ (бесплатный) │ (основной) │
│ │ │ │
│ Moralis API │ — │ TON Center v2 │
│ (backup) │ │ (backup) │
└───────────────────┴─────────────────┴───────────────────────┘
EVM + Solana¶
| Приоритет | Сервис | Причина |
|---|---|---|
| Основной | Zerion API | Единый запрос на все EVM + Solana, 8000+ DeFi протоколов, NFT, PnL. Уже используется в Saga |
| Backup | Moralis API | Хорошее Solana покрытие, 40K CU/день бесплатно |
| Fallback | Публичные RPC | Для raw балансов (требует N запросов на N сетей) |
SUI¶
| Приоритет | Сервис | Причина |
|---|---|---|
| Основной | Sui Official RPC (fullnode.mainnet.sui.io) |
Бесплатный, без лимитов, полные данные через suix_getAllBalances |
| Backup | Ankr RPC | Если официальный недоступен |
TON¶
| Приоритет | Сервис | Причина |
|---|---|---|
| Основной | tonapi.io | Богатые данные: jettons, NFT, DeFi позиции |
| Backup | TON Center API v2 | Официальный, стабильный |
Вывод¶
Один сервис не покрывает все сети. Минимально необходимо 3 интеграции:
- Zerion API — EVM (38+ chains) + Solana
- Sui Official RPC — SUI (бесплатный, без API key)
- tonapi.io — TON (бесплатный tier с rate limit)
Ограничения исследования¶
⚠️ Требуется дополнительная проверка перед продакшном:
- Zerion/Moralis — не тестировались с API key (рекомендация на основе документации)
- DeFi позиции — проверены только балансы, не протоколы
- Ethereum mainnet, Avalanche — не тестировались напрямую (только L2)
- Tron — не тестировался (хотя упоминается в требованиях)
- TON кошелёк — показал 0 баланс (возможно неактивирован или тестовый)
5.2. Курсы валют¶
✅ Исследование завершено (2026-02-02). Рекомендуется DeFiLlama как основной источник.
Сравнение API¶
| API | Free Tier | Rate Limits | Исторические | DeFi/LP токены | API Key |
|---|---|---|---|---|---|
| DeFiLlama | ✅ Да | Без лимита | ✅ Да | ✅ Отлично | Нет |
| CoinGecko | ✅ Да | 5-30 req/min | ⚠️ Ограничено | Частично | Нет |
| CryptoCompare | ✅ Да | ~2000/день | ✅ Да | ❌ Нет | Нет |
| CoinMarketCap | ✅ Да | 10K/месяц | ❌ Платно | Частично | Да |
| Frankfurter | ✅ Да | Без лимита | ✅ С 1999 | N/A (EUR/USD) | Нет |
Рекомендуемая архитектура¶
| Тип | Основной | Backup | Примечание |
|---|---|---|---|
| Крипто → USD | DeFiLlama | CryptoCompare | DeFiLlama поддерживает LP токены и DeFi |
| EUR/USD | Frankfurter API | ECB напрямую | Данные ECB, обновление 1 раз/день |
| USDT/USDC/USD | Фиксация = 1.00 | DeFiLlama | Для избежания паразитных искажений |
Примеры запросов¶
DeFiLlama — текущие цены:
curl -s "https://coins.llama.fi/prices/current/coingecko:ethereum,coingecko:solana,coingecko:sui,coingecko:the-open-network"
DeFiLlama — исторические цены (timestamp):
# 1 января 2025 = 1735689600
curl -s "https://coins.llama.fi/prices/historical/1735689600/coingecko:ethereum"
DeFiLlama — по адресу контракта (LP токены):
Frankfurter — EUR/USD:
ID токенов для DeFiLlama¶
| Токен | DeFiLlama ID |
|---|---|
| ETH | coingecko:ethereum |
| BNB | coingecko:binancecoin |
| SOL | coingecko:solana |
| SUI | coingecko:sui |
| TON | coingecko:the-open-network |
| ARB | coingecko:arbitrum |
| USDC | coingecko:usd-coin |
| USDT | coingecko:tether |
Особенности¶
- DeFiLlama возвращает
confidencescore для каждой цены (0.99 = надёжно) - LP токены поддерживаются по адресу контракта
- CoinGecko агрессивно лимитирует (часто 429 ошибки)
- Frankfurter — обёртка над ECB, JSON формат (удобнее чем XML от ECB)
5.3. Интеграция с app.saga.fund¶
- Единая система данных о позициях и балансах
- API для отображения инвесторам куда вложены средства
- Синхронизация в реальном времени
6. Отчёты и дашборды¶
6.1. Список дашбордов¶
| № | Дашборд | Содержание |
|---|---|---|
| 1 | Остатки | Операционные остатки по счетам (крипта + USD) |
| 2 | Транзакции | История всех транзакций в хронологическом порядке |
| 3 | Позиции | Открытые позиции и их текущая стоимость |
| 4 | DeFi Portfolio | Стратегии, доходность, статусы |
| 5 | Private Deals | Частные сделки с APY и прибылью |
| 6 | Market Positions | Рыночные позиции (ETH, TON и др.) |
| 7 | Cash Flow | OCF/ICF/FFCF помесячно |
| 8 | Доходность (APY) | APY по портфелю и позициям |
| 9 | Графики | Pie chart состава портфеля + линейный график стоимости |
6.2. Типы отчётов (согласно KR4-3)¶
Всего 9 типов отчётов:
- Остатки по кошелькам/счетам
- История транзакций
- Классификация транзакций
- Позиции/сделки
- DeFi доходность
- Cash Flow
- APY по портфелю
- Прибыльность направлений
- Состав портфеля (визуализация)
6.3. Визуализации¶
Pie Chart:
- Состав портфеля по категориям транзакций
- Состав по типам позиций (DeFi / Private / Market)
- Распределение по блокчейнам
Линейные графики:
- Изменение стоимости портфеля во времени
- Изменение стоимости каждой позиции
- Основные метрики CF
Таблицы:
- Все дашборды с сортировкой и фильтрацией
- Экспорт в CSV
6.4. Периоды отчётности¶
- 1D, 7D, 1M, 3M, 6M, YTD, 1Y, ALL
- Кастомный промежуток времени (любые даты)
- Сравнение с benchmark (BTC, ETH, S&P 500) — опционально
6.5. Экспорт в Excel (XLSX)¶
Структура файла Position Report¶
| Лист | Содержание |
|---|---|
| Summary | Ключевые метрики, период, итоговые значения |
| Positions | Полный список позиций со всеми колонками |
| Transactions | История депозитов/выводов |
| Daily Performance | Дата, NAV, дневная доходность |
Фильтры перед экспортом¶
- Диапазон дат (calendar picker)
- Конкретные сети
- Тип сделки (Public/Private)
- Статус позиции
6.6. Отчёты для инвесторов¶
Индивидуальный отчёт инвестора (XLSX/PDF)¶
Страница 1: Summary
- Имя инвестора
- Дата входа
- Начальная инвестиция
- Дополнительные взносы
- Текущая стоимость
- Общая доходность (% и абсолютная)
- TWR с даты входа
- IRR (если несколько cash flows)
Страница 2: Monthly Performance
| Месяц | Начало | Взносы | Выводы | Конец | Доходность % |
|---|---|---|---|---|---|
| Mar 2025 | $100,000 | $0 | $0 | $103,500 | +3.5% |
| ... | ... | ... | ... | ... | ... |
Страница 3: Capital Events History
- Все взносы и выводы
- NAV на момент каждого события
- Доля % после каждого события
Bulk-генерация отчётов¶
Администратор может сгенерировать отчёты для всех инвесторов:
- Выбрать период (Q4 2025)
- Получить ZIP с индивидуальными PDF
- Или один XLSX с каждым инвестором на отдельном листе
7. Технические требования¶
7.1. Инфраструктура¶
| Параметр | Значение |
|---|---|
| Сервер | TEST VPS (188.42.218.164, saga.surf) — для разработки и тестирования |
| Архитектура | Расширение существующего Go backend + Next.js frontend |
| БД | PostgreSQL (существующая) |
| Контейнеризация | Docker (существующая инфраструктура) |
7.2. Производительность¶
| Метрика | Целевое значение |
|---|---|
| Обновление балансов | ≤ 30 минут |
| Обновление транзакций | ≤ 15 минут |
| Генерация отчёта | ≤ 5 минут |
| API response time | ≤ 500ms (p95) |
7.3. Конфигурация кошельков¶
# Пример структуры конфигурации
wallets:
- address: "T..."
network: tron
label: "Main Operations"
track_transactions: true
track_balance: true
- address: "0x..."
network: ethereum
label: "DeFi Strategies"
track_transactions: true
track_balance: true
Примеры кошельков из TRD¶
EVM:
0x72Ea177FC9Ed87BdC17066256DffBbb0d65d65650x04F461Af0894C871D3997B29EAc293260f68021C
Solana:
BpzisE51JpfBYJX7XCfLMyLYKhg675Nyjwum19TePpTHHWErhALt5AnfdaQ53QruwX4ASBNnbt7cuqvu6L67DC1q
SUI:
0x729b23ad4b02226c0ea1585bd45e5e550594afb9bd708d967e51e962a1d30e0b
TON:
UQBrh14WUt1Hx2NQfzw0Rk7FcC5WKAXMk8IgFWv6xry_LD9w
7.4. Оценка объёма данных¶
⚠️ Важно для планирования: Исторические данные из блокчейна могут занимать значительный объём. Текущая БД Saga маленькая, что позволяет хранить много бекапов. При большом объёме нужна стратегия хранения.
Прогноз объёма (консервативная оценка)¶
| Данные | Объём записи | Записей/год | Объём/год |
|---|---|---|---|
| Транзакции | ~500 bytes | 500K - 2M | 250MB - 1GB |
| Daily portfolio snapshots | ~200 bytes | 365 | ~100KB |
| Daily investor snapshots | ~200 bytes | 365 × N investors | ~100KB × N |
| Позиции | ~1KB | 1K - 10K | 1MB - 10MB |
| Audit log | ~300 bytes | 100K | ~30MB |
Итого за год: ~300MB - 1.5GB (без учёта индексов)
За 5 лет (требование retention): 1.5GB - 7.5GB
Стратегии оптимизации (если потребуется)¶
- Архивирование старых данных — перенос данных старше X лет в cold storage
- Агрегация — хранить детальные данные за последний год, агрегированные за предыдущие
- Партиционирование таблиц — по дате для быстрого удаления старых партиций
- Отдельная БД — вынести исторические данные back-office в отдельную БД
Append-only подход¶
Для обеспечения исторических срезов используется append-only архитектура:
- Нет UPDATE на исторических данных
- Новые версии создаются как новые записи
- Soft-delete через статусы, не через DELETE
- Полная история изменений доступна
8. Фазы реализации¶
Фаза 1: Сбор данных и базовая классификация (Q1)¶
Срок: 3 месяца
Результат:
- ✅ Подключены все целевые блокчейны
- ✅ Автоматический сбор балансов и транзакций
- ✅ Базовая система классификации с правилами
- ✅ UI для ручной классификации
- ✅ Дашборд остатков
Deliverables:
- Модуль сбора остатков
- Модуль истории транзакций
- Модуль классификации
- Базовая система ролей
Фаза 2: Позиции и отчётность (Q1-Q2)¶
Срок: 3 месяца
Результат:
- ✅ Формирование позиций из транзакций
- ✅ Расчёт APY и прибыльности
- ✅ Cash Flow отчётность
- ✅ Все 9 типов отчётов
Deliverables:
- Модуль позиций/сделок
- Модуль Cash Flow
- Модуль доходности
- Визуализации (графики)
Фаза 3: Интеграция с app.saga.fund (Q2)¶
Срок: 1-2 месяца
Результат:
- ✅ Единая система данных
- ✅ API для внешних пользователей
- ✅ Отображение инвестиций в app.saga.fund
Deliverables:
- API интеграция
- Компоненты для app.saga.fund
- Документация
9. Открытые вопросы¶
Вопросы, требующие уточнения у заказчика перед началом разработки
9.1. Бизнес-вопросы¶
| № | Вопрос | Контекст |
|---|---|---|
| 1 | ✅ Определено. EVM: Ethereum, Avalanche, Arbitrum. Non-EVM: Solana, SUI, TON. См. раздел 5.1.1. | |
| 2 | ✅ 6 кошельков из TRD (2 EVM, 2 Solana, 1 SUI, 1 TON). См. раздел 7.3. | |
| 3 | ✅ Да. Отдельные клиенты видят только свои кошельки/позиции. Администраторы имеют полный доступ ко всему. | |
| 4 | Формат исторических данных? | Откуда импортировать off-chain сделки до запуска системы |
| 5 | ✅ back.saga.fund |
9.2. Функциональные вопросы¶
| № | Вопрос | Контекст |
|---|---|---|
| 6 | Полный список финансовых категорий | В 3.3 указано "до 5" с примерами. Нужно подтверждение: это финальный список или примеры? |
| 7 | Полный список DeFi категорий | В 3.3 указано "до 5" с примерами. Нужно подтверждение: это финальный список или примеры? |
| 8 | Примеры правил классификации | Для формирования шаблонов (см. примеры в 3.3, нужно больше реальных кейсов) |
| 9 | Формула расчёта прибыли по сделке | В требованиях "по предоставленной формуле". Предложение: Profit = Close - Start. Нужно подтверждение. |
| 10 | ✅ Определено в разделе 3.5 и Приложении C: OCF/ICF/FFCF структура |
9.3. Интеграционные вопросы¶
| № | Вопрос | Контекст |
|---|---|---|
| 11 | ✅ Исследование завершено. DeFiLlama (основной) + CryptoCompare (backup). Бесплатные, без API key, поддержка DeFi/LP токенов. См. раздел 5.2. | |
| 12 | ✅ Определено. Крипто: DeFiLlama /prices/historical/{timestamp}. EUR/USD: Frankfurter API (данные ECB). См. раздел 5.2. |
9.4. Вопросы по ролям¶
| № | Вопрос | Контекст |
|---|---|---|
| 13 | Детальная матрица разрешений по ролям | Что именно видит/редактирует каждая роль? |
| 14 | ✅ Нет. Фиксированный набор ролей, настройка только через конфиг (не через UI). |
9.5. Вопросы из TRD (новые)¶
| № | Вопрос | Контекст |
|---|---|---|
| 15 | ✅ Исследование завершено. См. раздел 5.1. Рекомендация: Zerion (EVM+Solana) + Sui RPC + tonapi.io. Один сервис не покрывает все сети. | |
| 16 | ✅ Да, можно включить. API доступны и бесплатны: Sui Official RPC (без лимитов), tonapi.io (1 req/4s). Интеграция несложная. | |
| 17 | Risk Metrics (Sharpe, Drawdown, VaR) — в какой фазе? | В TRD помечены как PREMIUM. Нужны ли вообще? Если да — в Phase 1 или Phase 2? |
| 18 | ✅ Нет. Часть back.saga.fund с ограниченным доступом по ролям. | |
| 19 | Benchmark comparison — нужен? | Сравнение с BTC/ETH/S&P 500 на графиках. Требует дополнительных источников данных. |
| 20 | Vesting schedules для private deals — нужен учёт? | В TRD есть поле vesting_schedule (JSON). Актуально для SAFT и подобных сделок. |
Приложения¶
Приложение A: Структура CRYPTO portfolio (образец)¶
CRYPTO portfolio
├── DeFi ($170 → $189, APY 433.81%)
│ ├── Active positions
│ │ ├── Drift USDC ($10 → $11, APY 43.5%, active)
│ │ ├── PT-dUSD ($10 → $11, APY 43.5%, active)
│ │ ├── PT-syUSD (looped) ($10 → $12, APY 86.9%, loan)
│ │ └── ...
│ └── Closed positions
│ ├── PT-aIUSD ($10 → $10, APY 0%, closed)
│ └── PT-iUSD ($10 → $11, APY 521.4%, closed)
│
├── Private deals ($50 → $55, APY 14.96%)
│ ├── Ember ($10, APY fact 70.2%, closed)
│ ├── INK call option ($10, APY fact 39.7%, closed)
│ ├── Linea ($10, stop)
│ └── ...
│
└── Market positions ($20 → $60, ROI 200%)
├── ETH ($10 → $30, ROI 200%, active)
└── TON ($10 → $30, ROI 200%, active)
TOTAL: $249, Weekly profit: $64
Приложение B: Глоссарий¶
| Термин | Определение |
|---|---|
| NAV | Net Asset Value — общая стоимость портфеля |
| TWR | Time-Weighted Return — доходность, исключающая влияние денежных потоков |
| APY | Annual Percentage Yield — годовая доходность |
| PnL | Profit and Loss — прибыль и убытки |
| SAFT | Simple Agreement for Future Tokens — соглашение о будущих токенах |
| LP | Limited Partner — инвестор фонда |
| IRR | Internal Rate of Return — внутренняя норма доходности |
| Drawdown | Просадка — максимальное падение от пика |
| VaR | Value at Risk — стоимость под риском |
Приложение C: Структура Cash Flow (образец)¶
Currency: EUR
X-rate EUR/USD: 1.03 (2024) → 1.15 (план 2025)
OCF (Операционный поток)
├── Total Payroll (Payroll Net, Tax + SSC)
├── Outsource (Legal, Tech, Scouting)
├── Administrative (Set up, Providers, G&A, Office, Fees, Consulting)
├── IT (DB, CRM, Hardware)
├── Commercial (MICE, PR, Travel)
└── Contingency
ICF (Инвестиционный поток)
├── New investments (VC/PE)
├── Loans (Outbound, Inbound)
└── Proceeds
FFCF (Финансовый поток)
├── Займы от UBO
├── Прочие источники фондирования
└── Дивиденды
История изменений¶
| Версия | Дата | Автор | Изменения |
|---|---|---|---|
| 0.1.0 | 2026-01-29 | — | Начальная версия на основе OKR и требований |
| 0.2.0 | 2026-01-30 | — | Интеграция TRD: TWR методология, Investor Management, оценка объёма данных, система уведомлений (Telegram + Email), расширенные отчёты, 6 новых вопросов |
| 0.2.1 | 2026-01-30 | — | Расширенный обзор API: Zerion (основной, уже в Saga), Moralis, Zapper, rotki. Добавлены API для SUI (Suiscan, gRPC) и TON (TON Center, TON Tracker). Понятное объяснение TWR с примером |
| 0.3.0 | 2026-01-30 | — | Убрана ручная секция Содержание (MkDocs генерирует автоматически), метаданные модулей в blockquote формате |
| 0.3.1 | 2026-01-30 | — | Убраны конкретные цифры из таблицы блокчейнов. Исправлено форматирование списков. Закрыты вопросы 6, 7, 9, 10 (ответы уже в документе) |
| 0.4.0 | 2026-02-02 | — | Исследование API агрегаторов. Тестирование кошельков через публичные RPC. Рекомендация: 3 API. Закрыты вопросы 15, 16. Добавлены ограничения исследования |
| 0.4.1 | 2026-02-02 | — | Критический пересмотр. Открыты обратно вопросы 6, 7, 9 (требуют подтверждения заказчика). Уточнён статус вопросов 11, 12. Итого открытых: 10 |
| 0.5.0 | 2026-02-02 | — | Исследование API курсов завершено. DeFiLlama (крипто) + Frankfurter (EUR/USD). Примеры curl запросов. Закрыты вопросы 11, 12. Итого открытых: 8 |
Следующий шаг: Согласование открытых вопросов (раздел 9) с заказчиком перед детализацией спецификации.