10 Commits

Author SHA1 Message Date
Caffeine 42dfa58582 feat(contract): возврат залога при ничьей (exit_price == entry_price)
Раньше при равенстве цен close_bet делал `return Ok(())` — ставка навсегда
оставалась в статусе open, а залог запирался в ваулте (замер: 33.6% окон).
Из-за правила «одна открытая ставка на адрес» игрок получал 409 пожизненно.

Теперь ничья возвращает залог целиком (без множителя) и финализирует ставку:
- constants.rs: STATUS_REFUNDED = 3 (0/1/2 не тронуты — зашиты в шлюз и в цепи)
- close_bet.rs: CPI-перевод amount из ваулта беттору под сидами ваулт-PDA,
  запись exit_price/status, событие BetClosed(status=3, payout=amount)
- settle.ts: STATUS_REFUNDED, statusName "refunded", статус 3 в условии финализации
- check.ts: проверка формы события refunded
- тест close_bet_equal_price_stays_open → close_bet_equal_price_refunds
  (+ повторное закрытие отклоняется)

Проверено: cargo test-sbf 10/10, npm run typecheck EXIT=0, две мутации
(снятие статуса, снятие перевода) валят именно новый тест.
Задеплоено: программа 9ALs… (хэш из цепи совпал побайтово), шлюз rev 15.
2026-09-14 02:09:08 +03:00
Caffeine f937c8993d fix: vault как ATA + фандинг беттора; E2E на localnet ok 2026-09-10 02:12:07 +03:00
Caffeine 45d64d45a7 feat: migrate smart-updown contract to SPL-token (фантики)
- create_bet: escrow фантиков с bettor на vault (PDA[global,vault]) через anchor_spl::token
- close_bet: выплата фантиков из vault на bettor (CPI с signer_seeds vault)
- state/constants: comments про единицы (token units decimals=6), + VAULT_SEED
- IDL регенерирован (idl/ + relayer/idl/) с аккаунтами bettor_token/vault_token/token_program
- тесты обновлены под токен (10/10 + doctest)
2026-09-09 22:00:41 +03:00
subochev ff2289e68d fix: вернуть declare_id на 9ALs (согласовать с Anchor.toml/CI/нашим keypair); контракт живёт на нашем адресе 2026-09-05 17:31:10 +03:00
subochev 4cf583f497 fix: declare_id = FMMD (фактический адрес развёрнутой программы, совпадает с program-id бэка) 2026-09-03 21:08:42 +03:00
subochev 9f100ee122 feat: миграция smart-updown на anchor 0.31.1 + solana 2.x (SBPFv3)
- anchor-lang 0.31.1 вместо 2.0-rc/anchor-next (git)
- Address -> Pubkey (state/events/instructions)
- убран #[discrim], добавлен #[derive(InitSpace)] + space=8+INIT_SPACE
- тесты переписаны на solana-program-test 2.x (10 passed)
- сборка SBPFv3 через cargo build-sbf --tools-version v1.57
- deploy успешен в нашу сеть (agave 4.2.2, SBPFv3)
2026-09-03 05:27:34 +03:00
subochev b976cd0629 anchor: [provider] cluster=localnet — и anchor test, и деплой идут на localhost:8899, а не в devnet 2026-09-02 20:56:58 +03:00
subochev aed2c77b05 sync: Program ID E7Hg->9ALs во всех исходниках, IDL, README, deploy-localnet 2026-09-02 17:47:09 +03:00
subochev 7439862bdb feat: devnet CI/CD — новый dev-ключ, Anchor=devnet, воркфлоу деплоя по релизу 2026-09-02 16:09:38 +03:00
subochev 5cf3a7a8d1 fix: распаковать источник из обёртки smart-updown в корень ветки 2026-09-02 15:36:21 +03:00