ADR-007: источник цены SOL = upstream binance-market (NATS / WS)

- README: новая секция «Внешние зависимости» — binance-market как общий
  инфраструктурный upstream, а не часть игры (~/common-projects/invest/binance-market,
  контракт: NATS market.price.solusdt или WS /ws/price).
- docs/DECISIONS: добавлен ADR-007 с обоснованием; ADR-006 получил апдейт-сноску.
- docs/ECONOMY: «Курс и балансы» — указано, откуда берётся реальная цена SOL.
- TASKS: задачи «Цена SOL: реальный источник» (Фаза 0) и «PriceSource: реальная
  цена» (Фаза 2) переведены из TODO в IN_PROGRESS, со ссылкой на ADR-007 и
  binance-market; test-front задача тоже помечена.
This commit is contained in:
2026-09-12 01:10:09 +03:00
parent ba14806e6c
commit 6e54e9ef4b
4 changed files with 58 additions and 6 deletions
+18
View File
@@ -28,6 +28,22 @@
> - 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`. Ключевое:
@@ -35,6 +51,7 @@
- **Курс — живой рыночный** (Способ 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).
@@ -46,6 +63,7 @@
- [ ] Фаза 1 — контракт на токене — **не начато**
- [ ] Фаза 4 — задействовать свап-клиент — **клиент готов**
- [ ] Фаза 5 — фронт (баланс/пополнение/вывод) — **не начато**
- [ ] Интеграция с `binance-market` (NATS/WS-клиент `PriceSource`) — **см. ADR-007**
## Прочее
- Ночная экономика и mint-адреса: `docs/ECONOMY.md` (создаётся в Фазе 0).