diff --git a/2025-10-01, M8 Project.md b/2025-10-01, M8 Project.md deleted file mode 100644 index a6fb2b1..0000000 --- a/2025-10-01, M8 Project.md +++ /dev/null @@ -1,178 +0,0 @@ - -## Цель - -Один экран. Депозит USDT и вывод. Баланс USDT и M8, APY, калькулятор доходности, история. - -## Ключевая логика депозита - -Пользователь инициирует перевод USDT на смартконтракт USDT jetton master. Этот контракт в рамках одной транзакции переводит полученные USDT на адрес Treasury компании и инициирует минт токенов M8 пользователю. Это видно в эмуляции при подтверждении транзакции. - -## Вывод - -Пользователь сжигает M8 на сумму вывода. Минтится NFT claim. Админ платит USDT владельцу NFT и сжигает NFT. - -## Бэкенд Python - -FastAPI для API. Postgres для данных. Celery для начислений APY и задач. Webhook слушатели событий. SQLAlchemy. Uvicorn. Индексатор событий через Toncenter. - -## Пользовательский экран - -Подключение кошелька через TON Connect. Баланс USDT и M8. APY. Калькулятор: сумма USDT и ползунок месяцев. Подпись: вывести можно в любой момент, расчет рекомендационный. Кнопки Внести и Вывести. История. - ---- - -# Mermaid схемы - -## UserFlow - -```mermaid -flowchart TD - A[Подключение кошелька TON Connect] --> B[Единый экран: баланс USDT и M8, APY, калькулятор] - B -->|Внести| C[Ввод суммы USDT и подтверждение в кошельке] - C --> D[USDT jetton master получает USDT] - D --> E[Treasury получает USDT
в той же транзакции] - D --> F[Минт M8 пользователю
в той же транзакции] - F --> B - - B -->|Вывести| G[Ввод суммы M8] - G --> H[Burn M8 и mint NFT claim] - H --> I[Админ‑панель видит claim] - I --> J[Админ отправляет USDT владельцу NFT] - J --> K[Burn NFT claim и обновление истории] - K --> B -``` - -## MoneyFlow - -```mermaid -flowchart LR - subgraph User[Пользовательский кошелек] - UUSDT[USDT Jetton]:::tok - UM8[M8 Jetton]:::tok - UNFT[NFT Claim]:::nft - end - - subgraph TON[Сеть TON] - USDTM[USDT Jetton Master]:::sc - Trea[Treasury компании]:::sc - M8M[M8 Jetton Master]:::sc - NFTC[NFT Claim Collection]:::sc - end - - subgraph Offchain[Сервер Python] - API[FastAPI]:::srv - IDX[Индексатор событий]:::srv - APY[Планировщик APY Celery]:::srv - ADM[Админ‑панель]:::srv - DB[(PostgreSQL)]:::db - end - - UUSDT -->|transfer| USDTM - USDTM -->|в той же tx| Trea - USDTM -->|trigger mint| M8M -->|mint| UM8 - - UM8 -->|burn для вывода| NFTC -->|mint| UNFT - ADM -->|платеж USDT по claim| UUSDT - ADM -->|burn claim| NFTC - - IDX --> DB - API <--> DB - ADM --> API - IDX --> API - API <--> TON - IDX <--> TON - - classDef tok stroke-width:1 - classDef nft stroke-width:1 - classDef sc stroke-width:1 - classDef srv stroke-width:1 - classDef db stroke-width:1 -``` - -## Последовательности - -### Депозит в одной транзакции - -```mermaid -sequenceDiagram - participant U as dApp - participant W as TON Wallet - participant M0 as USDT Jetton Master - participant T as Treasury - participant M8 as M8 Jetton Master - participant X as Индексатор - - U->>W: Подписать transfer USDT (amount, ref) - W-->>M0: transfer USDT - M0-->>T: внутренний перевод USDT на Treasury - M0-->>M8: вызов mint M8(to=user, ref) в той же tx - M8-->>U: Баланс M8 увеличен - M0-->>X: события transfer и mint зафиксированы -``` - -### Вывод через NFT claim - -```mermaid -sequenceDiagram - participant U as dApp - participant M8 as M8 Master - participant N as NFT Collection - participant A as Admin App - participant T as USDT Jetton - participant X as Индексатор - - U->>M8: Burn M8(amount, claimId) - M8-->>N: Mint NFT claim(to=user, amount, claimId) - N-->>X: Событие claim создан - A->>T: Transfer USDT(to=ownerOf(claimId), amount) - A->>N: Burn NFT(claimId) - N-->>X: Событие claim погашен -``` - -## Архитектура - -```mermaid -flowchart LR - FE[Frontend SPA React + TON Connect] --> API[FastAPI] - AP[Админ‑панель React] --> API - API --> DB[(PostgreSQL)] - IDX[Индексатор Python] --> DB - APY[Celery планировщик] --> API - API --> TON[(TON RPC)] - IDX --> TON -``` - ---- - -# API кратко (Python FastAPI) - -- GET /balances?address=addr -- POST /apy/set body: {apy} ролевая защита админ -- POST /payout body: {claim_id} атомарная выплата и burn -- GET /claims my -- Webhooks: /events USDT, M8, NFT с HMAC -- Cron Celery: ежедневный mint по списку адресов - - ---- - -# Коммерческое предложение 2500 USD - -| Блок | Стоимость | Состав работ | -| ---------------------------------------------- | --------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Смартконтракты TON | 1300 | M8 Jetton Master с admin mint и burn. NFT Claim коллекция. Сценарий депозит через USDT master с автопереводом в Treasury и вызовом mint M8. Скрипты деплоя и верификации. | -| Frontend | 300 | Один экран, TON Connect, калькулятор APY, модалки Внести и Вывести, история, интеграция FastAPI. | -| Backend Python | 700 | FastAPI, PostgreSQL, SQLAlchemy, Celery планировщик APY, индексатор событий, RBAC админ, журналы, вебхуки. | -| Настройка на арендованном клиентом VPS сервере | 200 | Docker Compose, Nginx, TLS, среды, логи, базовый мониторинг. | -| Правки | 0 | Разумные правки в пределах описываемого функционала | - -Сумма 2500 USD. - ---- - -# Критерии приемки - -- Депозит USDT на USDT master приводит к переводу USDT на Treasury и минту M8 пользователю в одной транзакции. История фиксирует оба события. -- Ежедневное начисление M8 по APY проходит корректно и идемпотентно -- Вывод: burn M8, mint NFT claim, выплата USDT владельцу NFT, burn NFT. -- Балансы и события консистентны по ончейну и в БД. Ошибки отсутствуют в логах.