1
Deposit
Call
deposit with a commitment and an amount on the denomination ladder (powers of
ten). Anything else reverts — an unusual amount would identify you, and would shrink the
anonymity set for everyone else.Keep the note’s nullifier and secret locally. They are the only way to spend it.2
Wait for the graft
Your commitment sits in a queue until the sequencer inserts it. You cannot bet from a note
that is not yet in the tree, because there is no Merkle path to prove membership with.
3
Fetch a Merkle path
Your client asks the sequencer for the sibling hashes between your leaf and the root. The
sequencer can produce a path but cannot produce a proof — it never sees your secrets,
and the path alone is useless without them.
4
Build the proof
Your client feeds the note, the path, and the encrypted stake into the proving circuit. The
proof establishes two things at once: that you own an unspent note in the tree, and that
the ciphertext you are publishing encrypts exactly that note’s value — without revealing
either.
Proving is not instant. Measured in Node: around 2.3 seconds, with roughly 11.8 MB of
circuit artifacts to fetch first. Cache them, and prove in a Web Worker or the UI will
freeze.
5
Submit
Call
betEncrypted with the proof, the public signals, and the ciphertext — declaring the
uniform gas limit, never an estimate. An estimate leaks which action you took.After the market resolves
1
Redeem privately
Prove your position won and receive a settled note. No collateral moves and no amount
is published — this is the step that breaks the link between position and payout.
2
Withdraw
Spend the settled note for public collateral, in a ladder amount, keeping the remainder as
a private change note. Withdraw whenever you like; timing is part of your privacy.