Yes, it is fair — and we can prove it.
First, it is important to clarify that the crash-point hashes for 300,001 game rounds are generated in advance and form a hash chain. As a result, the crash point of each round is completely independent of how many players participate or how much is wagered.
The crash point is generated by combining two different SHA-256 hash values (the Server Seed and the Client Seed) and converting the resulting data (a single SHA-256 hash) into a numerical value.
To be considered fair, these two pieces of data (SHA-256 hashes) must be selected in a very specific way. They must be chosen such that neither the platform nor the players can control or predict the resulting crash point. The process works as follows:
Server Seed
Before the Client Seed is known, the platform determines and publicly commits to the hash chain that will be used. We generate a sequence of 300,001 SHA-256 hashes by starting from an initial server secret and repeatedly applying the SHA-256 algorithm to the result 300,001 times, forming the game hash chain.
The value of the final SHA-256 hash in this chain is published in advance and serves as the platform’s commitment.
Client Seed
To prove that we do not intentionally select secret data that could generate crash points favorable to the house, the hashes from the game chain are combined with a Client Seed that is outside the platform’s control.
The Client Seed is derived from the hash of an EOS blockchain block that had not yet been generated at the time the commitment was made.
Proof of Existence
To prove that this message was created before the EOS block used as the Client Seed was generated, information related to the Server Seed and the Client Seed is embedded as a memo in a transaction on the EOS blockchain. At that point in time, the block used as the Client Seed did not yet exist.
This ensures that no party could predict or control the crash point before it was generated.
Crash Point Calculation Formula
let seed = gameHash let hash = sha256(seed + salt)
var h = parseInt(hash.slice(0, 13), 16);
var e = Math.pow(2, 52);
return (Math.floor((96 * e) / (e - h)) / 100).toFixed(2);
