Provably Fair

Every winner is determined by a public commit-reveal scheme. No one — not even us — can rig the result after the commitment is published.

How it works

  1. Before each draw, the engine generates a random secret and publishes SHA-256(secret) on-chain and to Telegram. The secret stays private.
  2. The snapshot is taken 2 seconds before the draw fires. Holders, balances, and ranks are frozen.
  3. After the draw, the engine reveals the secret. Anyone can hash it and confirm it matches the pre-published commitment.
  4. Winner derivation uses SHA-256(secret + tierName) as the deterministic seed for weighted random selection. Same secret + same snapshot = same winners, every time.

Verify it yourself

// Verify a SolJackpot draw — Node.js
import crypto from 'crypto';

const commitHash = '<commit hash from before draw>';
const revealedSecret = '<secret revealed after draw>';

const recomputed = crypto.createHash('sha256')
  .update(revealedSecret)
  .digest('hex');

console.log(recomputed === commitHash ? 'VERIFIED ✓' : 'TAMPERED ✗');

// Then derive the winner index for each tier:
function deriveWinner(secret, tierName, addresses, weights) {
  const seed = crypto.createHash('sha256')
    .update(secret + tierName)
    .digest();
  const rand = parseInt(seed.toString('hex').slice(0, 12), 16);
  const total = weights.reduce((a, b) => a + b, 0);
  let target = rand % total;
  for (let i = 0; i < weights.length; i++) {
    target -= weights[i];
    if (target < 0) return addresses[i];
  }
}

Recent draws

Loading...