Reveal
Reveal draws shots with the secrets behind their commitments: a comma-separated list of pool:shot:secretHex, any pools, in one transaction — the keeper sends every shot that is due in one call, so a run of shots on one block never outpaces it. Anyone may call it; the secret is the proof, and the caller is tipped RevealTip out of each shot revealed. Shots go in order: an earlier one still pending must come first (in the list, or before). An entry not yet due is skipped, one with a wrong secret or already resolved is skipped with an event, so a stale entry never voids the rest; a malformed one (no such pool or shot, a cancelled pool, not pool:shot:secret) aborts the whole call, which only the keeper's own bug could send. The reveal must land in the blocks CommitH+ShotDelay through CommitH+ShotDelay+ShotWindow; later, or on a pool that has closed, the shot is already void (settleShots runs first): into the pot as a miss. A hit pops the bubble: the pool closes now with the shooter as its winner, settled at Claim.
Command
# WARNING: This command is running in an INSECURE mode.
# It is strongly recommended to use a hardware device for signing
# and avoid trusting any computer connected to the internet,
# as your private keys could be exposed.
gnokey maketx call -pkgpath "gno.land/r/g1leu8d2vsplhehcfkjg50mwgdpxdkt8tztu95wr/bubblerumble4" -func "Reveal" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -chainid "gnoland-1" -remote "https://rpc.gno.land" ADDRESSgnokey query -remote "https://rpc.gno.land" auth/accounts/ADDRESS
gnokey maketx call -pkgpath "gno.land/r/g1leu8d2vsplhehcfkjg50mwgdpxdkt8tztu95wr/bubblerumble4" -func "Reveal" -args $'' -gas-fee 1000000ugnot -gas-wanted 1_000_000_000 -send "" -broadcast=false ADDRESS > call.tx
gnokey sign -tx-path call.tx -chainid "gnoland-1" -account-number ACCOUNTNUMBER -account-sequence SEQUENCENUMBER ADDRESS
gnokey broadcast -remote "https://rpc.gno.land" call.tx