Kaspa Forge
Документация · Arena · Mainnet beta

Как работает KaspaForge Arena

KaspaForge Arena — некастодиальный протокол для доказуемо честных игр. Первая живая игра — блекджек с дилером дома в публичной mainnet-бете. Любой разблокированный профиль Desk может войти за OPEN-стол со своим ключом кошелька. Ковенанты Kaspa L1 контролируют деньги и допустимые состояния, а zero-knowledge proofs проверяют закреплённую колоду и перемешивание. Граница доверия к текущему hosted prover прямо описана ниже.

Также доступны Arena Dice. Вторая публичная mainnet-игра использует два зафиксированных seed, детерминированный 16-битный бросок и ковенантный расчёт. Откройте правила, комнаты, комиссии и проверку Dice.
Граница публичной беты. Arena использует реальные KAS в mainnet. Доступны шесть OPEN-столов дома S17 на уровнях 5, 10, 25, 50, 75 и 100 KAS с каждой стороны; allowlist отдельных кошельков для публичных столов нет. Протокол прошёл повторные состязательные ревью и сквозные партии, но бета-софт всё ещё несёт риск. Играйте только с опубликованной ставкой, храните свежую резервную копию Desk и проверяйте рецепт расчёта.

Одна партия — пять независимо проверяемых слоёв

Здесь нет одного сокращения «доверьтесь ZK»: каждый слой доказывает или исполняет свою часть партии.

01 · СлучайностьCommit–reveal

Дилер и игрок фиксируют seed до того, как кто-либо сможет подстроиться под получившееся перемешивание.

02 · Скрытое вычислениеzkVM / Groth16

Доказывает детерминированное перемешивание и закреплённую колоду, не публикуя будущие карты игроку или в чейн.

03 · Открытие картMerkle-дерево

Каждая показанная карта сопровождается путём к корню колоды, зафиксированному доказательством.

04 · ДеньгиКовенант Kaspa L1

Допускает только разрешённые Room → Game переходы, таймауты и ограниченные выплаты.

05 · СогласиеПроверка кошельком

Браузер проверяет комнату и точную JOIN-транзакцию до подписи.

Как генерируется ZK-доказуемая колода

  1. Дилер делает commit первым. Комната фиксирует обязательство seed дилера до входа игрока. Оно не раскрывает seed, но не даёт заменить его позже.
  2. Игрок входит со своим commitment. Одно подтверждение паролем создаёт игровую идентичность, проверяет и подписывает точный JOIN и публикует commitment игрока.
  3. Игрок раскрывает seed. Reveal обязан соответствовать раннему commitment. Seed обеих сторон, идентификатор партии и правила теперь задают один точный вход перемешивания.
  4. Программа выполняет несмещённый детерминированный Fisher–Yates. Одна и та же байт-в-байт программа Arena обязана получить одинаковый порядок 52 карт из одинаковых входов. Серверного API «выбрать колоду» нет.
  5. Скрытая колода становится SHA-256 Merkle-деревом. Публичен корень, будущие карты скрыты от игрока и чейна. Позже карта открывается вместе с путём, доказывающим её место именно в этой колоде.
  6. Prover строит доказательство для конкретной партии. Журнал zkVM связывает правила, идентификатор партии, commitments и корень колоды. Подставить proof от другой комнаты нельзя.
  7. Проверка происходит до раздачи. Для новых публичных комнат proof строит hosted RTX prover, но артефакт принимается только после независимой CPU-проверки. Лишь затем ковенант может перейти в состояние dealt.

Что ZK доказывает — и чего не доказывает

ZK доказывает скрытую колоду и перемешивание. Мы намеренно не называем это доказательством «всей игры». Commitments не дают заменить seed; Merkle-пути аутентифицируют открытые карты; ковенант исполняет допустимые ходы и выплаты; клиент проверяет то, что подписывает.

Граница текущего hosted prover. Живой дилер — дом KaspaForge, а не другой игрок. Для построения proof hosted prover получает seed дилера и игрока и может восстановить всю колоду. Проверенный proof не даёт подставить другую колоду после commitments, а ковенант ограничивает ходы и выплаты; ZK не скрывает witness от prover и не превращает нынешнего дилера в P2P. Настоящий P2P-дилер игрока с privacy-preserving proving — отдельное исследование, а не живая функция.

