← Back to game

Verify fairness

Before each round starts, the game locks in all words onchain — the secret word, 10 bonus words, and 5 burn words — using cryptographic commitments.

When the round ends, the secret word and salt are revealed so anyone can verify the game was fair.

Check the most recent round, or look up any past round by number.

Onchain record

The game uses two smart contracts on Base. Both are publicly verified and all commitments are immutable once written.

JackpotManager (ETH prizes + secret word)

0xfcb0D07a5BB5f004A1580D5Ae903E33c4A79EdB5

WordManager ($WORD token + word commitments)

0x2eEa96E86D5b9e44E39A2A7D83CE214c6E10b574

Why this matters

Before any guesses are made, all 16 words are locked onchain: the secret word (SHA-256 on JackpotManager) and 10 bonus + 5 burn words (keccak256 on WordManager).

When a player finds a bonus or burn word, the contract verifies the word matches its committed hash before releasing tokens. This guarantees no word can be changed mid-round.

Want to double-check it yourself?

If you'd like to independently confirm the result using your own tools, here's how each commitment is computed.

Secret word (JackpotManager)
SHA256(salt + word)
  • Salt: 64-character hex string
  • Word: 5-letter answer (UPPERCASE)
  • • Concatenated directly, no separator
echo -n "<salt><word>" | sha256sum
Bonus + burn words (WordManager)
keccak256(abi.encodePacked(word, salt))
  • Word: 5-letter word (UPPERCASE, encoded as string)
  • Salt: 32-byte value (bytes32)
  • • Uses Solidity's abi.encodePacked — word first, then salt
  • • 16 hashes per round: 1 secret + 10 bonus + 5 burn
cast keccak "$(cast --abi-encode-packed 'f(string,bytes32)' '<WORD>' '<0xSALT>')"

Using Foundry's cast, or ethers.js solidityPackedKeccak256(['string','bytes32'], [word, salt])