Server can control both seeds when client seed is omitted, weakening provably-fair guarantees
The provably-fair system allowed the server to generate both serverSeed and clientSeed when the client seed was not provided, enabling a biased operator to cherry-pick seed pairs that produce house-favorable outcomes while still passing public verification.
Description
Provably-fair systems depend on the user supplying their own clientSeed so that the random outcome can be reconstructed from (serverSeed, clientSeed, nonce) and verified independently.
In the audited implementation, when clientSeed was not provided, the server generated both serverSeed and clientSeed. A biased operator could iterate seed pairs offline and select pairs that produce house-favorable outcomes while still producing a publicly verifiable game record.
Impact
The "provably fair" guarantee is reduced to a probabilistic one: verifications still pass, but the entropy is fully controlled by the server. Long-tail outcomes can be steered without detection.
Recommendation
Require a user-supplied clientSeed at session initialization, or derive it deterministically from a value the user controls (wallet signature, on-chain commitment) rather than letting the server pick it. Reject session start if the client seed is missing or trivial, and surface the seed selection in the verification UI.
Fair Casino: Fixed. Zealynx: Verified.