outsource-m8-docs/2025-10-01, M8 Project.md

7.9 KiB
Raw Blame History

Цель

Один экран. Депозит 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

flowchart TD
    A[Подключение кошелька TON Connect] --> B[Единый экран: баланс USDT и M8, APY, калькулятор]
    B -->|Внести| C[Ввод суммы USDT и подтверждение в кошельке]
    C --> D[USDT jetton master получает USDT]
    D --> E[Treasury получает USDT<br/>в той же транзакции]
    D --> F[Минт M8 пользователю<br/>в той же транзакции]
    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

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

Последовательности

Депозит в одной транзакции

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

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 погашен

Архитектура

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.
  • Балансы и события консистентны по ончейну и в БД. Ошибки отсутствуют в логах.