Ro-Sham-Bo

Escrowed USDC · commit–reveal · house rake 250 bps · Base Sepolia only

Testnet demo · no mainnet

Contract not deployed

Address is the zero placeholder. Parent must provision secret PRIVATE_KEY (Base Sepolia deployer), then forge script script/Deploy.s.sol --rpc-url https://sepolia.base.org --broadcast --chain 84532and set NEXT_PUBLIC_ROSHAMBO_ADDRESS on Vercel.

Table

chain —

Salt stays in this browser. Commit and reveal from the same device. After commit, move + salt are frozen for this gameId.

Match ticket

Load a game id after deploy, or create one.

contract 0x0000000000000000000000000000000000000000

usdc 0x036CbD53842c5426634e7929541eC2318f3dCF7e

Commit–reveal fairness

  1. Both players escrow the same USDC stake on-chain before any move is shown.
  2. Each posts keccak256(abi.encodePacked(gameId, player, move, salt)) so the throw stays hidden.
  3. Salt (32 random bytes in this browser) stops brute-forcing three moves; gameId/player bind the hash.
  4. Reveal must match the commitment; then the contract scores rock/paper/scissors.
  5. Timeouts: one-sided action forfeits (minus rake); neither acts → full refund, no rake.
  6. House rake defaults to 250 bps, snapshot at create, capped at 1000 bps. Ties take 0 rake.

Rake owns product/debug. Kiln owns this code path. Not audited. Base Sepolia only.