От открытого стола до ончейн-рецепта

  1. Room. Дилер дома KaspaForge финансирует OPEN Room covenant своей ставкой, залогом живости и резервом сетевой комиссии.
  2. Sit down. Любой разблокированный профиль Desk может занять доступное OPEN-место со своим P2PK-ключом; allowlist отдельных кошельков нет. Desk проверяет комнату, при необходимости готовит точную монету игрока, локально подписывает JOIN и запускает seed-flow одним вводом пароля.
  3. Prove and deal. Hosted proof генерируется, независимо проверяется и связывается с переходом, фиксирующим корень колоды.
  4. Play. Hit и stand двигают единственный Game UTXO. Открытые карты сверяются с Merkle-путями; недопустимый из текущего состояния переход отвергается.
  5. Dealer resolution. S17 входит в правила текущих комнат и публичные входы proof. Дилер не может сменить правило после финансирования комнаты.
  6. Settlement. Терминальная ветка платит ограниченные выходы игрока, дилера, сервиса и prover и записывает точную транзакцию. Лобби Arena связывает рецепт со списком завершённых партий.

Текущая экономика бета-стола

Реальная ставка
5, 10, 25, 50, 75 или 100 KAS с каждой стороны. На каждом уровне стоит по одному доступному OPEN-столу S17.
Залоги живости
Игрок добавляет 2 KAS, дилер — 5 KAS. При штатном расчёте залоги возвращаются и защищают timeout-поведение.
Сетевой резерв
Дилер вносит измеренный резерв на комиссии ходов. Это не ставка; неиспользованная часть возвращается при расчёте.
Игровой сервис
0,9% банка двух ставок: 0,09, 0,18, 0,45, 0,9, 1,35 или 1,8 KAS. Комиссия взимается только с победителя; залоги и резерв в её базу не входят.
Hosted proof
0 KAS на всех текущих OPEN-столах. Сейчас расходы на HOSTED proving покрывает KaspaForge.
Выплаты
Обычный выигрыш платит 1:1 до заявленной комиссии сервиса с победителя. Двухкарточный natural игрока против ненатуральной руки дилера платит 3:2. Правило выплаты закреплено идентификатором программы комнаты и не может измениться посреди партии.

Как проверить свою партию

  1. Откройте Verify game на столе: там видны game id, правила, commitments, корень колоды, статус proof и журнал ходов.
  2. После расчёта откройте Receipt в блоке Последние завершённые партии. Ссылка ведёт к точной терминальной транзакции в публичном Kaspa explorer.
  3. Проверьте сохранение стоимости: блокировка выбранного стола равна выходам участников + выходу сервиса + выходу hosted prover + сетевым комиссиям. Неиспользованный резерв уже входит в выплаты участникам и второй раз не считается.
  4. Если proof, проекция комнаты или цепочка подписанного admission отсутствует либо невалидна, клиент обязан отказать, а не просить довериться серверной копии.

Запусти публичный верификатор

Отдельный KaspaForge Arena Verifier открывает оба commitment, восстанавливает полную колоду и Merkle root, сверяет раскрытые карты с принудительными позициями и воспроизводит журнал веток. В репозитории лежат mainnet-вектор завершённой партии, точный lock зависимостей и mutation-тесты. Пользовательское описание, правила и текущие столы собраны на странице Kaspa Blackjack.

git clone https://github.com/pcdoctormsk-ctrl/arena-verifier.git
cd arena-verifier
./scripts/check.sh
cargo run --locked --manifest-path arena-verify/Cargo.toml -- /path/to/proof.json

Граница v0.1: это проверка согласованности опубликованных свидетельств, а не Kaspa light client. CLI не загружает байты транзакций и сам не проверяет включение в DAG, байты Groth16 proof, законность ветки H17/S17 или выходы settlement. Ссылки на транзакции проверяются отдельно; SCOPE.md в репозитории перечисляет все проверяемые и непроверяемые поля.

Почему первая игра Arena — блекджек

Блекджек достаточно прост, чтобы довести партию до конца, и достаточно сложен, чтобы нагрузить всю платформу: скрытая информация дилера, случайная колода, варианты H17/S17, решения игрока, стадии proving, таймауты, потолки комиссий и терминальная выплата из общих средств. Повторно используемый результат больше одной карточной игры: admission, генератор программы, граница кошелька, proving pipeline, автомат Room → Game и методика аудита подходят будущим доказуемо честным играм.