docs: add rpc/dlob/candles notes
This commit is contained in:
94
doc/todo-before-baremetal.md
Normal file
94
doc/todo-before-baremetal.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# TODO przed zakupem bare metal (RPC+Geyser) — żeby dzień 0 poszedł gładko
|
||||
|
||||
Cel: zanim kupisz bare metal, dopinamy wszystko, co nie wymaga własnego RPC, żeby po zakupie:
|
||||
- tylko postawić RPC+Geyser wg runbooka,
|
||||
- przepiąć endpointy w k3s i zrobić rollout,
|
||||
- zweryfikować stabilność feedu i gotowość do live.
|
||||
|
||||
---
|
||||
|
||||
## A) Decyzje i parametry (bez kodu, ale blokują implementację)
|
||||
|
||||
- [ ] **Docelowe porty i adresacja WireGuard**:
|
||||
- WG subnet (np. `10.8.0.0/24`), IP bare metal i IP k3s/VPS
|
||||
- port WG (np. `51820/udp`)
|
||||
- private bind dla: RPC `8899`, WS `8900`, gRPC `10000`
|
||||
- [ ] **Polityka dostępu**:
|
||||
- allowlist IP do SSH
|
||||
- czy gRPC wymaga auth/token dla klientów
|
||||
- [ ] **Retencja danych (start)**:
|
||||
- TS: 7 dni “gęsto” (np. 1–5s) + czy robimy downsample 1m na dłużej
|
||||
- [ ] **Model intent**:
|
||||
- potwierdzone: offset (ticks/bps) + desired-state (jest w `doc/drift-perp-contract.md`)
|
||||
- [ ] **Ryzyko (hard caps)**:
|
||||
- max position USD, max reprices/min, max slippage/spread, freshness
|
||||
|
||||
---
|
||||
|
||||
## B) Dane i historia (żeby warstwy działały live+history)
|
||||
|
||||
- [ ] **DLOB TS tables**: `dlob_stats_ts`, `dlob_depth_bps_ts`, `dlob_slippage_ts`
|
||||
- indeksy `(market_name, ts)` i retencja 7 dni
|
||||
- [ ] **Archiver/collector**:
|
||||
- worker, który zapisuje TS (z `*_latest` do `*_ts`), albo rozszerzenie istniejących workerów
|
||||
- [ ] **Downsample (opcjonalnie, ale pro)**:
|
||||
- continuous aggregates (Timescale) lub job 1m/5m
|
||||
- [ ] **Hasura bootstrap**:
|
||||
- track tabel TS + uprawnienia `select` (public) dla UI history
|
||||
|
||||
---
|
||||
|
||||
## C) Kontrakty bota i audyt (must-have przed live)
|
||||
|
||||
- [ ] **Schema**:
|
||||
- `bot_contracts` (desired-state + status)
|
||||
- `bot_events` (audit log)
|
||||
- mapowanie: `decision_id`, `client_order_id`, `drift_order_id`, `tx_sig`
|
||||
- [ ] **Observe-only executor** (k3s):
|
||||
- buduje features i zapisuje `decision` do `bot_events`, bez składania tx
|
||||
- [ ] **Reconcile logic (no trade yet)**:
|
||||
- start → odczyt observed state z Drift → porównanie do DB → log “diff”
|
||||
- [ ] **Kill-switch w executorze**:
|
||||
- env var + DB flag + safety triggers (feed stale, RPC lag)
|
||||
|
||||
---
|
||||
|
||||
## D) Vast (GPU tylko na kilka godzin) — przygotowanie pod ephemeral training
|
||||
|
||||
- [ ] **Dataset export** (z k3s/DB):
|
||||
- jeden plik `parquet/jsonl.zst` + `dataset_version` (hash)
|
||||
- minimalny “train split / eval split”
|
||||
- [ ] **Training entrypoint** (jedna komenda):
|
||||
- skrypt/komenda, która: download dataset → train → eval → export
|
||||
- [ ] **Artifact upload**:
|
||||
- preferowane: scp na VPS/k3s albo Gitea Packages
|
||||
- wersjonowanie: `model_version` + `dataset_version`
|
||||
- [ ] **Predictor contract test**:
|
||||
- walidator JSON schema `trade_intent`
|
||||
- test: “intent TTL expired” + “gates fail” + “panic”
|
||||
|
||||
---
|
||||
|
||||
## E) UI (warstwy + live/history, bez liczenia w JS)
|
||||
|
||||
- [ ] **Tryb Live/History**:
|
||||
- Live: subscriptions na `*_latest`
|
||||
- History: query na `*_ts` + timeframe `tf`
|
||||
- [ ] **Warstwy/Panele z `doc/stats.md`**:
|
||||
- mapowanie 1:1 na tabele (brak obliczeń w UI)
|
||||
- [ ] **Podgląd kontraktów**:
|
||||
- panel “Contracts” z `bot_contracts` + “Event timeline” z `bot_events`
|
||||
|
||||
---
|
||||
|
||||
## F) Operacje (żeby bare metal nie stał się snowflake)
|
||||
|
||||
- [ ] **Sekrety i endpointy**:
|
||||
- w k3s: secret `trade-dlob-rpc` / analogiczny na nowy endpoint (WG)
|
||||
- fallback endpoint (np. public provider) jako opcjonalny drugi URL
|
||||
- [ ] **Monitoring/alerty na k3s**:
|
||||
- freshness DLOB/ticks, error rate workerów, restart loops
|
||||
- [ ] **Checklist “Day 0”**:
|
||||
- przejście krok po kroku wg `doc/solana-rpc-geyser-setup.md`
|
||||
- smoke test: `dlob-publisher` bez reconnect storm
|
||||
|
||||
Reference in New Issue
Block a user