✓ Provably fair — the seed was committed on-chain before play, the exact step stream was signed by the player's key, and every roll, decision, and payout below is re-derived from public inputs and matches the on-chain settlement.
Verified in your browser
Re-deriving every check from chain reads in this browser — reconstructing the game trees, re-rolling the seed, recovering the signature…
Don't trust this site's RPC either? Paste any HyperEVM RPC URL and re-run — the verification then never touches this site. The algorithm is verifyChannel in @freeroll/sdk — run it yourself from a terminal for zero trust in this page.
This channel re-armed itself mid-session 9 times: each checkpoint settled the epoch's net, revealed its seed, and committed a fresh one — one continuous session, several sealed proofs. Every epoch below is replayed from its checkpoint transaction's signed stream — rolls re-derived, nets recomputed, signatures recovered ✓ and the chain of commitments anchors to the on-chain channel state. Every settled figure below is decoded from the checkpoint transaction's own event — never this site's database.
›Epoch 034 rounds · 97 steps · $23.50 wagered−$5.92✓ replayed from the receiptcheckpoint tx →
committed0xfc4d3bb0b3d29783a8bf56f008115121b0a193b052bebc7bf5557d1a1098e9c5revealed serverSeed0x29586d7a5fabf62131974131a37fb5bd331661459f841693c794d34b741ed96fchainclientSeed (this epoch)0x99dfe2ae8d2fb6e96e4d34e1d9a9a6ece5bc0c66821f4bfa44511de8d2ff7f26✓ preimage · ✓ signed root · ✓ session-key sig · ✓ net matches the receipt's event · ✓ wagered total ·
Proof of randomness · final epoch
✓1.The seed was committed before you played
This epoch's commitment was fixed on-chain by the previous checkpoint transaction (linked in the timeline above), before any of this epoch's steps. The seed revealed at close must hash back to that commitment — since keccak256 has no known way to find a second preimage, the house had exactly one seed it could ever reveal, chosen before it saw a single one of your bets.
Each step, your session key signed DrawCommit(channelId, steps, root) — a running hash-chain over every round you entered, every decision you took, and every reveal you requested, signed before the outcome was shown. The close can only settle a stream and count carrying your signature: the house can't add, drop, or reorder a single step.
t3 · you chose option 1 of 3 · worth 0.92× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t4 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t8 · you chose option 1 of 3 · worth 1.40× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t13 · you chose option 1 of 3 · worth 0.85× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t18 · you chose option 2 of 3 · worth 0.57× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t23 · you chose option 2 of 3 · worth 0.63× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t31 · you chose option 1 of 3 · worth 1.79× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t32 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t42 · you chose option 1 of 24 · worth 0.98× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t43 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairlost · −$0.20
6483
0100008285
landed · bucket 2/480.8% chance · pays 0.80× · $0.80 on $1.00
round 10$1.00 staked$0.80 paid−$0.20
Round 10 · played against Fog — sealed tree #124game stats →
t45 · you chose option 1 of 24 · worth 0.98× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t46 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairlost · −$0.20
1667
0100008285
landed · bucket 2/480.8% chance · pays 0.80× · $0.80 on $1.00
round 11$1.00 staked$0.25 paid−$0.75
Round 11 · played against Fog — sealed tree #124game stats →
t48 · you chose option 4 of 24 · worth 0.98× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t49 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairlost · −$0.75
5393
0100005546
landed · bucket 1/255.5% chance · pays 0.25× · $0.25 on $1.00
round 12$1.00 staked$0.80 paid−$0.20
Round 12 · played against Fog — sealed tree #124game stats →
t51 · you chose option 1 of 24 · worth 0.98× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t52 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairlost · −$0.20
1510
0100008285
landed · bucket 2/480.8% chance · pays 0.80× · $0.80 on $1.00
· you chose option 1 of 3 · worth 0.58× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t11 · you chose option 2 of 3 · worth 0.61× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t12 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t18 · you chose option 1 of 3 · worth 1.64× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t23 · you chose option 2 of 3 · worth 1.16× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t30 · you chose option 2 of 3 · worth 0.61× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t31 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 2 of 3 · worth 0.62× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 1 of 3 · worth 0.82× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.57× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t57 · you chose option 2 of 3 · worth 0.69× under optimal play · best free option was 0.71× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t58 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t64 · you chose option 1 of 3 · worth 1.70× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t65 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t69 · you chose option 1 of 3 · worth 1.70× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t70 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t74 · you chose option 2 of 3 · worth 1.31× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t75 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 3 of 3 · worth 2.18× under optimal play · for 100% more stake — no roll here, the choice was yours. Values come from the sealed tree itself.
t87 · you chose option 2 of 3 · worth 0.85× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t88 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 2 of 3 · worth 0.57× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.75× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t116 · you chose option 2 of 3 · worth 0.68× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t117 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 1 of 3 · worth 0.46× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
Rounds from here draw their roll graphics when opened — tap a round to see where each roll landed. The browser panel verifies every round either way.
›round 21$0.75 staked$1.50 paid+$0.75
Drawing this round's rolls…
›round 22$0.37 staked$0.74 paid+$0.37
Drawing this round's rolls…
›round 23$0.37 staked$0.00 paid−$0.37
Drawing this round's rolls…
›round 24$0.74 staked$1.48 paid+$0.74
Drawing this round's rolls…
›round 25$1.48 staked$2.96 paid+$1.48
Drawing this round's rolls…
›round 26$2.23 staked$4.46 paid+$2.23
Drawing this round's rolls…
›round 27$2.24 staked$4.48 paid+$2.24
Drawing this round's rolls…
›Epoch 21 round · 6 steps · $8.90 wagered+$8.90✓ replayed from the receiptcheckpoint tx →
committed0x5199b6015f78c018c6700431d818e619ab3a3ff56575ab6366ac9eef4d64f5edrevealed serverSeed0xeb92b338fe97e2d0200b18c19fc189ddbcfe37dcbfe1eb7eff97fc812d5cd265chainclientSeed (this epoch)0xb7fc70c9cbcafd5e932a63f103d6abe3b8a8c05c0d57f51c952fdc02c6842aa5✓ preimage · ✓ signed root · ✓ session-key sig · ✓ net matches the receipt's event · ✓ wagered total · ✓ stepsre-armed: budget $17.79 · win window $185.80 · fresh commit
t3 · you chose option 3 of 3 · worth 2.67× under optimal play · for 100% more stake — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t4 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t4 · you chose option 2 of 3 · worth 0.57× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t5 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t6 · you chose option 1 of 2 · worth 0.82× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t7 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t11 · you chose option 1 of 3 · worth 1.79× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t12 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t16 · you chose option 1 of 3 · worth 0.83× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t17 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t21 · you chose option 1 of 3 · worth 1.42× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t22 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +1.00×
3979
01000065097723
landed · bucket 1/365.1% chance · pays 2.00×
›Epoch 433 rounds · 199 steps · $38.33 wagered+$7.39✓ replayed from the receiptcheckpoint tx →
committed0x097939ccbe520ca73cf70314be5bf49306466f3f7a95913793b4038c2c462728revealed serverSeed0xe40cfa71a378fd28fa289877257463cc3ce41af68a3c799621c6834c05b3d7b7chainclientSeed (this epoch)0x427e663b0a2b7e5689c94746098ff89209a7bd9249b56a8ce20219262274af8e✓ preimage · ✓ signed root · ✓ session-key sig · ✓ net matches the receipt's event · ✓ wagered total · ✓ stepsre-armed: budget $29.44 · win window $185.80 · fresh commit
t3 · you chose option 2 of 3 · worth 1.07× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t4 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t5 · you chose option 2 of 2 · worth 1.31× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t6 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t7 · you chose option 2 of 2 · worth 0.68× under optimal play · best free option was 0.83× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t8 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t13 · you chose option 1 of 3 · worth 0.79× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t14 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t18 · you chose option 2 of 3 · worth 0.96× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t19 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t25 · you chose option 3 of 3 · worth 2.52× under optimal play · for 100% more stake — no roll here, the choice was yours. Values come from the sealed tree itself.
t39 · you chose option 2 of 3 · worth 1.08× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t40 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t48 · you chose option 1 of 3 · worth 0.79× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t49 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 3 of 3 · worth 2.11× under optimal play · for 100% more stake — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.50× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 1 of 3 · worth 1.06× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t77 · you chose option 1 of 3 · worth 0.96× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t78 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t82 · you chose option 1 of 3 · worth 1.11× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t83 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t91 · you chose option 2 of 3 · worth 0.83× under optimal play · best free option was 0.85× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t92 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t101 · you chose option 1 of 3 · worth 1.12× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t102 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t106 · you chose option 2 of 3 · worth 0.75× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t107 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 3 of 3 · worth 2.18× under optimal play · for 100% more stake — no roll here, the choice was yours. Values come from the sealed tree itself.
Rounds from here draw their roll graphics when opened — tap a round to see where each roll landed. The browser panel verifies every round either way.
›round 21$1.00 staked$0.00 paid−$1.00
Drawing this round's rolls…
›round 22$1.00 staked$2.00 paid+$1.00
Drawing this round's rolls…
›round 23$1.00 staked$0.00 paid−$1.00
Drawing this round's rolls…
›round 24$1.00 staked$2.00 paid+$1.00
Drawing this round's rolls…
›round 25$1.00 staked$1.00 paid$0.00
Drawing this round's rolls…
›round 26$1.00 staked$0.00 paid−$1.00
Drawing this round's rolls…
›round 27$1.00 staked$0.00 paid−$1.00
Drawing this round's rolls…
›round 28$2.00 staked$4.00 paid+$2.00
Drawing this round's rolls…
›round 29$1.00 staked$2.00 paid+$1.00
Drawing this round's rolls…
›round 30$1.00 staked$0.00 paid−$1.00
Drawing this round's rolls…
›round 31$1.00 staked$2.50 paid+$1.50
Drawing this round's rolls…
›round 32$1.00 staked$2.00 paid+$1.00
Drawing this round's rolls…
›round 33$2.00 staked$4.00 paid+$2.00
Drawing this round's rolls…
›Epoch 539 rounds · 213 steps · $37.00 wagered−$3.80✓ replayed from the receiptcheckpoint tx →
committed0x41e5ba599a18a66d38dbb0bd4d8c2805119c1f6e999bf87e765de53ca87be7eerevealed serverSeed0x20c84f9ca2f94fad90f979b3751672472f6da0caf83c4dd86c8ab0a9916e898cchainclientSeed (this epoch)0x572ba7e1dd4e7a02fa3bb7d5c070686bd7373f063847ebe54c8aa411127e50af✓ preimage · ✓ signed root · ✓ session-key sig · ✓ net matches the receipt's event · ✓ wagered total · ✓ stepsre-armed: budget $25.53 · win window $185.80 · fresh commit
t3 · you chose option 1 of 3 · worth 1.20× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t4 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t8 · you chose option 2 of 3 · worth 1.13× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t9 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t16 · you chose option 2 of 3 · worth 1.05× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t17 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 2 of 3 · worth 0.70× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 1 of 3 · worth 0.82× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 1 of 3 · worth 1.06× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.68× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t60 · you chose option 1 of 3 · worth 1.64× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t61 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t65 · you chose option 1 of 3 · worth 1.62× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t66 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t70 · you chose option 1 of 3 · worth 1.76× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t71 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t75 · you chose option 3 of 3 · worth 2.52× under optimal play · for 100% more stake — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t76 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t81 · you chose option 2 of 3 · worth 0.79× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t82 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t88 · you chose option 2 of 3 · worth 1.01× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t89 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t95 · you chose option 2 of 3 · worth 0.79× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t96 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 1 of 3 · worth 0.58× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.62× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t4 · you chose option 1 of 3 · worth 0.46× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t5 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t9 · you chose option 1 of 3 · worth 0.85× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t10 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 2 of 3 · worth 0.60× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t22 · you chose option 2 of 3 · worth 0.83× under optimal play · best free option was 0.85× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t23 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 2 of 3 · worth 0.46× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t33 · you chose option 1 of 3 · worth 1.66× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t34 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t38 · you chose option 2 of 3 · worth 0.93× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t39 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 1 of 3 · worth 0.58× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.62× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t59 · you chose option 1 of 3 · worth 1.64× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t60 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 1 of 3 · worth 1.55× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t70 · you chose option 1 of 3 · worth 0.88× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t71 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t75 · you chose option 3 of 3 · worth 2.23× under optimal play · for 100% more stake — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t76 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 2 of 3 · worth 0.85× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.68× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t100 · you chose option 1 of 3 · worth 1.28× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t101 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 1 of 3 · worth 1.06× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.68× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
t3 · you chose option 1 of 3 · worth 0.85× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t4 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t8 · you chose option 1 of 3 · worth 0.85× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t9 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
· you chose option 1 of 3 · worth 1.55× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
· you chose option 2 of 3 · worth 0.68× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
›Epoch 81 round · 4 steps · $0.24 wagered+$0.36✓ replayed from the receiptcheckpoint tx →
committed0x5116b374df40066fcb49a2b5ad6ed4dfb88448fa18f2f226603647aa359ebe7brevealed serverSeed0xc3325d68bcfa128a75deba7cacfe2885b0c50874e9b6bce5fca3d7aec3436876chainclientSeed (this epoch)0x6889b711590e5d89e77b7868bce6954c708fe511a44bea70eff3d7cb4f873a0f✓ preimage · ✓ signed root · ✓ session-key sig · ✓ net matches the receipt's event · ✓ wagered total · ✓ stepsre-armed: budget $0.84 · win window $184.06 · fresh commit
fold t3 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/2 · +1.50×
6831
0100003077
landed · bucket 2/269.2% chance · pays 2.50×
Epoch 9 · finalsettled by the close — full replay below✓ commit chain anchors to the on-chain state
Re-folding the submitted stream — root_t = keccak256(root_(t−1), t, …) over each round's (stake, game), each decision's choice, and each reveal — must reproduce the root you signed, pinning the exact sequence to your signature.
Each roll is keccak256(serverSeed, clientSeed, channelId, t) mod 10000, walked through the on-chain game tree it was played against. Recomputed below — not read from anywhere.
Zero rounds were played — the close is a full refund, co-signed by the player's key (the house cannot refund unilaterally).
Final epoch · replayed net$0.00
Final epoch · settled by the close tx$0.00
Final epoch · recomputed wagered$0.00
Steps (signed stream vs settled)0 ✓
✓ The recomputed net, wagered total, and step count match the on-chain close settlement exactly — this proves the final epoch; each earlier epoch is verified against its own checkpoint transaction above.
Earlier epochs · 9 verified checkpoints−$10.46
Whole session−$10.46
✓5.Every round respected the committed caps
The channel committed hard walls before play: no stake above the budget of $0.84, and no single round whose worst-case win exceeds the committed per-round cap of $184.06 against its own game's maximum multiplier. Every round in the stream was re-checked against both — the same integer comparison the contract itself enforces. All rounds fit.
Games (on-chain catalog) chain
Each game is a value tree stored on-chain and validated by the contract when it was sealed — the edge under optimal play is enforced inside a fixed band, so no game referenced here can be unfair in either direction. The payouts above were walked from these exact trees, reconstructed from the chain's packed words.
GameNodesReturn (optimal)Max winDepth
What this page proves · what it assumes
Proven (recomputable by anyone)
The seed was fixed by an on-chain commitment before play, and the reveal matches it.
The settled stream carries the player's signature over its exact hash-chain root.
Every roll derives from seed ‖ clientSeed ‖ channelId ‖ t — expand any reveal above and derive it in your own browser.
The payouts fall out of the on-chain trees; the settled net, wagered total, step count, and per-round caps all match the replay.
The trees themselves are reconstructed from the chain's packed words — never this site's copy.
Assumed (and why it's bounded)
The randomness beacon committed its seed without bias. It commits FIRST and cannot adapt to your client seed; it is one named, swappable party — the honest register lives in the entropy docs.
The house settled the HIGHEST stream you signed. It provably cannot forge, reorder, or extend one (your signature pins that) — suppressing your best prefix is the one residual, bounded by the fact that your client holds the same signed stream and can submit the close itself.
This page's server rendered the narrative — which is why the browser panel at the top re-runs every check on your machine, against any RPC you choose.
fold t9 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
9102
01000063097687
landed · bucket 3/323.1% chance · pays 0.00×
fold t14 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · −1.00×
5671
0100005768
landed · bucket 1/257.7% chance · pays 0.00×
fold t19 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 8/8 · −1.00×
8968
010000770153923083077384646155384
landed · bucket 8/846.2% chance · pays 0.00×
fold t24 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 8/8 · −1.00×
9236
010000770153923083077384646155384
landed · bucket 8/846.2% chance · pays 0.00×
t37 · you chose option 2 of 3 · worth 0.50× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t38 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t39 · you chose option 1 of 2 · worth 0.58× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t40 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · −1.00×
2545
01000012077702
landed · bucket 2/365.0% chance · pays 0.00×
t6
fold t7 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · 0.00×
392
01000012077702
landed · bucket 1/312.1% chance · pays 1.00×
t13 · you chose option 1 of 2 · worth 1.29× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t14 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +1.00×
2302
01000046848192
landed · bucket 1/346.8% chance · pays 2.00×
fold t19 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · 0.00×
8803
01000075808820
landed · bucket 2/312.4% chance · pays 1.00×
fold t24 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t25 · you chose option 1 of 2 · worth 1.44× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t26 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +1.00×
1787
01000066097786
landed · bucket 1/366.1% chance · pays 2.00×
t32 · you chose option 2 of 2 · worth 0.49× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t33 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 6/6 · −1.00×
7356
0100007701539230830773846
landed · bucket 6/661.5% chance · pays 0.00×
t38
fold t39 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 10/10 · −1.00×
9021
010000692310000
landed · bucket 10/1030.8% chance · pays 0.00×
t44
fold t45 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
6602
01000035054712
landed · bucket 3/352.9% chance · pays 0.00×
t50
fold t51 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t52 · you chose option 1 of 2 · worth 1.55× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t53 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · 0.00×
9603
0100005919
landed · bucket 2/337.1% chance · pays 1.00×
t59 · you chose option 1 of 2 · worth 1.39× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t60 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · 0.00×
6619
01000062837580
landed · bucket 2/313.0% chance · pays 1.00×
fold t76 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · +1.00×
8109
0100008918
landed · bucket 1/289.2% chance · pays 2.00×
t81
fold t82 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
fold t83 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +3.00×
2831
01000047125919
landed · bucket 1/347.1% chance · pays 4.00×
t89 · you chose option 2 of 2 · worth 0.73× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t90 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t91 · you chose option 1 of 2 · worth 1.40× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t92 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · 0.00×
7441
01000063097687
landed · bucket 2/313.8% chance · pays 1.00×
t97
fold t98 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 9/9 · −1.00×
6880
010000615410000
landed · bucket 9/938.5% chance · pays 0.00×
t103
fold t104 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t105 · you chose option 2 of 2 · worth 0.53× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t106 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t107 · you chose option 1 of 2 · worth 0.58× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t108 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · −1.00×
7547
01000012077702
landed · bucket 2/365.0% chance · pays 0.00×
t122
fold t123 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · −1.00×
5443
0100007702
landed · bucket 1/277.0% chance · pays 0.00×
t20 · you chose option 1 of 2 · worth 0.79× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t21 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · −1.00×
769
0100006055
landed · bucket 1/260.6% chance · pays 0.00×
fold t26 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
fold t27 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · +3.00×
9309
01000013506261
landed · bucket 3/337.4% chance · pays 4.00×
t41 · you chose option 2 of 2 · worth 0.66× under optimal play · best free option was 0.79× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t42 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t43 · you chose option 1 of 2 · worth 1.18× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t44 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · 0.00×
5872
01000052506509
landed · bucket 2/312.6% chance · pays 1.00×
t58
fold t59 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
fold t67 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · +1.00×
3698
010000
landed · bucket 1/296.3% chance · pays 2.00×
t72
fold t73 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
8311
01000047125919
landed · bucket 3/340.8% chance · pays 0.00×
t93 · you chose option 1 of 2 · worth 1.28× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t94 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
9118
01000058866949
landed · bucket 3/330.5% chance · pays 0.00×
t112
fold t113 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
fold t114 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · +1.00×
8710
0100005919
landed · bucket 2/337.1% chance · pays 2.00×
t10 · you chose option 2 of 2 · worth 0.66× under optimal play · best free option was 0.79× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t11 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
fold t12 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · +1.00×
5005
0100008888
landed · bucket 1/288.9% chance · pays 2.00×
t18 · you chose option 2 of 2 · worth 0.77× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t19 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t27 · you chose option 2 of 2 · worth 0.93× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t28 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t29 · you chose option 2 of 2 · worth 0.56× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t30 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 8/8 · −1.00×
8156
010000770153923083077384646155384
landed · bucket 8/846.2% chance · pays 0.00×
t35
fold t36 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
9280
01000035054712
landed · bucket 3/352.9% chance · pays 0.00×
t41
fold t42 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +1.00×
3921
01000047125919
landed · bucket 1/347.1% chance · pays 2.00×
t47
fold t48 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t49 · you chose option 2 of 2 · worth 1.12× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t50 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t51 · you chose option 1 of 2 · worth 0.46× under optimal play · best free option was 0.50× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t52 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/2 · +1.00×
8268
0100007702
landed · bucket 2/223.0% chance · pays 2.00×
fold t77 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · +3.00×
4794
0100008853
landed · bucket 1/288.5% chance · pays 4.00×
t83 · you chose option 1 of 2 · worth 0.82× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t84 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
6367
01000034844684
landed · bucket 3/353.2% chance · pays 0.00×
t90 · you chose option 1 of 2 · worth 1.15× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t91 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
8301
01000050896394
landed · bucket 3/336.1% chance · pays 0.00×
t101
fold t102 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · 0.00×
487
01000012077702
landed · bucket 1/312.1% chance · pays 1.00×
t107
fold t108 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 10/10 · −1.00×
8954
010000692310000
landed · bucket 10/1030.8% chance · pays 0.00×
t15
fold t16 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t17 · you chose option 1 of 2 · worth 1.28× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t18 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · 0.00×
6210
01000054447333
landed · bucket 2/318.9% chance · pays 1.00×
t28
fold t29 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 6/6 · −1.00×
3965
0100007701539230830773846
landed · bucket 6/661.5% chance · pays 0.00×
t40 · you chose option 1 of 2 · worth 1.11× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t41 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +1.00×
3412
01000037337326
landed · bucket 1/337.3% chance · pays 2.00×
t46
fold t47 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · −1.00×
2501
01000012077702
landed · bucket 2/365.0% chance · pays 0.00×
t52
fold t53 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t54 · you chose option 1 of 2 · worth 0.46× under optimal play · best free option was 0.50× — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t55 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/2 · −1.00×
6423
0100007702
landed · bucket 1/277.0% chance · pays 0.00×
t65
fold t66 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +1.00×
2482
0100005919
landed · bucket 1/359.2% chance · pays 2.00×
fold t77 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · −1.00×
3509
01000012007716
landed · bucket 2/365.2% chance · pays 0.00×
t82
fold t83 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t84 · you chose option 1 of 2 · worth 1.06× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t85 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 3/3 · −1.00×
7309
01000047125919
landed · bucket 3/340.8% chance · pays 0.00×
t93
fold t94 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t95 · you chose option 1 of 2 · worth 0.58× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t96 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · −1.00×
5003
01000012077702
landed · bucket 2/365.0% chance · pays 0.00×
t106
fold t107 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 1/3 · +1.00×
198
01000047125919
landed · bucket 1/347.1% chance · pays 2.00×
t112
fold t113 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t114 · you chose option 2 of 2 · worth 0.62× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t115 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 10/10 · −1.00×
8784
010000692310000
landed · bucket 10/1030.8% chance · pays 0.00×
t14
fold t15 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
provably fairbucket 2/3 · 0.00×
7232
0100005919
landed · bucket 2/337.1% chance · pays 1.00×
t20
fold t21 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000
t22 · you chose option 1 of 2 · worth 0.46× under optimal play · the best option available — no roll here, the choice was yours. Values come from the sealed tree itself.
fold t23 · roll = keccak256(serverSeed ‖ clientSeed ‖ channelId ‖ t) mod 10000