Des dés imprévisibles : ce qui n'allait pas et ce que nous avons changé
Nous avons découvert que les dés des parties en ligne étaient, en principe, calculables avant le lancer : leur graine reposait sur des informations visibles par tous les joueurs. Nous n'avons vu aucun signe que quelqu'un l'ait fait. Depuis le 1er octobre, chaque graine vient d'un secret que seul le serveur détient, et l'ancienne prédiction ne tombe plus juste qu'une fois sur 36 — le pur hasard.

En clair
Voici ce que nous avons trouvé. Tout ce qui est aléatoire dans une partie en ligne — les deux dés, le tirage d'une carte Chance, le dé du Jackpot — vient d'un générateur de nombres aléatoires, et un générateur doit partir d'une graine. La nôtre reposait sur deux éléments visibles par tous les joueurs : l'identifiant de la partie, qui figure dans votre barre d'adresse, et le numéro du coup, que le jeu renvoie après chaque action. Le générateur lui-même est du code ordinaire, publié. Mis bout à bout, cela permettait à quelqu'un qui savait s'y prendre de calculer un lancer avant même de jeter les dés — et, en principe, même de choisir lequel des prochains lancers il obtiendrait.
Nous l'avons vérifié sur de vraies parties plutôt qu'en théorie. Sur les 2,000 derniers lancers avant le correctif, 1,985 — soit 99.3% — étaient exactement ceux que prédisaient ces informations publiques.
Quelqu'un en a-t-il profité ?
Ensuite, nous avons cherché si quelqu'un s'en servait, et n'avons trouvé personne. Le pari où connaître le lancer rapporte le plus directement, c'est le Jackpot. Sur les sept jours précédant le correctif, 2,354 paris au Jackpot ont gagné dans 31.4% des cas, contre les 31.1% que prévoit le seul hasard, et le bilan d'aucun joueur ne sortait du lot.
Les questions qu’on nous pose
Les dés d'opolyx sont-ils équitables ?
Oui. Sur les 247,968 lancers effectués du 2 au 6 octobre 2026, chaque face de chaque dé est sortie dans 16.54% à 16.77% des cas — un dé parfait donne 16.67% —, et les doubles dans 16.67% des cas.
Peut-on prédire les dés dans opolyx ?
Non — plus depuis le 1er octobre 2026. Chaque lancer reçoit une graine tirée d'un secret qui n'existe que sur le serveur, et l'ancienne prédiction ne tombe plus juste que dans 2.76% des lancers : les 2.78% que donnerait le fait de deviner deux dés à l'aveugle.
Quelqu'un a-t-il profité de l'ancienne faille des dés ?
Nous n'en avons trouvé aucun signe. Sur les sept jours précédant le correctif, 2,354 paris au Jackpot ont gagné dans 31.4% des cas, contre les 31.1% que prévoit le seul hasard, et les résultats d'aucun joueur ne sortaient du lot.
Où se décide un lancer de dés ?
Sur le serveur du jeu, au moment où vous lancez, par un générateur de nombres aléatoires dont la graine est un secret que personne d'autre ne détient. Le résultat est inscrit dans le journal de la partie, et les rediffusions comme les statistiques lisent ce journal au lieu de relancer les dés.
Pour les curieux techniques
La graine était une étiquette, <id de la partie>:<numéro du coup>, hachée avec FNV-1a puis transmise à mulberry32. Ce choix était délibéré — il rendait chaque partie reproductible à partir de son propre journal —, mais la reproductibilité n'a jamais exigé que la graine soit publique. Chaque résultat est inscrit dans l'événement qui l'a produit, et les rediffusions comme les statistiques lisent ces événements au lieu de relancer les dés.
// before: anyone who knew the game id and the move number could do this
rng = mulberry32(fnv1a(`${gameId}:${seq}`))
// after: the same label, signed with a key that never leaves the server
rng = mulberry32(uint32(hmacSha256(serverSecret, `${gameId}:${seq}`)))Désormais, l'étiquette passe d'abord par HMAC-SHA256, avec pour clé un secret de 32 octets qui n'existe qu'à l'intérieur du serveur. Par défaut, ce secret est régénéré à chaque démarrage du serveur. Rien n'a besoin qu'il survive à un redémarrage, puisqu'aucun lancer passé n'est jamais recalculé — et un secret qui n'est jamais écrit nulle part est un secret qui ne peut pas fuiter.
Chaque tirage qui décide de quelque chose dans une partie est signé de cette façon : les dés, le tirage de la carte Chance, le dé du Jackpot et le choix de qui joue en premier.
Et les dés sont aussi équitables que des dés doivent l'être. Sur tous les lancers depuis le 2 octobre — 247,968 au total —, chaque face de chaque dé est sortie dans 16.54% à 16.77% des cas, contre 16.67% pour un dé parfait, et les doubles sont sortis dans 16.67% des cas :
| Face | Premier dé | Second dé |
|---|---|---|
| Face 1 | 16.75% | 16.72% |
| Face 2 | 16.77% | 16.65% |
| Face 3 | 16.56% | 16.61% |
| Face 4 | 16.54% | 16.70% |
| Face 5 | 16.67% | 16.70% |
| Face 6 | 16.72% | 16.62% |
Le correctif a été vérifié selon les mêmes critères que le problème. La prédiction qui tombait juste sur 99.3% des lancers auparavant a été réexécutée ensuite sur une journée entière : elle a vu juste 1,388 fois sur 50,212, soit 2.76% — les 2.78% que l'on attendrait en devinant deux dés à l'aveugle.
