Files
pump-game-ops/README.md
T
subochev 1d49468920 docs(security): нумерация пунктов чек-листа SEC-1..SEC-15
Сквозные номера не сбиваются при добавлении/закрытии пунктов внутри
разделов. В SEC-4 фикс ссылается на SEC-1/SEC-2. В сводке — раскладка
по важности.
2026-09-13 12:42:27 +03:00

77 lines
6.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# pump-game-ops — мета-репозиторий проекта «Бинарная ракета» (Binary Rocket)
Единая точка для **сервисной документации, принятых решений и списка задач** проекта
мемкойн-игры на pump.fun. Кода тут нет — только то, что связывает компоненты между собой
(индексация), и что не живёт в конкретных репозиториях.
## Что это и зачем
У нас много компонентов (фронт, бэкенд, контракт, релейер). Здесь мы ведём:
- **карту репозиториев** (кто за что отвечает, где какая часть),
- **журнал решений** (почему так, а не иначе — ADR),
- **экономику токена** (свой мемкойн, курс, decimals, mint-адреса),
- **список задач/статусы** (трекаем весь проект тут — включая задачи, встающие на
кросс-компонентные решения: `forkable`/`pivotable` и т.п.).
## Карта репозиториев
| # | Компонент | Репозиторий | Путь (локально) | Язык/стек | Роль |
|---|---|---|---|---|---|
| 1 | **Смарт-контракт (оригинал)** | `akovalenko/Smart-game` | `~/WORK/games/Smart-game` | Rust/Anchor (Solana) | игровая логика ставок вверх/вниз, ваулт, выплата (**SOL**, не трогаем) |
| 1b | **Смарт-контракт (фантики)** | `subochev/smart-updown-token` | `~/WORK/games/smart-updown-token` | Rust/Anchor (Solana) | копия Smart-game для перевода на наши фантики (SPL-токен) — **работаем тут** |
| 2 | **Бэкенд (релейер)** | `subochev/smart-updown-server` | `~/WORK/games/smart-updown-server` | Kotlin/Spring Boot + solanaj | ретрансляция ставок, свап-клиент к pump.fun, релейер |
| 3 | **Фронт (Unity)** | `subochev/fun-game-front2` | `~/WORK/games/fun-game-front2` | Unity WebGL + Phantom | UI, кошелёк, подпись create_bet |
| 4 | **Тестовый фронт** | `subochev/test-front` | `~/WORK/games/test-front` | HTML/JS + Phantom | технический дашборд для ручного теста экономики (пополнение/ставка/вывод) без Unity |
| 5 | **Мета-репо (этот)** | `subochev/pump-game-ops` | `~/WORK/games/pump-game-ops` | Markdown | документация, решения, задачи |
> Примечания:
> - Remote-адреса: `https://git.binom.pw/<owner>/<repo>.git`.
> - Ветки: `smart-updown-server` и `fun-game-front2` — `main`; `Smart-game` сейчас на `extract-sources`.
## Внешние зависимости (upstream)
binance-market — это **не часть игры**, а **общий инфраструктурный сервис инвест-кластера**,
который игра «Бинарная ракета» использует как **upstream-провайдер цены SOL**
(вместо заглушки `RandomPriceSource`, см. ADR-006 → ADR-007).
| Компонент | Репозиторий | Путь (локально) | Язык/стек | Роль для игры |
|---|---|---|---|---|
| **binance-market** (upstream цены) | `subochev/binance-market` | `~/common-projects/invest/binance-market` | Kotlin / Spring Boot 3.3.5 WebFlux | собирает рыночные данные с Binance (Binance WS: `depth@100ms` + `aggTrade`); выдаёт last-trade через `GET /ws/price?symbol=<sym>` (порт 8080) и через NATS-топик `market.price.<symbol>`; релейер использует это как **`PriceSource`** (см. ADR-007) |
Контракт между игрой и сервисом:
- **В кластере (предпочтительно):** подписка на NATS-топик `market.price.solusdt` (адрес задаётся
в релейере; прод-адрес см. в его конфиге).
- **Снаружи кластера / тест:** WebSocket `ws://<binance-market-хост>:8080/ws/price?symbol=solusdt`.
- Покрытие символов сейчас: `btcusdt,ethusdt,solusdt` (конфиг `binance.symbols` в values.yaml чарта).
## Принятые решения (сводка)
Ссылка на полный журнал — `docs/DECISIONS.md`. Ключевое:
- **Свой токен** на pump.fun (мемкойн Binary Rocket), не чужой.
- **Курс — живой рыночный** (Способ 1): ставки в фантиках, ввод/вывод через swap.
- **decimals = 6**, токен через **Token-2022** (по доке pump.fun `create_v2`).
- Ставки идут **фантиками через контракт** → контракт переводить с SOL на SPL-токен (это ядро).
- **Цена SOL** — от внешнего upstream `binance-market` (ADR-007), не своя оракуль-логика.
Как ходят данные (кто кому что шлёт, включая согласие/подпись игрока) — `docs/FLOW.md`
(sequence-диаграммы: текущий localnet-режим без Phantom и целевой боевой с pump.fun+Phantom).
## Статус проекта (сводка)
Задачи и статусы — в `TASKS.md` (или `docs/TASKS.md`). Здесь — только верхи:
- [ ] Фаза 0 — экономика (токен, курс, mint) — **в работе**
- [ ] Фаза 1 — контракт на токене — **не начато**
- [ ] Фаза 4 — задействовать свап-клиент — **клиент готов**
- [ ] Фаза 5 — фронт (баланс/пополнение/вывод) — **не начато**
- [ ] Интеграция с `binance-market` (NATS/WS-клиент `PriceSource`) — **см. ADR-007**
## Безопасность
**Открытый чек-лист — `docs/SECURITY.md`** (пункты `SEC-1…SEC-15`, аудит живого стенда 2026-09-13).
Критично на сегодня (`SEC-1…SEC-6`): у контракта нет верхней границы окна закрытия ставки и нет
серверного авто-закрытия — момент расчёта выбирает клиент, что даёт безрисковый арбитраж. Плюс
открытые наружу `/bet`, `/close`, `/faucet` без авторизации.
## Прочее
- Ночная экономика и mint-адреса: `docs/ECONOMY.md` (создаётся в Фазе 0).
- Разделы задач общего характера (например, мок/деплой/стабильность) — в `TASKS.md`.