From ed7d85b3dd8463b6929ed58460a8644703528ad7 Mon Sep 17 00:00:00 2001 From: Caffeine Date: Wed, 9 Sep 2026 18:11:34 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20=D0=BC=D0=B5=D1=82=D0=B0?= =?UTF-8?q?-=D1=80=D0=B5=D0=BF=D0=BE:=20=D0=BA=D0=B0=D1=80=D1=82=D0=B0=20?= =?UTF-8?q?=D1=80=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8=D1=82=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D0=B5=D0=B2,=20=D1=80=D0=B5=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20(A?= =?UTF-8?q?DR),=20=D1=8D=D0=BA=D0=BE=D0=BD=D0=BE=D0=BC=D0=B8=D0=BA=D0=B0?= =?UTF-8?q?=20=D1=82=D0=BE=D0=BA=D0=B5=D0=BD=D0=B0,=20=D1=82=D1=80=D0=B5?= =?UTF-8?q?=D0=BA=D0=B5=D1=80=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++ TASKS.md | 47 +++++++++++++++++++++++++++++++++++++++++++ docs/DECISIONS.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++ docs/ECONOMY.md | 27 +++++++++++++++++++++++++ 4 files changed, 172 insertions(+) create mode 100644 README.md create mode 100644 TASKS.md create mode 100644 docs/DECISIONS.md create mode 100644 docs/ECONOMY.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..9d6d7fd --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# pump-game-ops — мета-репозиторий проекта «Бинарная ракета» (Binary Rocket) + +Единая точка для **сервисной документации, принятых решений и списка задач** проекта +мемкойн-игры на pump.fun. Кода тут нет — только то, что связывает компоненты между собой +(индексация), и что не живёт в конкретных репозиториях. + +## Что это и зачем + +У нас много компонентов (фронт, бэкенд, контракт, релейер). Здесь мы ведём: +- **карту репозиториев** (кто за что отвечает, где какая часть), +- **журнал решений** (почему так, а не иначе — ADR), +- **экономику токена** (свой мемкойн, курс, decimals, mint-адреса), +- **список задач/статусы** (трекаем весь проект тут — включая задачи, встающие на + кросс-компонентные решения: `forkable`/`pivotable` и т.п.). + +## Карта репозиториев + +| # | Компонент | Репозиторий | Путь (локально) | Язык/стек | Роль | +|---|---|---|---|---|---| +| 1 | **Смарт-контракт** | `akovalenko/Smart-game` | `~/WORK/games/Smart-game` | Rust/Anchor (Solana) | игровая логика ставок вверх/вниз, ваулт, выплата | +| 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 | **Мета-репо (этот)** | *(новый)* | `~/WORK/games/pump-game-ops` | Markdown | документация, решения, задачи | + +> Примечания: +> - Remote-адреса: `https://git.binom.pw//.git`. +> - Ветки: `smart-updown-server` и `fun-game-front2` — `main`; `Smart-game` сейчас на `extract-sources`. + +## Принятые решения (сводка) + +Ссылка на полный журнал — `docs/DECISIONS.md`. Ключевое: +- **Свой токен** на pump.fun (мемкойн Binary Rocket), не чужой. +- **Курс — живой рыночный** (Способ 1): ставки в фантиках, ввод/вывод через swap. +- **decimals = 6**, токен через **Token-2022** (по доке pump.fun `create_v2`). +- Ставки идут **фантиками через контракт** → контракт переводить с SOL на SPL-токен (это ядро). + +## Статус проекта (сводка) + +Задачи и статусы — в `TASKS.md` (или `docs/TASKS.md`). Здесь — только верхи: +- [ ] Фаза 0 — экономика (токен, курс, mint) — **в работе** +- [ ] Фаза 1 — контракт на токене — **не начато** +- [ ] Фаза 4 — задействовать свап-клиент — **клиент готов** +- [ ] Фаза 5 — фронт (баланс/пополнение/вывод) — **не начато** + +## Прочее +- Ночная экономика и mint-адреса: `docs/ECONOMY.md` (создаётся в Фазе 0). +- Разделы задач общего характера (например, мок/деплой/стабильность) — в `TASKS.md`. \ No newline at end of file diff --git a/TASKS.md b/TASKS.md new file mode 100644 index 0000000..02aac09 --- /dev/null +++ b/TASKS.md @@ -0,0 +1,47 @@ +# TASKS.md — список задач (трекер проекта) + +Здесь живёт **весь** список задач — не только мои. Трекаем проект целиком. Бинарные составляющие: +- фаркул/pivotable-задачи (что можно отложить или развернуть иначе) помечаются `[pivotable]`; +- общие/инфра (деплой, стабильность, мок) — `[pump.meta]`. + +**Статусы:** `TODO` / `IN_PROGRESS` / `DONE` / `BLOCKED`. + +--- + +## Фаза 0 — Экономика и спека (кросс) +- [ ] **TODO** ADR-002 зафиксирован, документировать `ECONOMY.md`: токен, курс (Способ 1), decimals=6, mint-адреса — `[pump.meta]` +- [ ] **TODO** Решить цену «вверх/вниз» (бенчмарк для контракта) — `[BLOCKED на решение]` +- [ ] **TODO** Кто держит ликвидность swap и комиссии — `[pump.meta]` +- [ ] **TODO** Эмиссия: разовая vs постоянная — `[pump.meta]` + +## Фаза 1 — Контракт на токене (ядро) +- [ ] **TODO** Перевести `smart-updown` с SOL (lamports) на SPL-токен (Token-2022) в `create_bet` +- [ ] **TODO** Выплата в `close_bet` фантиками из ATA-ваулта +- [ ] **TODO** `min/max_amount`, `amount` — в токен-единицах (decimals) +- [ ] **TODO** Обновить IDL + Anchor-тесты, `anchor test` зелёный на localnet + +## Фаза 2 — Релейер и цена +- [ ] **TODO** SolanaClient: подписывать/отправлять токеновую ставку (ATA + ваулт) +- [ ] **TODO** PriceSource: реальная цена (вместо RandomPriceSource) +- [ ] **TODO** Интеграционный тест релейера на токеновом флоу + +## Фаза 4 — Бэкенд: задействовать swap +- [ ] **DONE** Ktor `PumpApiClient` + `POST /agents/swap` + DTO + заготовка (в `smart-updown-server`) +- [ ] **TODO** Проверить реальный swap на devnet (не мок) +- [ ] **TODO** Обвязать `GameService`: ввод/вывод фантиков через swap + +## Фаза 5 — Фронт (Unity) +- [ ] **TODO** Кнопки «Пополнить»/«Вывести», баланс в фантиках +- [ ] **TODO** SolanaBridge.jslib: подпись токеновой create_bet (ATA игрока в ключах) +- [ ] **TODO** Wallet.cs: баланс в фантиках (ATA + getTokenAccountBalance), CanAfford по токену + +## Фаза 6 — E2E и деплой +- [ ] **TODO** Полный круг на devnet: создать токен → swap ввод → ставка токеном → раунд → вывод +- [ ] **TODO** Обновить `API.md`/`INTEGRATION.md`, развернуть на mainnet +- [ ] **TODO** Стабильность: версионировать конфиги, mint-адрес в конфиге + +--- + +## Ссылки +- Решения/экономика: `docs/DECISIONS.md`, `docs/ECONOMY.md` +- Карта репозиториев: `README.md` \ No newline at end of file diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md new file mode 100644 index 0000000..d6b0967 --- /dev/null +++ b/docs/DECISIONS.md @@ -0,0 +1,51 @@ +# DECISIONS.md — журнал решений (ADR) + +Каждое решение — короткая запись, чтобы потом не гадать, почему всё устроено так. +Формат: дата, статус (принято/рассмотрение/заменено), суть, аргументы за/против, результат. + +--- + +## ADR-001 — Используем свой токен на pump.fun (мемкойн Binary Rocket) +- **Дата:** 2026-09-09 +- **Статус:** принято +- **Суть:** выпускаем СВОЙ токен на pump.fun, а не пользуемся чужим. +- **За:** бренд/маркетинг, контроль экономики, стимул игрокам, единая валюта ставок. +- **Против:** надо эмитировать и следить за курсом; чужой токен дал бы меньше работы. +- **Решение:** свой токен. decimals = 6, Token-2022, создание через `create_v2` (по доке pump.fun). + +## ADR-002 — Курс живой рыночный (Способ 1) +- **Дата:** 2026-09-09 +- **Статус:** принято +- **Суть:** вне игры баланс — в фантиках, курс берётся с рынка (bonding curve/AMM pump.fun). + Ввод = swap SOL→фантики, вывод = swap фантики→SOL. Никакой фикс-привязки/стейблока. +- **За:** нативно pump.fun, привычно игроку-трейдеру, технически проще, маркетинг (рост/падение токена). +- **Против:** баланс «гуляет» с рынком; определённым аудиториям неудобно. +- **Решение:** Способ 1. (Это и диктует, что ставки идут фантиками через контракт.) + +## ADR-003 — Ставки идут фантиками через контракт +- **Дата:** 2026-09-09 +- **Статус:** принято (вытекает из ADR-002) +- **Суть:** игрок ставит токен, контракт держит фантики в своём ATA-ваулте и платит фантиками. +- **Следствие:** контракт переводится с нативного SOL (lamports) на SPL-токен — это ядро Фазы 1. +- **Против:** трогаем хорошо работающий контракт; но без этого сценарий ввода-игры-вывода не работает. + +## ADR-004 — Ввод/вывод через pump.fun swap (`POST /agents/swap`) +- **Дата:** 2026-09-09 +- **Статус:** принято +- **Суть:** пополнение = `inputMint: NATIVE_MINT(SOL), outputMint: наш_mint`; вывод = наоборот. + Клиент на бэкенде (Ktor `PumpApiClient`) уже готов в `smart-updown-server`. +- **За:** возвращает готовую подписанную swap-транзакцию, бэкенд не держит ликвидность. +- **Против:** весь ввод/вывод завязан на доступность pump.fun API. + +## ADR-05 (идея) — мета-репозиторий для документации и трекинга +- **Дата:** 2026-09-09 +- **Статус:** принято +- **Суть:** создать `pump-game-ops`, где живут карта репозиториев, решения, экономика и список задач. +- **За:** единая точка оркестрации, не плаваем по чату. **Против:** риск превратиться во второй трекер. + +--- + +### Развилки, которые ещё предстоит решить (не закрыты) +- **Цена «вверх/вниз»:** контракт сравнивает entry/exit_price — что это: цена нашего фантика, цена SOL или отдельный бенчмарк? (нуждается в решении до Фазы 1). +- **Кто держит ликвидность swap** на старте и межторговая комиссия pump.fun — чей счёт. +- Эмиссия: разовая (скрипт) или постоянная (рабочий процесс эмиссии в бэкенде). \ No newline at end of file diff --git a/docs/ECONOMY.md b/docs/ECONOMY.md new file mode 100644 index 0000000..a5b1bc0 --- /dev/null +++ b/docs/ECONOMY.md @@ -0,0 +1,27 @@ +# ECONOMY.md — экономика игрового токена (заполняется в Фазе 0) + +Пока это заготовка. Цель — зафиксировать **все ключевые параметры токена и экономики**, +чтобы дальше ссылаться на них, а не вспоминать в чате. + +## Токен +- **Название:** Binary Rocket (уточнить финальное имя/символ) +- **Тип:** свой мемкойн на pump.fun, Solid SPL / **Token-2022** +- **decimals:** `6` (по доке pump.fun `create_v2`) +- **Эмитент:** наш адрес (кошелёк/программа) +- **Mint-адрес:** *(заполнить после создания — в Фазе 4)* +- **Bonding curve:** *(заполнить после создания)* +- **URI метаданных:** *(IPFS)* + +## Курс и балансы +- **Курс:** живой рыночный (ADR-002). Ввод/вывод через swap pump.fun; баланс игрока — в фантиках. +- **Фантик = 1 токен-единица/10^6.** +- **Баланс игрока:** в ATA (Associated Token Account) на mint; читается `getTokenAccountBalance`. + +## Вход/выход денег +- **Пополнение:** `POST /agents/swap`, `inputMint=NATIVE_MINT(SOL)`, `outputMint=наш_mint`. +- **Вывод:** `POST /agents/swap`, `inputMint=наш_mint`, `outputMint=NATIVE_MINT(SOL)`. +- Комиссия pump.fun — *(решить, чей счёт)*. +- Ликвидность на старте — *(решить)*. + +## Что стоит фиксированно +- mint-адрес, bonding-curve, decimals, эмитент — версионируются в конфиге бэкенда + в git. \ No newline at end of file