3.6 KiB
3.6 KiB
TASK — Перевести тестовый фронт (test-front) на HTTP-шлюз (ставки/баланс без Phantom)
Контекст
test-front/index.html — статичный пульт на testfront.binom.pw (осн.) / game2.binom.pw.
Сейчас он требует Phantom для баланса и ставки. Но поднят HTTP-шлюз (релейер, localnet):
- на
http://127.0.0.1:8895(через прокси наружу будет виден какGW_BASE). - Эндпоинты:
GET /state→{counter,minAmount,maxAmount,multiplierBps,expirySeconds,paused,admin,relayer,vaultBalanceHuman,minAmountHuman,maxAmountHuman}GET /balance/{address}→{sol,solLamports,tokenUnits,tokenHuman}POST /bet {side, amountUnits, address?}→{tx,id,bettor,entryPrice}(без address — генерит и регистрирует кошелёк сам; но пульт будет передавать введённый/пресет-адрес)POST /close {id}→{tx,id,exitPrice,status,statusName,bettor}(statusName: payout_done/house_won/open)
Задача (только test-front/index.html)
Сделать пульт работающим БЕЗ Phantom — все операции через шлюз:
- Добавить конфиг-поле «Шлюз (API)» — базовый URL шлюза (default пустой → фронт сам выведет, если пусто). Назвать
gwBase. - Баланс: введите адрес в поле → кнопка →
GET {gw}/balance/{address}→ показать фантики (tokenHuman) и SOL (sol). Убрать требование Phantom для балances. - Ставка: поля side (UP/DOWN), amountHuman; адрес (введённый или пресет). Кнопка →
POST {gw}/bet {side, amountUnits, address}→ показать{id, bettor, entryPrice}в лог. Ставить вверх/вниз. - Закрыть: кнопка (id из последней ставки или ввод) →
POST {gw}/close {id}→ показатьstatusName(выиграл/проиграл/открыт). - Обновить state: показывать min/max/expiry/vault с
/state. - CORS: шлюз уже отдаёт
Access-Control-Allow-Origin: *— fetch с любого домена пройдёт. Оставим. - Пресет-кошельки: захардкодь в поле адреса пару известных: admin (источник фантиков) —
Huha5S9ySxHC9u7RXmeQbt8GZh1VXGzfjVPGdsYV2tKK— и/или зарегистрированный bettor из keystore (выведи его адрес при необходимости). Чтобы сразу было.
Ограничения
- НЕ менять шлюз (
smart-updown-token/relayer/gateway.ts) — только фронт. - НЕ коммитить.
- amountUnits в токен-единицах (×10^decimals=6). Пользователь вводит в фантиках (до 6 знаков) — умножить на 1e6 на фронте.
Гейт
- JS-синтаксис валиден.
- Страница открывается; при заполненном gwBase живо показывает state, делает bet/close.
Отчёт
Что сделал, как запускать, как пользоваться (какие поля/кнопки). Если шлюз недоступен с браузера — как проксировать наружу (совет, не реализация).