TRUST, BUT VERIFY.

Every outcome is determined by a seed generated before the round begins. We cannot manipulate the result once the seed is public.

1. The Commitment

Before a round starts, we generate a random Server Seed. We immediately show you the SHA256 Hash of this seed. Because cryptographic hashes are irreversible, we cannot change the seed later without changing the hash you already saw.

2. The Execution

When the round ends, we compute a Client Seed from the sorted user IDs of all players in the round. We then combine the Server Seed, Round ID, and Client Seed. We hash this combination to generate a deterministic number. Because the Client Seed depends on WHO joins, the outcome cannot be predicted when the Server Seed is generated.

Client Seed = sort(PlayerIDs).join(":")
Result Hash = SHA256(ServerSeed + "-" + RoundID + "-" + ClientSeed)

3. The Winner

Reaping: We take the first 8 characters of the Result Hash, convert to decimal, and modulo by player count.

Winner Index = ParseHex(ResultHash.substring(0, 8)) % PlayerCount

Seeding: The server generates a hidden Reap Number (1-100). Players submit blind bids. The closest bid to the Reap Number wins. Tiebreak: higher bid wins.

Winner = MIN(ABS(Bid - ReapNumber)), tiebreak: higher Bid

4. Protocol Fee

A 10% protocol fee is deducted from the pot before the winner is paid out. Solo rounds (1 player) are fully refunded with no fee applied.

$REAP games: fees are burned — permanently removed from circulation.

SOL games: fees are split into The Harvest — 50% LP pool, 20% Jackpot, 10% Weekly Pool, 10% Architect, 10% Loyalty Match.

Fee = floor(Pot * 0.10)
Winner Payout = Pot - Fee