8.1 KiB
8.1 KiB
M8 на TON — техническое задание
1. Дизайн и UX
-
Референс: @wallet.
-
Адаптация под требования и бренд включена в стоимость.
-
Структура:
- Экран Главный: баланс, APY, калькулятор, «Внести/Вывести», история.
- Экран Рефералы: уникальная ссылка
/?r=<TON_ADDRESS>, описание программы, сводка начислений.
2. Пользовательский доступ
- Доступ к функциям и истории после привязки TON-адреса.
3. Депозит
- Вызов функции в M8 Jetton Master с
amountUSDTи опциональнымrefAddr. - Перевод USDT в Treasury.
- Минт M8 на адрес пользователя.
refAddrиспользуется бэкендом для расчёта реферальных начислений.
4. Начисления
-
APY задаётся в админ-панели.
-
Ежедневно в фиксированный час бэкенд записывает начисления за сутки.
-
Реферальные начисления:
- Тип 1: фиксированная отложенная выплата по тиру депозита, выплата через N месяцев.
- Тип 2: начисления на доход реферала по ставке, начиная с заданного месяца.
5. Вывод
- Запрос подписи параметров выплаты на бэкенде.
- Бэкенд считает итоговую сумму с учётом всех неиндексированных начислений и подписывает параметры.
- Развёртывание смарт-контракта выплаты с подписью.
- Выплата USDT владельцу контракта и закрытие контракта.
- Опционально: NFT-интерфейс для смарт-контракта выплаты (видимость и передача права требования).
6. Учёт баланса M8
- Вариант A: ончейн-баланс M8 не синхронизируется; на экране показывается оценочный баланс = ончейн + оффчейн.
- Вариант B: периодический доминт M8 на ончейн при достижении порога; при выплате сумма берётся из подписи бэкенда с учётом хвостов.
7. Админ-панель
- Просмотр: пользователи, депозиты, начисления (APY, тип 1, тип 2), контракты выплат, выплаты.
- Настройки: APY, реферальные тиры и задержки, ставка и стартовый месяц для типа 2, час ежедневного расчёта.
- Действия: подготовка выплат, закрытие выплат, экспорт.
8. Бэкенд (Python)
-
FastAPI, PostgreSQL, SQLAlchemy, TonSDK.
-
Ежедневный расчёт начислений.
-
Индексатор событий.
-
Подпись параметров выплат.
-
API:
GET /balances?address=GET /history?address=&cursor=POST /deposit/quotePOST /payout/prepareGET /referrals/summaryPOST /admin/apyPOST /admin/ref-configPOST /admin/close-payoutPOST /events
9. Данные
users(address, referrer)deposits(tx_hash, address, usdt_amount, ref_addr, at)accruals_offchain(id, address, kind(APY|REF1|REF2), amount, day, status)payout_contracts(id, address, amount_signed, signature, created_at, status)payouts(id, contract_id, to, usdt_amount, tx_hash, at)audit(id, actor, action, at)
Диаграммы (Mermaid)
User Flow
flowchart TD
A[Подключить кошелек] --> B[Экран Главный]
B --> C[Внести: вызвать M8 Master с параметрами]
C --> D[USDT перевод в Treasury]
C --> E[Минт M8 на адрес пользователя]
B --> F[Вывести: запрос подписи на бэкенде]
F --> G[Бэкенд возвращает подпись и сумму]
G --> H[Создание контракта выплаты]
H --> I[Выплата USDT и закрытие]
A --> R[Экран Рефералы]
R --> RS[Копирование ссылки и просмотр сводки]
Money Flow — Вариант A
flowchart LR
U1[USDT у пользователя] --> M8M[M8 Master]
M8M --> TR[Treasury]
M8M --> UM[M8 у пользователя]
BE[Бэкенд] --> DB[База данных]
IDX[Индексатор] --> DB
BE --> PC[Контракты выплат]
UM --> PC
Money Flow — Вариант B
flowchart LR
U1[USDT у пользователя] --> M8M[M8 Master]
M8M --> TR[Treasury]
M8M --> UM[M8 у пользователя]
BE[Бэкенд] --> DB[База данных]
IDX[Индексатор] --> DB
BE --> PC[Контракты выплат]
BE --> DM[Доминт при пороге]
DM --> UM
UM --> PC
Daily Calc
sequenceDiagram
participant S as Планировщик
participant BE as Бэкенд
participant DB as База
S->>BE: Запуск расчета за сутки
BE->>DB: Получить пользователей и депозиты
BE->>DB: Добавить начисления APY
BE->>DB: Добавить рефералы тип 2
BE->>DB: Начислить тип 1 по дате
Payout Contract
sequenceDiagram
participant D as Приложение
participant BE as Бэкенд
participant PC as Контракт выплаты
D->>BE: Запрос подписи
BE-->>D: Подпись и параметры
D->>PC: Развернуть контракт
PC-->>BE: Событие создан
Referral Logic
flowchart TD
X1[Реферер копирует ссылку] --> X2[Реферал открывает ссылку]
X2 --> X3[Привязка адреса]
X3 --> X4[Депозит в M8 Master]
X4 --> X5[Бэкенд фиксирует депозит]
X5 --> X6[Создать запись тип 1]
X5 --> X7[Включить в тип 2]
Коммерческие предложения
Вариант A — без ончейн-синхронизации балансов
- Смарт-контракты: $800 M8 Jetton Master (депозит, минт пользователю); смарт-контракт выплаты с проверкой подписи. Опционально NFT-интерфейс без доплаты.
- Бэкенд: $1100 Ежедневные начисления, рефералы тип 1/2, подпись выплат, индексатор, история, API.
- Фронтенд: $400
Экран Главный, экран Рефералы, подключение кошелька, калькулятор, история, депозит с
refAddr, вывод через подпись. - Разворачивание: $200
- Поддержка и правки 30 дней: $0
- Срок: 7 рабочих дней
- Итого: $2500
Вариант B — с ончейн-синхронизацией балансов
- Смарт-контракты: $1200 M8 Jetton Master, смарт-контракт выплаты, доминт по порогу, события.
- Бэкенд: $1100 Начисления, индексатор, доминт при пороге, история, API.
- Фронтенд: $400 Экран Главный, экран Рефералы, без индикации ожидания доминта.
- Разворачивание: $200
- Поддержка и правки 30 дней: $0
- Срок: 14 рабочих дней
- Итого: $2800