1.9 KiB
1.9 KiB
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 ещё не подключён.
Что исправить (релейер)
- В
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).
relayer/src/index.tsфандинг беттора: вызывать новую логику наливания токенов (удобно чтобы работало черезensureBettorTokenAccount).
Гейт
npm run typecheck— 0 ошибок.npm test— зелёное.- На localnet: createBet проходит (беттор имеет фантики), closeBet выплачивает.
НЕ делать
- Не трогать контракт (
program/). - Не менять логику цен/ставок.
- Не коммитить.