docs: ADR-008 (реализация цены из NATS) + PRICE-NATS.md + PlantUML (фаза 7)
ADR-007 (выбор источника binance-market/NATS) пришёл из другой сессии — оставлен как есть, с апдейт-сноской. Реализация зафиксирована отдельным ADR-008: NATS-консьюмер в шлюзе, цена x1e8 строковым парсером, раздача фронту по WebSocket, деплой в k3s на testfront.binom.pw.
This commit is contained in:
@@ -8,7 +8,23 @@
|
||||
|
||||
---
|
||||
|
||||
## ⭐ Актуальное состояние (2026-09-09)
|
||||
## ⭐ Актуальное состояние (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 (релейер под токен)**.
|
||||
|
||||
@@ -28,7 +44,7 @@
|
||||
## Фаза 0 — Экономика и спека (кросс)
|
||||
- [ ] **TODO** ADR-002 зафиксирован, документировать `ECONOMY.md`: токен, курс (Способ 1), decimals=6, mint-адреса — `[pump.meta]`
|
||||
- [x] **DONE** Решить «вверх/вниз» — предмет ставки = цена SOL (ADR-006), валюта = фантики
|
||||
- [ ] **IN_PROGRESS** Цена SOL: реальный источник (ADR-007) — `subochev/binance-market` (NATS `market.price.solusdt` или WS `/ws/price?symbol=solusdt`); остаётся интеграция `PriceSource` в релейере
|
||||
- [x] **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]`
|
||||
|
||||
@@ -38,12 +54,13 @@
|
||||
- [x] **DONE** Выплата в `close_bet` фантиками из ATA-ваулта на ATA игрока
|
||||
- [x] **DONE** `state`/`constants`: единицы = token units (decimals=6), + VAULT_SEED
|
||||
- [x] **DONE** Обновить IDL (idl/ + relayer/idl/) + Anchor-тесты (10/10) — коммит 45d64d4
|
||||
- [ ] **TODO** Развернуть/поднять localnet стенд для E2E токен-флоу (приёмка на железе)
|
||||
- [x] **DONE** Localnet стенд поднят заново (ledger пересобран), контракт задеплоен, mint создан, `init` прогнан (2026-09-13)
|
||||
- [x] **DONE** E2E живьём: ставка → close по реальной цене из NATS (`entryPrice=10195000000` при курсе 101.95)
|
||||
|
||||
## Фаза 2 — Релейер и цена (АКТИВНАЯ — следующий шаг)
|
||||
- [ ] **IN_PROGRESS** SolanaClient/ops: подписывать/отправлять токеновую ставку (ATA + ваулт) — перевести релейер с SOL на токен
|
||||
- [ ] **TODO** readGlobal: баланс vault_token вместо SOL; ensureVaultFunded — наливать токен в vault
|
||||
- [ ] **IN_PROGRESS** PriceSource: реальная цена (вместо `RandomPriceSource`) — интеграция с `binance-market` (ADR-007); реализация NATS-консьюмера `market.price.solusdt`
|
||||
- [x] **DONE** PriceSource: реальная цена (вместо `RandomPriceSource`) — интеграция с `binance-market` (ADR-007), NATS-консьюмер `market.price.solusdt` в `src/natsPrice.ts`, цена ×1e8 (ADR-008)
|
||||
- [ ] **TODO** Интеграционный тест релейера на токеновом флоу
|
||||
|
||||
## Фаза 4 — Бэкенд: задействовать swap
|
||||
@@ -60,8 +77,9 @@
|
||||
- [x] **DONE** Каркас: Phantom, балансы (фантики+SOL), swap пополнение/вывод через `/api/pump/swap`
|
||||
- [x] **DONE** Ставка вверх/вниз через контракт с поллингом до SETTLED
|
||||
- [ ] **TODO** Перевести подпись под токеновую версию контракта (после Фазы 1)
|
||||
- [ ] **TODO** Реальный провайдер цены вместо RandomPriceSource (за нами) → `binance-market` (ADR-007)
|
||||
- [ ] **TODO** Развернуть / дать постоянный URL (nginx/podman) — удобно открывать
|
||||
- [x] **DONE** Реальный провайдер цены вместо RandomPriceSource (за нами) → `binance-market` через NATS (ADR-007/ADR-008)
|
||||
- [x] **DONE** Живая цена SOL по WebSocket (`wss://testfront.binom.pw/api/ws`), вывод на странице — релиз 2
|
||||
- [x] **DONE** Развернуть / дать постоянный URL — `https://testfront.binom.pw` (k3s, ns `game`, ингресс; релиз 2)
|
||||
|
||||
## Фаза 6 — E2E и деплой
|
||||
- [ ] **TODO** Полный круг на devnet: создать токен → swap ввод → ставка токеном → раунд → вывод
|
||||
@@ -72,4 +90,18 @@
|
||||
|
||||
## Ссылки
|
||||
- Решения/экономика: `docs/DECISIONS.md`, `docs/ECONOMY.md`
|
||||
- Карта репозиториев: `README.md`
|
||||
- Карта репозиториев: `README.md`
|
||||
## Фаза 7 — Цена из NATS и деплой в куб (2026-09-13)
|
||||
- [x] **DONE** ADR-007: цена SOL из NATS (`market.price.solusdt`), заглушка удалена
|
||||
- [x] **DONE** `natsPrice.ts` — подписка NATS, последняя цена, `waitForPrice`, ×1e8 строковым парсером
|
||||
- [x] **DONE** `gateway.ts` — WS `/ws`, `GET /price`, нормализация `/api/...` → `/...`
|
||||
- [x] **DONE** `test-front` — блок «Цена SOL (WebSocket)»: цена, статус, автопереподключение
|
||||
- [x] **DONE** Dockerfile + helm для шлюза и фронта; деплой в k3s ns `game`
|
||||
- [x] **DONE** Роут `testfront.binom.pw` переведён с 76.199 на куб 76.120 (Traefik VDS)
|
||||
- [x] **DONE** Релизы: `smart-updown-token` 7, `test-front` 2
|
||||
- [x] **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`
|
||||
|
||||
Reference in New Issue
Block a user