From f937c8993dc6e12cb4fa89a2a00a768ed8154bb1 Mon Sep 17 00:00:00 2001 From: Caffeine Date: Thu, 10 Sep 2026 02:12:07 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20vault=20=D0=BA=D0=B0=D0=BA=20ATA=20+=20?= =?UTF-8?q?=D1=84=D0=B0=D0=BD=D0=B4=D0=B8=D0=BD=D0=B3=20=D0=B1=D0=B5=D1=82?= =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B0;=20E2E=20=D0=BD=D0=B0=20localnet=20ok?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + TASK-fund-bettor.md | 29 ++++++++ TASK-vault-ata-fix.md | 47 +++++++++++++ TASK-vault-contract-fix.md | 62 ++++++++++++++++++ deploy/smart_updown.so | Bin 66304 -> 247848 bytes idl/smart_updown.json | 53 +++++---------- .../src/instructions/close_bet.rs | 18 ++--- .../src/instructions/create_bet.rs | 10 +-- .../smart-updown/tests/test_smart_updown.rs | 1 + relayer/idl/smart_updown.json | 53 +++++---------- relayer/idl/smart_updown.ts | 53 +++++---------- relayer/src/check.ts | 14 ++-- relayer/src/config.ts | 10 +++ relayer/src/index.ts | 13 +++- relayer/src/ops.ts | 50 +++++++++----- 15 files changed, 267 insertions(+), 148 deletions(-) create mode 100644 TASK-fund-bettor.md create mode 100644 TASK-vault-ata-fix.md create mode 100644 TASK-vault-contract-fix.md diff --git a/.gitignore b/.gitignore index fda654d..957acdc 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ # ключи игроков/секрет — НЕ коммитить (имеют SOL-баланс) deploy/player.json deploy/*player*.json +test-ledger/ +*.idl_build_err.log diff --git a/TASK-fund-bettor.md b/TASK-fund-bettor.md new file mode 100644 index 0000000..d2a9f58 --- /dev/null +++ b/TASK-fund-bettor.md @@ -0,0 +1,29 @@ +# 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/`). +- Не менять логику цен/ставок. +- Не коммитить. \ No newline at end of file diff --git a/TASK-vault-ata-fix.md b/TASK-vault-ata-fix.md new file mode 100644 index 0000000..d8c6e49 --- /dev/null +++ b/TASK-vault-ata-fix.md @@ -0,0 +1,47 @@ +# TASK — Багфикс: vault_token в релейере должен быть ATA, а не PDA + +Репозиторий: `smart-updown-token`, файл `relayer/src/ops.ts`. + +## Проблема (обнаружена на localnet E2E) +Контракт переведён на SPL-токен (Фаза 1). В инструкциях `create_bet`/`close_bet` +аккаунт `vault_token` — это **ATA-аккаунт токена, который принадлежит владельцу +vaultPda** (PDA `[b"global", b"vault"]`). Правильный адрес: +`getAssociatedTokenAddress(mint, vaultPda(programId))` (allowOwnerOffCurve по PDA-владельцу). + +Однако в релейере `createBet`/`closeBet` используется: +```ts +vaultToken: vaultPda(program.programId), +``` +Это передаёт адрес **самого PDA-владельца** (не токен-аккаунт) — контракт +отвергнет транзакцию (wrong account), а `ensureVaultFunded` зовёт +`getTokenAccountBalance(vaultToken)` где vaultToken = vaultPda → «could not find account». +Т.е. ваулт ATA даже не создаётся в нужном месте. + +## Что исправить (только `relayer/src/ops.ts`) + +1. **`ensureVaultFunded`**: + - Получать ATA ваулта: `const vaultAta = await getAssociatedTokenAddress(mint, vaultPda, true);` + (третий аргумент `true` — allowOwnerOffCurve, иначе TokenOwnerOffCurveError). + - Создавать/получать: `getOrCreateAssociatedTokenAccount(connection, admin, mint, vaultPda, true)`. + - `getTokenAccountBalance` звать по **ATA-адресу** (`vaultAta`), не по vaultPda. + +2. **`createBet`**: + - `vaultToken: await getAssociatedTokenAddress(mint, vaultPda(program.programId), true)` + +3. **`closeBet`**: + - `vaultToken: await getAssociatedTokenAddress(mint, vaultPda(program.programId), true)` + +## Гейты +- `npm run typecheck` — 0 ошибок. +- `npm run test` (check.ts) — зелёные проверки. +- (Если можно) быстрый локальный smoke: создать ваулт ATA, налить токен, create/close. + +## НЕ делать +- Не трогать `program/` (контракт), не менять IDL. +- Не трогать логику цен/ставок. +- Не коммитить. + +## Суть одным абзацем +`vault_token` в контракте — токен-счёт (ATA), всегда считаемый через +`getAssociatedTokenAddress(mint, vaultPda, true)`. Заменить все прямые +использования `vaultPda(...)` как адреса acкаунта на ATA-адрес. \ No newline at end of file diff --git a/TASK-vault-contract-fix.md b/TASK-vault-contract-fix.md new file mode 100644 index 0000000..bcb4443 --- /dev/null +++ b/TASK-vault-contract-fix.md @@ -0,0 +1,62 @@ +# TASK — Фикс: сделать vault_token обычным ATA-токен-счётом (убрать seeds = PDA) + +Репозиторий: `smart-updown-token`. Файлы: `program/programs/smart-updown/src/instructions/create_bet.rs` +и `.../close_bet.rs`. + +## Проблема (обнаружено на localnet E2E) +Токен-аккаунт ваулта объявлен так: +```rust +#[account( + mut, + seeds = [GLOBAL_SEED, VAULT_SEED], // ← требует адрес == PDA([global,vault]) +)] +pub vault_token: Account<'info, TokenAccount> +``` +Anchor проверяет, что **адрес `vault_token` == PDA([global,vault])**. Но казённый +(escrow) токен-счёт у нас — это ATA от владельца `vaultPda`: адрес +`getAssociatedTokenAddress(mint, vaultPda)`, который НЕ равен PDA. Отсюда +`Error Code: ConstraintSeeds` — перевод в ваулт невозможен. + +У `bettor_token` такой проблемы нет (там обычный `Account`, адрес = ATA игрока). + +## Что исправить + +### 1. `create_bet.rs` +У `vault_token` **убрать блок `seeds = [GLOBAL_SEED, VAULT_SEED]`** — оставить просто: +```rust +#[account(mut)] +pub vault_token: Account<'info, TokenAccount>, +``` +(оставить поле `bump` больше не нужно — удалить его из struct, если он был). +Это сделает адрес любого токен-счёта (ATA ваулта) приемлемым. + +### 2. `close_bet.rs` +То же самое: у `vault_token` убрать `seeds = [...]`. НО: раз адрес больше не фиксируется +seeds, передавать/подписывать перевод нужно от **владельца-пользователя (vaultPda)**. +В `close_bet` AUTHORITY перевода остаётся владелец аккаунта (поле `owner` токен-счёта). +Проверить: signer_seeds `[GLOBAL_SEED, VAULT_SEED, bump]` должны по-прежнему давать +vaultPda (это и есть владелец ATA). Так как сигнатура от PDA не меняется, seed-фразы +в `close_bet.rs` (для подписи CPI) СТАВЯТСЯ из `ctx.accounts.vault_token` owner. +Возможно понадобится отдельный аккаунт `vault_authority: PDA([global,vault])`, чтобы +передать в signer seeds — оценить и сделать аккуратно (стандартный Anchor escrow). + +### 3. Пересборка и проверка +- `anchor build` зелёный. +- IDL перегенерировать (`anchor idl build`), синхронизировать `relayer/idl/smart_updown.json`. +- `npm run typecheck` / `npm test` в `relayer/` — зелёные (если тесты проверяют seeds — обновить). + +## Важно (архитектурно) +`vault_token` — это ATA от владельца `vaultPda` (адрес `getAssociatedTokenAddress(mint, vaultPda)`). +Контракт НЕ должен требовать конкретного адреса — только владельца-подпись для withdraw. +Всё, что нужно — чтобы в `close_bet` authority (тот, кто подписывает перевод из ваулта) +был **vaultPda** (владелец ATA), а не адрес аккаунта. + +## НЕ делать +- Не трогать логику ставок/цен. +- Не трогать релейер (он уже передаёт правильный ATA-адрес). +- Не коммитить. + +## Проверка успеха +- `anchor build` + IDL обновлён. +- На localnet: передача `vault_token` = ATA (`getAssociatedTokenAddress(mint, vaultPda)`), + create_bet принимает ставку, close_bet выплачивает (signer — vaultPda). E2E проходит. \ No newline at end of file diff --git a/deploy/smart_updown.so b/deploy/smart_updown.so index 47bcdad057452d9e986d9d7ad905da85ac2771c6..6947af26c4831f4d4b76e5ac9d8d7497b9b7bcb3 100755 GIT binary patch literal 247848 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 C$H#R5 literal 66304 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 { /// CHECK: recipient must be the bet's bettor and is validated in the handler. pub bettor: SystemAccount<'info>, pub clock: Sysvar<'info, Clock>, - /// Program-owned token vault: PDA([GLOBAL_SEED, VAULT_SEED]); payouts are paid out from here. - #[account( - mut, - seeds = [GLOBAL_SEED, VAULT_SEED], - bump - )] + /// Token vault ATA (owner = PDA([GLOBAL_SEED, VAULT_SEED])); payouts are paid out from here. + #[account(mut)] pub vault_token: Account<'info, TokenAccount>, /// Bettor's SPL-token account; the payout is sent here. #[account(mut)] pub bettor_token: Account<'info, TokenAccount>, + /// CHECK: vault owner PDA, address enforced by the seeds = [GLOBAL_SEED, VAULT_SEED] + bump above. + /// It only serves as the CPI signing authority for the vault ATA payout, so no owner/type check is needed. + #[account(seeds = [GLOBAL_SEED, VAULT_SEED], bump)] + pub vault_authority: UncheckedAccount<'info>, pub token_program: Program<'info, Token>, } @@ -86,16 +86,16 @@ let payout; payout = payout_amount; { // Pay the bettor: transfer the payout from the vault to the bettor's token account. - // The vault is owned by the `global` PDA, so the CPI is signed with its seeds. + // The vault ATA is owned by the vault PDA, so the CPI is signed with its seeds. let cpi_accounts = anchor_spl::token::Transfer { from: ctx.accounts.vault_token.to_account_info(), to: ctx.accounts.bettor_token.to_account_info(), - authority: ctx.accounts.vault_token.to_account_info(), + authority: ctx.accounts.vault_authority.to_account_info(), }; let signer_seeds: &[&[u8]] = &[ GLOBAL_SEED, VAULT_SEED, - &[ctx.bumps.vault_token], + &[ctx.bumps.vault_authority], ]; let vault_signer_seeds = [signer_seeds]; let cpi_ctx = CpiContext::new_with_signer( diff --git a/program/programs/smart-updown/src/instructions/create_bet.rs b/program/programs/smart-updown/src/instructions/create_bet.rs index 58eea2b..460bd1b 100644 --- a/program/programs/smart-updown/src/instructions/create_bet.rs +++ b/program/programs/smart-updown/src/instructions/create_bet.rs @@ -2,7 +2,7 @@ use anchor_lang::prelude::*; use anchor_spl::token::{Token, TokenAccount}; use crate::{ - constants::{BET_SEED, GLOBAL_SEED, SIDE_DOWN, SIDE_UP, STATUS_OPEN, VAULT_SEED}, + constants::{BET_SEED, GLOBAL_SEED, SIDE_DOWN, SIDE_UP, STATUS_OPEN}, error::SmartUpdownError, events::BetCreated, state::{Bet, Global}, @@ -32,12 +32,8 @@ pub struct CreateBet<'info> { /// Bettor's SPL-token account (our "fanti" mint); bet amount is pulled from here. #[account(mut)] pub bettor_token: Account<'info, TokenAccount>, - /// Program-owned token vault: PDA([GLOBAL_SEED, VAULT_SEED]); bet amounts are escrowed here. - #[account( - mut, - seeds = [GLOBAL_SEED, VAULT_SEED], - bump - )] + /// Token vault ATA (owner = PDA([GLOBAL_SEED, VAULT_SEED])); bet amounts are escrowed here. + #[account(mut)] pub vault_token: Account<'info, TokenAccount>, pub token_program: Program<'info, Token>, } diff --git a/program/programs/smart-updown/tests/test_smart_updown.rs b/program/programs/smart-updown/tests/test_smart_updown.rs index c39ba74..89a434f 100644 --- a/program/programs/smart-updown/tests/test_smart_updown.rs +++ b/program/programs/smart-updown/tests/test_smart_updown.rs @@ -216,6 +216,7 @@ fn make_close_ix( clock: CLOCK_ADDR.parse().unwrap(), vault_token: vault_pda(), bettor_token: *bettor_ata, + vault_authority: vault_pda(), token_program: spl_token::ID, } .to_account_metas(None), diff --git a/relayer/idl/smart_updown.json b/relayer/idl/smart_updown.json index 6401805..7d9b88f 100644 --- a/relayer/idl/smart_updown.json +++ b/relayer/idl/smart_updown.json @@ -73,9 +73,22 @@ { "name": "vault_token", "docs": [ - "Program-owned token vault: PDA([GLOBAL_SEED, VAULT_SEED]); payouts are paid out from here." + "Token vault ATA (owner = PDA([GLOBAL_SEED, VAULT_SEED])); payouts are paid out from here." + ], + "writable": true + }, + { + "name": "bettor_token", + "docs": [ + "Bettor's SPL-token account; the payout is sent here." + ], + "writable": true + }, + { + "name": "vault_authority", + "docs": [ + "It only serves as the CPI signing authority for the vault ATA payout, so no owner/type check is needed." ], - "writable": true, "pda": { "seeds": [ { @@ -102,13 +115,6 @@ ] } }, - { - "name": "bettor_token", - "docs": [ - "Bettor's SPL-token account; the payout is sent here." - ], - "writable": true - }, { "name": "token_program", "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" @@ -200,34 +206,9 @@ { "name": "vault_token", "docs": [ - "Program-owned token vault: PDA([GLOBAL_SEED, VAULT_SEED]); bet amounts are escrowed here." + "Token vault ATA (owner = PDA([GLOBAL_SEED, VAULT_SEED])); bet amounts are escrowed here." ], - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 103, - 108, - 111, - 98, - 97, - 108 - ] - }, - { - "kind": "const", - "value": [ - 118, - 97, - 117, - 108, - 116 - ] - } - ] - } + "writable": true }, { "name": "token_program", diff --git a/relayer/idl/smart_updown.ts b/relayer/idl/smart_updown.ts index a7d58b6..3731483 100644 --- a/relayer/idl/smart_updown.ts +++ b/relayer/idl/smart_updown.ts @@ -78,9 +78,22 @@ export type SmartUpdown = { { "name": "vaultToken", "docs": [ - "Program-owned token vault: PDA([GLOBAL_SEED, VAULT_SEED]); payouts are paid out from here." + "Token vault ATA (owner = PDA([GLOBAL_SEED, VAULT_SEED])); payouts are paid out from here." + ], + "writable": true + }, + { + "name": "bettorToken", + "docs": [ + "Bettor's SPL-token account; the payout is sent here." + ], + "writable": true + }, + { + "name": "vaultAuthority", + "docs": [ + "It only serves as the CPI signing authority for the vault ATA payout, so no owner/type check is needed." ], - "writable": true, "pda": { "seeds": [ { @@ -107,13 +120,6 @@ export type SmartUpdown = { ] } }, - { - "name": "bettorToken", - "docs": [ - "Bettor's SPL-token account; the payout is sent here." - ], - "writable": true - }, { "name": "tokenProgram", "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA" @@ -205,34 +211,9 @@ export type SmartUpdown = { { "name": "vaultToken", "docs": [ - "Program-owned token vault: PDA([GLOBAL_SEED, VAULT_SEED]); bet amounts are escrowed here." + "Token vault ATA (owner = PDA([GLOBAL_SEED, VAULT_SEED]); bet amounts are escrowed here." ], - "writable": true, - "pda": { - "seeds": [ - { - "kind": "const", - "value": [ - 103, - 108, - 111, - 98, - 97, - 108 - ] - }, - { - "kind": "const", - "value": [ - 118, - 97, - 117, - 108, - 116 - ] - } - ] - } + "writable": true }, { "name": "tokenProgram", diff --git a/relayer/src/check.ts b/relayer/src/check.ts index 0405ee8..f1c0548 100644 --- a/relayer/src/check.ts +++ b/relayer/src/check.ts @@ -58,12 +58,16 @@ async function main(): Promise { "betPda(0) совпадает с седами bet из IDL" ); check( - vaultPda(programId).equals(pdaFromIdlSeeds(programId, (acct(createIx, "vault_token") as any).pda.seeds)), - "vaultPda совпадает с седами vault_token из IDL" + vaultPda(programId).equals(pdaFromIdlSeeds(programId, (acct(closeIx, "vault_authority") as any).pda.seeds)), + "vaultPda совпадает с седами vault_authority в close_bet" ); check( - vaultPda(programId).equals(pdaFromIdlSeeds(programId, (acct(closeIx, "vault_token") as any).pda.seeds)), - "vaultPda совпадает с седами vault_token в close_bet" + (acct(createIx, "vault_token") as any).pda === undefined, + "create_bet: vault_token — обычный ATA-счёт (без PDA/seeds)" + ); + check( + (acct(closeIx, "vault_token") as any).pda === undefined, + "close_bet: vault_token — обычный ATA-счёт (без PDA/seeds)" ); // 2. Сборка инструкций оффлайн и проверка ключей @@ -114,7 +118,7 @@ async function main(): Promise { check(!!(kByName(bettorToken)!.isWritable), "close_bet: bettor_token — writable"); check(!!(kByName(vaultToken)!.isWritable), "close_bet: vault_token — writable"); check(kByName(TOKEN_PROGRAM_ID) !== undefined && !kByName(TOKEN_PROGRAM_ID)!.isWritable, "close_bet: token_program присутствует"); - check(close.keys.length === 8, "close_bet: 8 аккаунтов (IDL-состав)"); + check(close.keys.length === 9, "close_bet: 9 аккаунтов (IDL-состав)"); if (failed > 0) { console.error(`\ncheck: ${failed} проверок ПРОВАЛЕНО`); diff --git a/relayer/src/config.ts b/relayer/src/config.ts index 242a936..85ec6be 100644 --- a/relayer/src/config.ts +++ b/relayer/src/config.ts @@ -30,6 +30,13 @@ export interface Config { /** Bet amount bounds in token base units (NOT lamports); must match the on-chain `initialize` values. */ minAmount: number; maxAmount: number; + /** + * How many "фантики" (token base units) the localnet relayer mints into each + * bettor's ATA on start (analog of the SOL airdrop). Must cover the max + * bet size so a freshly funded bettor can place a full-size bet. Only used + * when `allowAirdrop` is true (localnet). + */ + startBalance: number; multiplierBps: number; expirySeconds: number; } @@ -64,6 +71,9 @@ export function loadConfig(): Config { maxAmount: envNum("SMART_MAX_AMOUNT", 10_000_000_000), // 10 000 фантиков multiplierBps: envNum("SMART_MULTIPLIER_BPS", 13_000), // 1.3x expirySeconds: envNum("SMART_EXPIRY_SECONDS", 15), + // Стартовый баланс фантиков, который локальный релейер mintTo'ит беттору + // (аналог SOL-airdrop). По умолчанию равен maxAmount — хватает на максимум ставки. + startBalance: envNum("SMART_START_BALANCE", 10_000_000_000), }; } diff --git a/relayer/src/index.ts b/relayer/src/index.ts index fe4e7a4..e717ba6 100644 --- a/relayer/src/index.ts +++ b/relayer/src/index.ts @@ -94,7 +94,7 @@ async function main(): Promise { // mint ещё не создан (плейсхолдер) — дефолт из ТЗ контракта } - const global = await readGlobal(program, program.programId); + const global = await readGlobal(program, program.programId, cfg.tokenMint); if (!global) { if (!process.argv.includes("--init")) { throw new Error( @@ -127,7 +127,14 @@ async function main(): Promise { const req = nextBetRequest(cfg.minAmount, cfg.maxAmount); await fundBettor(connection, req.bettor.publicKey); // Беттору нужен токен-аккаунт (ATA) — без него create_bet не пройдёт. - await ensureBettorTokenAccount(connection, admin, cfg.tokenMint, req.bettor.publicKey); + // На localnet (allowAirdrop) после создания ATA наливает фантики (аналог SOL-airdrop). + await ensureBettorTokenAccount( + connection, + admin, + cfg.tokenMint, + req.bettor.publicKey, + cfg.allowAirdrop ? BigInt(cfg.startBalance) : undefined + ); const entryPrice = await getPrice(); await createBet(program, cfg.tokenMint, req.bettor, { @@ -141,7 +148,7 @@ async function main(): Promise { ); await sleep((cfg.expirySeconds + 1) * 1000); - const g0 = await readGlobal(program, program.programId); + const g0 = await readGlobal(program, program.programId, cfg.tokenMint); const id = g0!.counter.subn(1); await settleBet(program, id, entryPrice, admin, req.bettor.publicKey, cfg.tokenMint); diff --git a/relayer/src/ops.ts b/relayer/src/ops.ts index 24e9af0..7d57319 100644 --- a/relayer/src/ops.ts +++ b/relayer/src/ops.ts @@ -23,7 +23,8 @@ const BPS_DIVISOR = 10_000n; */ export async function readGlobal( program: Program, - programId: PublicKey + programId: PublicKey, + mint: PublicKey ): Promise<{ counter: BN; minAmount: BN; @@ -33,7 +34,7 @@ export async function readGlobal( paused: BN; admin: PublicKey; relayer: PublicKey; - /** Баланс vaultToken (PDA-ваула) в токен-юнитах; "0", если аккаунт ещё не создан. */ + /** Баланс vault ATA (owner = PDA-ваула) в токен-юнитах; "0", если аккаунт ещё не создан. */ vaultBalance: string; } | null> { const global = globalPda(programId); @@ -41,9 +42,8 @@ export async function readGlobal( if (!raw) return null; let vaultBalance = "0"; try { - const bal = await program.provider.connection.getTokenAccountBalance( - vaultPda(programId) - ); + const vaultAta = await getAssociatedTokenAddress(mint, vaultPda(programId), true); + const bal = await program.provider.connection.getTokenAccountBalance(vaultAta); vaultBalance = bal.value.amount || "0"; } catch { vaultBalance = "0"; @@ -94,7 +94,7 @@ export async function createBet( bettor: Keypair, args: { side: number; amount: number; entryPrice: number } ): Promise { - const global = await readGlobal(program, program.programId); + const global = await readGlobal(program, program.programId, mint); if (!global) throw new Error("Contract not initialized"); const id = global.counter; @@ -108,7 +108,7 @@ export async function createBet( .accountsPartial({ bettor: bettor.publicKey, bettorToken: await getAssociatedTokenAddress(mint, bettor.publicKey), - vaultToken: vaultPda(program.programId), + vaultToken: await getAssociatedTokenAddress(mint, vaultPda(program.programId), true), tokenProgram: TOKEN_PROGRAM_ID, }) .signers([bettor]) @@ -140,7 +140,7 @@ export async function closeBet( relayer: relayer.publicKey, bettor, bettorToken: await getAssociatedTokenAddress(mint, bettor), - vaultToken: vaultPda(program.programId), + vaultToken: await getAssociatedTokenAddress(mint, vaultPda(program.programId), true), tokenProgram: TOKEN_PROGRAM_ID, }) .signers([relayer]) @@ -151,12 +151,17 @@ export async function closeBet( * Создаёт ATA беттора, если ещё нет (рент платит админ; сам ATA не требует * подписи владельца). Без аккаунта createBet не пройдёт: контракт сам * его не инициализирует. + * + * При `startBalance` !== undefined (только localnet, `cfg.allowAirdrop === true`) + * после создания ATA доналивает беттору фантики до startBalance (аналог + * SOL-airdrop, swap ещё не подключён). `admin` — mint authority. */ export async function ensureBettorTokenAccount( connection: Connection, admin: Keypair, mint: PublicKey, - bettor: PublicKey + bettor: PublicKey, + startBalance?: bigint ): Promise { const ata = await getAssociatedTokenAddress(mint, bettor); try { @@ -165,13 +170,25 @@ export async function ensureBettorTokenAccount( await createAssociatedTokenAccount(connection, admin, mint, bettor); console.log(`bettor ATA created ${bettor.toBase58()} -> ${ata.toBase58()}`); } + if (startBalance !== undefined) { + const bal = await getAccount(connection, ata); + const current = BigInt(bal.amount); + const topUp = startBalance - current; + if (topUp > 0n) { + await mintTo(connection, admin, mint, ata, admin, topUp); + console.log( + `bettor funded ${bettor.toBase58()} +${topUp} fant base units (ATA total ${startBalance})` + ); + } + } } /** * Догружает ваулт (house bankroll), чтобы хватило на выплаты 1.3x. * Теперь это ТОКЕН, не SOL: на localnet mint-авторитетом выступает admin - * (см. state.rs: decimals = 6), так что наливается через mintTo в PDA-ваулт. - * На mainnet наливается off-chain переводом фантиков (вне этого CLI). + * (см. state.rs: decimals = 6), так что наливается через mintTo в ATA-ваулт + * (токен-счёт с owner = PDA([global, vault])). На mainnet наливается + * off-chain переводом фантиков (вне этого CLI). */ export async function ensureVaultFunded( connection: Connection, @@ -180,18 +197,19 @@ export async function ensureVaultFunded( cfg: Config ): Promise { const mint = cfg.tokenMint; - const vaultToken = vaultPda(program.programId); + const vault = vaultPda(program.programId); + const vaultAta = await getAssociatedTokenAddress(mint, vault, true); - // PDA-ваулт (ATA с owner = PDA([global, vault])) может не существовать — + // ATA-ваулт (owner = PDA([global, vault])) может не существовать — // контракт его не создаёт. ATA не требует подписи owner (allowOwnerOffCurve), // поэтому создаём её от имени admin. - await getOrCreateAssociatedTokenAccount(connection, admin, mint, vaultToken, true); + await getOrCreateAssociatedTokenAccount(connection, admin, mint, vault, true); - const bal = await connection.getTokenAccountBalance(vaultToken); + const bal = await connection.getTokenAccountBalance(vaultAta); const current = BigInt(bal.value.amount || "0"); const target = (BigInt(cfg.maxAmount) * BigInt(cfg.multiplierBps) / BPS_DIVISOR) * 2n; if (current >= target) return; const topUp = target - current; - await mintTo(connection, admin, mint, vaultToken, admin, topUp); + await mintTo(connection, admin, mint, vaultAta, admin, topUp); console.log(`vault funded +${topUp} token base units (target ${target})`); }