Équité prouvable
Le résultat de chaque partie est fixé avant la mise et peut être recalculé par n’importe qui — inutile de nous croire sur parole.
Comment ça marche
Dans un casino en dur, tu vois la carte se retourner, le dé retomber, la roulette tourner. En ligne, tout cela se passe à l’intérieur d’un programme — et c’est le programme qu’il faut vérifier.
Avant la mise, le serveur publie le hachage SHA-256 de sa graine secrète. Impossible de changer la graine après coup : le hachage la trahirait. Une fois la paire de graines changée, l’ancienne graine serveur est révélée — et chaque lancer fait avec cette paire se recalcule avec la formule ci-dessous.
La commission de la plateforme est de 1%. Le paiement vaut mise × 99 ÷ chance en pourcentage : 99% de l’espérance mathématique reviennent au joueur. C’est la seule chose qui distingue le jeu d’un pile ou face parfaitement équitable ; rien d’autre n’est retenu.
Les graines
Une paire de graines, c’est la tienne et la nôtre. La graine serveur est tirée au hasard et son hachage est affiché aussitôt : la graine elle-même reste secrète jusqu’au changement de paire, sinon les lancers à venir seraient connus d’avance. La graine client, c’est toi qui la fixes, et sans elle aucun lancer ne peut être calculé — le résultat dépend des deux côtés.
Le troisième ingrédient est le nonce, le numéro de la mise dans la paire en cours. Il augmente de un à chaque partie : deux lancers d’une même paire ne peuvent donc pas partir des mêmes données.
Comment le nombre est obtenu
La graine serveur, la graine client et le nonce sont repliés dans un HMAC-SHA512. Les 128 caractères hex obtenus se lisent par fenêtres de cinq : la première valeur inférieure à 1 000 000 est prise modulo 10 000 — ce qui donne un lancer de 0 à 9999, soit de 0.00 à 99.99.
Le seuil de rejet est là pour l’équité : une fenêtre de cinq caractères hex donne des nombres jusqu’à 1 048 575, et cette plage ne se divise pas exactement par 10 000 — sans rejet, les petits résultats sortiraient plus souvent que les grands. 1 000 000, lui, se divise exactement : les 10 000 résultats sont donc équiprobables. La probabilité que les 25 fenêtres soient toutes rejetées est de l’ordre de 10⁻³³.
hex = HMAC_SHA512(key = serverSeed, msg = clientSeed + "-" + nonce) On lit le hex par fenêtres consécutives de 5 caractères (0-4, 5-9, …) : première valeur < 1 000 000 → roll = valeur % 10000 (si les 25 fenêtres sont rejetées — roll = 9999) En dessous : gain si roll < target · Au-dessus : gain si roll > target Paiement = mise × 9900 / chanceUnits (arrondi à l'inférieur) · commission de 1%
Le code du moteur
Exactement ce qui calcule les lancers sur le serveur, et exactement ce qui les recalcule dans ton navigateur. Un test verrouille l’accord entre les deux côtés.
const WINDOW = 5; // caractères hex par fenêtre : 20 bits, 0..1048575
const REJECT = 1_000_000; // plus grand multiple de 10000 tenant dans une fenêtre
function roll(serverSeed, clientSeed, nonce) {
const hex = createHmac("sha512", serverSeed)
.update(`${clientSeed}-${nonce}`)
.digest("hex"); // 128 caractères
// fenêtres de 5 caractères hex consécutifs : 0-4, 5-9, ... 120-124
for (let i = 0; i * WINDOW + WINDOW <= hex.length; i++) {
const lucky = parseInt(hex.slice(i * WINDOW, i * WINDOW + WINDOW), 16);
if (lucky < REJECT) return lucky % 10000; // 0..9999
}
// les 25 fenêtres ont toutes été rejetées (probabilité ~1e-33)
return 9999;
}
// paiement : commission de 1%, arrondi à l'inférieur
const payout = (amount, chanceUnits) => amount * 9900n / BigInt(chanceUnits);
Comment vérifier ta partie
Dans la Mini App : Équité dans la barre du bas, ou « Vérifier cette partie » dans la fiche de n’importe quelle mise.
- L’onglet « Graines » — le hachage de la graine serveur en cours est ici. Il a été fixé avant tes mises.
- Change la paire de graines. La graine serveur précédente est révélée ; ta graine client reste la tienne.
- L’onglet « Révélées » — la graine révélée est posée à côté de son hachage. Vérifie : le SHA-256 de la graine doit correspondre à ce qui était affiché avant les mises.
- L’onglet « Vérifier » — colle la graine serveur, la graine client et le nonce de la mise concernée. Le lancer est recalculé directement dans ton navigateur, puis comparé au résultat de la partie.
Le calcul tourne sur ton appareil et ne passe jamais par notre serveur. Avec la formule ci-dessus, tu peux le refaire dans n’importe quel langage — HMAC-SHA512 existe partout.