Files
smart-updown-token/TASK-fund-bettor.md
T

1.9 KiB
Raw Blame History

TASK — Выдавать фантики бетторам на localnet (как SOL airdrop)

Репозиторий: smart-updown-token, файл relayer/src/index.ts (+ возможно ops.ts).

Проблема (обнаружено на localnet E2E)

createBet падает: Tokenkeg... Transfer: insufficient funds. Причина: беттор имеет SOL (ренту/комиссии, fundBettor airdrop'ит SOL), но НЕ имеет наших фантиков в своём ATA. Контракт верно требует средства игрока. Для localnet нужно наливать игроку фантики (по аналогии с SOL-airdrop), потому что swap ещё не подключён.

Что исправить (релейер)

  1. В relayer/src/ops.ts: в ensureBettorTokenAccount (или рядом) при cfg.allowAirdrop === true — после создания ATA наливать токен: mintTo(connection, admin, mint, ata, admin, startBalance).
    • startBalance — например, 10_000_000_000 (10 тыс. фантиков, по модулю minAmount..maxAmount достаточно). Логировать.
    • Учесть, что admin — mint authority (на localnet таковым является админская keypair).
  2. relayer/src/index.ts фандинг беттора: вызывать новую логику наливания токенов (удобно чтобы работало через ensureBettorTokenAccount).

Гейт

  • npm run typecheck — 0 ошибок.
  • npm test — зелёное.
  • На localnet: createBet проходит (беттор имеет фантики), closeBet выплачивает.

НЕ делать

  • Не трогать контракт (program/).
  • Не менять логику цен/ставок.
  • Не коммитить.