Ice Cold casino

USPTO 19/811,546 · patent pending

A shoe no single party can open.

Ice Cold Casino is a zero-knowledge mental-poker stack. Players jointly encrypt and shuffle the shoe, seal partial decryptions to one another, and prove the showdown. The verifier checks a Groth16 proof and two hashes. The faces stay off the public tape.

GitHub organization Circuit repository

Four phases

One protocol.

Every game runs the same sequence. Each phase is a Circom circuit. A Poseidon commitment threads the private witness from one phase to the next, so the witness is never written onto the public tape.

01 · Register

Prove the key.

Each party proves pk = sk · G on BabyJubJub and emits a padding ciphertext for seats that are empty.

02 · Shuffle

Permute, then re-encrypt.

The encrypted shoe is permuted under a private matrix and re-randomized under the aggregate key. The public statement is that the output is a re-encryption of a permutation of the input.

03 · Share

Seal every partial.

Each registered key computes its partial decryption and seals that payload to every other key. The partial itself is not published.

04 · Showdown

Open, evaluate, commit.

Partials are aggregated, opened values are checked against the legal encoding, and the game function runs in-circuit. The result leaves as a polynomial hash. Any key that already holds the sealed partials can produce that proof.

Threshold ElGamal

Every key, or no face.

A shoe index — card, pocket, die, reel stop, or ball — is a curve point P(v) = (v + 1) · G. The shoe is encrypted under the sum of every registered public key. Recovering a plaintext takes a contribution from each secret.

Aggregate decryptionP = c1 − Σ (sk_i · c0)
Input hash

Poseidon commitment over the shoe, the keys, and the designation.

Proof

Groth16 attestation that the circuit accepted the private witness.

Output hash

Polynomial commitment to the sealed payloads or the evaluated result.

Who sits

Two kinds of table.

Hold'em is peer to peer. House games add one key whose circuit work is the shuffle and the share.

Hold'em

Every seat is a player.

Two to ten players each register, shuffle, and share. One of them proves showdown over the holes, the board, and the winner masks. Pot membership is the only private extra. Street betting stays outside these circuits.

House games

The house holds a key.

Blackjack, roulette, craps, keno, and slots seat the house. It shuffles the shoe and seals partials with everyone else, so its secret is inside the aggregate and the player’s partials are sealed to it. Bet commits, blackjack hit, stand, and split, and a player’s own showdown are separate circuits.

A hand can still close when a player never submits a showdown. Share already delivered every partial to the house. The house runs that same showdown circuit with its own key. The verifier still sees a proof and a hash, and the faces stay off the public tape.

Example

A hand with two players.

Alice is seat 0 and Bob is seat 1. The poker circuits are compiled for ten seats, so the other eight stay padding. Street betting sits outside the proofs.

  1. 1

    Register

    Each player proves a key. The shoe will be encrypted under their sum.

    Alice pk_A = sk_A · G
    Bob pk_B = sk_B · G
  2. 2

    Shuffle

    Each permutation is a private witness. The public statement is that the output shoe is a re-encryption of a permutation of the input.

    1. Alice permutes the 52 ciphertexts and re-encrypts them under pk_A + pk_B.
    2. Bob permutes that output and re-encrypts it under the same key.
  3. 3

    Share

    The deal window is 25 positions. Each player seals a partial of every position to the other. The card mask picks a real partial, sk · c0, or the identity. The identity leaves that position closed.

    Alice
    01
    Bob
    23
    Board
    2021222324

    Hole slots 4 through 19 belong to the empty seats and stay padding.

  4. 4

    Betting

    Blinds and the streets are between Alice and Bob. Wager amounts are not witnesses in these circuits.

  5. 5

    Showdown

    One of them aggregates both partials, checks each opened card against P(v), and scores both seven-card hands. The proof commits winner masks. If Alice never submits, Bob already holds her sealed partials and can close the hand. The same is true the other way.

    Public Input hash Groth16 proof Winner-mask hash

Parameters

The game is the shoe.

Encryption does not change. The shoe size, which positions open, and the evaluation function do.

Hold'em
Peer to peer. Best five-card hand.
Blackjack
Player against the dealer, with hit, stand, and split.
Baccarat
Player, banker, or tie under the tableau.
War
Higher rank, and a second card when the first ties.
Roulette
One pocket on a 37- or 38-number wheel.
Craps
Two dice, come-out or point, against table bets.
Keno
Twenty draws against an encrypted ticket.
Slots
A three- or five-reel window against a paytable.
Bingo
Called balls on a 75- or 90-ball card.

Audit

What is published.

The public tree is the Circom sources and the protocol notes. It exists for audit and transparency. Copyright © 2026 Barrett Harber. All rights reserved. USPTO application 19/811,546 is patent pending. No copyright license and no patent license are granted.

Arcium MPC, the Solana programs, and the native application live outside that repository. Those layers consume the same hashes and proofs.