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

9.2 KiB
Raw Blame History

TASKS.md — список задач (трекер проекта)

Здесь живёт весь список задач — не только мои. Трекаем проект целиком. Бинарные составляющие:

  • фаркул/pivotable-задачи (что можно отложить или развернуть иначе) помечаются [pivotable];
  • общие/инфра (деплой, стабильность, мок) — [pump.meta].

Статусы: TODO / IN_PROGRESS / DONE / BLOCKED.


⭐ Актуальное состояние (2026-09-13)

Где мы: цена SOL — реальная, из NATS, шлюз и тестовый фронт крутятся в k3s на testfront.binom.pw. Первый щуп экономики закрыт: ставка → раунд → результат считается по живой рыночной цене.

Новое (2026-09-13):

  • Цена SOL берётся из NATS (market.price.solusdt), заглушка удалена — ADR-007, детали в docs/PRICE-NATS.md.
  • Шлюз раздаёт цену фронту по WebSocket: wss://testfront.binom.pw/api/ws.
  • test-front показывает живую цену SOL.
  • Оба контейнера (статика + шлюз) — в k3s, ns game, один домен через ингресс.
  • Solana localnet пересобрана с нуля, контракт задеплоен (9ALs…).

⭐ Предыдущее состояние (2026-09-09)

Где мы: Фаза 1 (контракт переведён на фантики) — DONE. Сейчас вход в Фазу 2 (релейер под токен).

Готово:

  • Контракт smart-updown-token — переведён на SPL-токен (фантики), IDL+тесты обновлены. Коммит 45d64d4.
  • Ktor swap-клиент в бэкенде (ввод/вывод) — заготовка.
  • Тестовый фронт test-front — каркас (Phantom, балансы, пополнение/вывод).

В работе / вперёд:

  • Фаза 2 (активная): релейер перевести с SOL на токен (ops/pda/config). После неё + E2E на localnet.
  • Веха «первый щуп»: 👉 как только релейер на фантиках + E2E на localnet прогнаны — через test-front вы самостоятельно щупаете: пополнить фантики → ставка → результат. Это первый реальный user-тест (без Unity).

Параллельные TODO (не блокируют Фазу 2): реальная цена (вместо RandomPriceSource — источник выбран: binance-market, ADR-007, остаётся интеграция), эмиссия, ликвидность/комиссии swap.


Фаза 0 — Экономика и спека (кросс)

  • TODO ADR-002 зафиксирован, документировать ECONOMY.md: токен, курс (Способ 1), decimals=6, mint-адреса — [pump.meta]
  • DONE Решить «вверх/вниз» — предмет ставки = цена SOL (ADR-006), валюта = фантики
  • DONE Цена SOL: реальный источник (ADR-007) — subochev/binance-market через NATS market.price.solusdt; интеграция PriceSource в релейере сделана (ADR-008, 2026-09-13)
  • TODO Кто держит ликвидность swap и комиссии — [pump.meta]
  • TODO Эмиссия: разовая vs постоянная — [pump.meta]

Фаза 1 — Контракт на токене (ядро) — репо smart-updown-token (копия Smart-game)

  • DONE Создана копия контракта smart-updown-token (ветка main, чистый) — работаем тут
  • DONE Перевести create_bet с SOL (lamports) на SPL-токен: приём фантиков с ATA игрока на ваулт
  • DONE Выплата в close_bet фантиками из ATA-ваулта на ATA игрока
  • DONE state/constants: единицы = token units (decimals=6), + VAULT_SEED
  • DONE Обновить IDL (idl/ + relayer/idl/) + Anchor-тесты (10/10) — коммит 45d64d4
  • DONE Localnet стенд поднят заново (ledger пересобран), контракт задеплоен, mint создан, init прогнан (2026-09-13)
  • DONE E2E живьём: ставка → close по реальной цене из NATS (entryPrice=10195000000 при курсе 101.95)

Фаза 2 — Релейер и цена (АКТИВНАЯ — следующий шаг)

  • IN_PROGRESS SolanaClient/ops: подписывать/отправлять токеновую ставку (ATA + ваулт) — перевести релейер с SOL на токен
  • TODO readGlobal: баланс vault_token вместо SOL; ensureVaultFunded — наливать токен в vault
  • DONE PriceSource: реальная цена (вместо RandomPriceSource) — интеграция с binance-market (ADR-007), NATS-консьюмер market.price.solusdt в src/natsPrice.ts, цена ×1e8 (ADR-008)
  • 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 по токену

Фаза 5b — Тестовый фронт (test-front, для ручной гонки экономики без Unity)

  • DONE Каркас: Phantom, балансы (фантики+SOL), swap пополнение/вывод через /api/pump/swap
  • DONE Ставка вверх/вниз через контракт с поллингом до SETTLED
  • TODO Перевести подпись под токеновую версию контракта (после Фазы 1)
  • DONE Реальный провайдер цены вместо RandomPriceSource (за нами) → binance-market через NATS (ADR-007/ADR-008)
  • DONE Живая цена SOL по WebSocket (wss://testfront.binom.pw/api/ws), вывод на странице — релиз 2
  • DONE Развернуть / дать постоянный URL — https://testfront.binom.pw (k3s, ns game, ингресс; релиз 2)

Фаза 6 — E2E и деплой

  • TODO Полный круг на devnet: создать токен → swap ввод → ставка токеном → раунд → вывод
  • TODO Обновить API.md/INTEGRATION.md, развернуть на mainnet
  • TODO Стабильность: версионировать конфиги, mint-адрес в конфиге

Ссылки

  • Решения/экономика: docs/DECISIONS.md, docs/ECONOMY.md
  • Карта репозиториев: README.md

Фаза 7 — Цена из NATS и деплой в куб (2026-09-13)

  • DONE ADR-007: цена SOL из NATS (market.price.solusdt), заглушка удалена
  • DONE natsPrice.ts — подписка NATS, последняя цена, waitForPrice, ×1e8 строковым парсером
  • DONE gateway.ts — WS /ws, GET /price, нормализация /api/... → /...
  • DONE test-front — блок «Цена SOL (WebSocket)»: цена, статус, автопереподключение
  • DONE Dockerfile + helm для шлюза и фронта; деплой в k3s ns game
  • DONE Роут testfront.binom.pw переведён с 76.199 на куб 76.120 (Traefik VDS)
  • DONE Релизы: smart-updown-token 7, test-front 2
  • DONE Документация: docs/PRICE-NATS.md, docs/diagrams/price-flow.puml, ADR-007
  • TODO Пилот: смена entry_price на «реальный источник как оракул» до боя (Pyth/Switchboard)
  • TODO Деградация при отсутствии цены: отдельное решение (бэкфилл/остановка приёма ставок)

Ссылки (дополнено 2026-09-13)

  • Цена: docs/PRICE-NATS.md, диаграмма docs/diagrams/price-flow.puml
  • Безопасность: docs/SECURITY.md — чек-лист SEC-1…SEC-15 (аудит живого стенда 2026-09-13)