
We provide a verification system to ensure the integrity of every upgrade, using a combination of a server seed (generated by us), a client seed (chosen by you), and a nonce to prevent manipulation. The server seed is hashed with SHA256 and published in advance, allowing you to verify its authenticity after the unhashed seed is revealed when you rotate it or update your client seed.
Each upgrade roll is generated from the server seed, client seed and nonce, so the outcome is fixed before you press Upgrade and cannot be changed afterwards.
You can check our algorithm with our tool at the end of the page or run the JavaScript code manually. The ticket result, the ticket range and the seeds of every upgrade are in its Verify window on the upgrades history page.
const serverSeed = "0bcfbdd1bdb8b5a3cc36f29dedc03fdf705a18b3610e46f094fe3337475de0ea";
const clientSeed = "5e62aa1e3792036cf6bcc5f59f1c9f6a18d0438410077db13b531b4604dfad6c";
const nonce = 1;
random(serverSeed, clientSeed, nonce).then((x) => console.log("Open result", x));
async function sha512(str) {
return crypto.subtle.digest("SHA-512", new TextEncoder("utf-8").encode(str)).then((buf) => {
return Array.prototype.map
.call(new Uint8Array(buf), (x) => ("00" + x.toString(16)).slice(-2))
.join("");
});
}
async function random(...parts) {
const combinedHash = await sha512(parts.join(":"));
const hashInt = BigInt("0x" + combinedHash);
const maxInt = BigInt(100000000);
return Number((hashInt % maxInt) + BigInt(1));
}