Vérification du résultat du jeu Crash : algorithme, sécurité

1) But de la vérification : exactement ce que vous confirmez

Inamovibilité : l'opérateur ne pouvait pas modifier le résultat après votre mise (grâce à la commit de hachage du sid serveur).
Reproductibilité : en ayant les données d'entrée, vous obtenez le même multiplicateur que le jeu a montré.
Intégrité de la procédure : le format du message, l'incrément 'nonce', la règle d'arrondi et « maison edge » sont strictement appliqués selon les spécifications.

2) Données sans lesquelles la vérification n'est pas possible

1. Server Seed Hash (commit) : Est publié avant d'utiliser le 'Server Seed'correspondant.
2. Server Seed (s'affiche plus tard/à la fin de la période).
3. Client Seed (votre cid ; vous le posez vous-même ou la plateforme le génère).
4. Nonce (le compteur de vos paris dans l'actuel 'Server Seed').
5. Algorithme de hachage (typiquement « HMAC-SHA256 » ou « SHA-256 »).
6. Format du message (exemple : ' : '), séparateurs/registres/encodage précis.
7. La formule de mapping de hachage → un multiplicateur (et une règle d'arrondi/minimum).

💡Toute la spécification doit être dans la section Fairness/Provably Fair de l'opérateur. S'il n'y a pas quelque chose, c'est un drapeau rouge (voir § 10).

3) Algorithme de vérification (7 étapes)

1. Vérifiez la commit : comptez 'SHA-256 (ServerSeed)' et comparez avec 'ServerSeedHash' publié.
2. Collectez le message : strictement au format de la plate-forme (par exemple, 'msg = ClientSeed +' : '+ Nonce').
3. Comptez le hachage round :
  • при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;
Dans 'SHA-256' : 'RoundHash = SHA256 (ServerSeedmessage)' ou comme spécifié dans la spécification.
4. Extraire le hasard : prendre le premier bit « k » (souvent 52) → l'entier « r », puis « u = r/2 ^ k ».
5. Appliquer la formule de mapping : convertir 'u' en multiplicateur (maison edge/cas spéciaux sont pris en compte dans la documentation du jeu).
6. Arrondir selon les règles du jeu (par exemple, jusqu'à 2 caractères, au moins 1. 00 ×, etc.).
7. Comparez avec le résultat du tour dans l'histoire. Coïncidence = honnêteté correcte.

4) Pseudo-code (peut être adapté à Python/JS)

```python
Insérez ici la formule exacte de mapping de votre plateforme au lieu de stub_mapping ()

import hmac, hashlib, math

def round_hash(server_seed: bytes, client_seed: str, nonce: int) -> bytes:
  • message = f « {client _ seed} : {nonce} » .encode (« utf-8 »), voir les spécifications
  • return hmac. new(server_seed, message, hashlib. sha256). digest () ou hashlib. sha256(...)

def take_u_from_hash(h: bytes, k_bits=52) -> float:
  • Nous prenons k bits plus anciens comme un r entier
  • r = int. from_bytes(h, "big") >> (256 - k_bits)
  • return r / (1 << k_bits) u в [0, 1)

def stub_mapping(u: float) -> float:
  • BOUCHON ! Remplacer par la formule de la documentation de votre jeu
  • Par exemple, on utilise parfois la conversion des espèces : crash = floor ((const/( r + 1)) 100 )/100
  • et/ou « maison edge » comme une force rare 1. 00×. N'utilisez pas cette tige dans un contrôle réel.
  • return max(1. 00, round(1. 0 / max(1e-12, 1. 0 - u), 2))

def verify(server_seed_hex, server_seed_hash_hex, client_seed, nonce, shown_multiplier):
  • server_seed = bytes. fromhex(server_seed_hex)
  • 1) Commit
  • assert hashlib. sha256(server_seed). hexdigest() == server_seed_hash_hex. lower()
  • 2-3) Hesh round
  • h = round_hash(server_seed, client_seed, nonce)
  • 4) u
  • u = take_u_from_hash(h)
  • 5-6) mapping + arrondir
  • calc_mult = stub_mapping(u)
  • 7) comparaison
  • return abs(calc_mult - shown_multiplier) < 1e-9
  • ```

Important : au lieu de 'stub _ mapping', appliquez la formule exacte de la section Fairness de votre plateforme ; sinon, la vérification ne sera pas correcte.

5) Cas privés et pièges

Deux paris dans le même tour : celui de nombreuses plates-formes 'nonce' augmente pour chaque pari, même s'il est fait dans le même tour (exemple : le pari A → 'nonce = 42', le pari B → 'nonce = 43'). Vérifiez l'historique.
Changement 'Client Seed' : lorsque le sid 'nonce' est changé, il est généralement réinitialisé (ou un nouveau flux commence). Vérifiez les règles de votre plateforme.
Batchi 'Server Seed' : un 'Server Seed' agit sur une série de rounds, puis un nouveau commit est publié ; ne confondez pas les graines de différentes périodes.
Arrondi/minimum : incohérence pour le deuxième signe - dans 90 % des cas, erreur dans les règles d'arrondi/minimum (par exemple, fixe 1. 00 × sous condition spéciale).
Encodage/espaces : espace supplémentaire/traduction de ligne, registre incorrect, non-UTF-8 brise la vérification.

6) Chèque-liste de vérification rapide de la ronde

1. Est-ce que 'SHA-256 (ServerSeed)' correspond à 'ServerSeedHas' ?
2. Le « message » et le format « nonce » sont-ils correctement formés ?
3. L'algorithme ('HMAC-SHA256 '/' SHA-256') et la clé/l'ordre des champs sont-ils strictement appliqués par spécification ?
4. Le mapping et l'arrondi sont identiques à la documentation ?
5. Les cas particuliers (rare « crash instantané », minimum 1) sont-ils pris en compte ? 00 ×, kaps) ?
6. Le résultat correspond à l'histoire du jeu jusqu'à un centime ?

7) Automatisation du contrôle (pratique)

Logs : gardez chez vous 'client _ seed', la séquence 'nonce', l'horodatage, le multiplicateur final.
Sampling : Après « revila » 'Server Seed', chassez les 20-50 rounds aléatoires avec le script ; enregistrer le pourcentage de coïncidences (doit être de 100 %).
Régression : lorsque vous changez de version du jeu/fournisseur, lancez le même jeu.
Exportation : stocker CSV/JSON avec les sources est votre « piste d'audit ».

8) Sécurité : Comment ne pas se tromper et ne pas se laisser tromper

Vérifiez localement/hors ligne : ne vous fiez pas uniquement à la validation Web de l'opérateur ; Gardez votre propre script.
Ne faites pas confiance aux rounds sans un paquet complet de données : pas de formule/format - pas de vérification.
Fort 'Client Seed' : définissez aléatoirement, changez périodiquement (cela n'augmente pas le RTP, mais élimine les questions à la reproductibilité).
TLS/sessions : connexion uniquement par HTTPS, 2FA, suivi des entrées et déchargement de l'historique.
Ne transmettez pas « Server Seed » à personne : il est publié par l'opérateur après la période ; votre tâche est de vérifier, de ne pas « l'obtenir » à l'avance.

9) Types « erreurs de débutant »

L'ordre des champs est confondu ('Nonce : ClientSeed' au lieu de 'ClientSeed : Nonce').
Compte 'nonce' à partir de zéro au lieu d'un (ou vice versa).
Le hash de l'ensemble de la plate-forme (global nonce) a été utilisé, et vous avez besoin de votre « nonce » personnel.
Ignorer l'arrondi selon les règles (banker's rounding vs floor/ceil).
Le rapprochement avec l'actif plutôt qu'avec 'Server Seed' déjà divulgué.

10) « Drapeaux rouges » chez l'opérateur

Pas de serveur public Seed Hash avant le début de la période.
Vous ne pouvez pas définir votre Client Seed ou regarder le nonce.
Il n'y a pas de formule publique de mapping de hachage dans le multiplicateur.
L'historique des rounds ne donne pas un minimum de données pour le rapprochement.
Le format et l'algorithme ont été modifiés sans notification/archive des spécifications.

11) Le contexte australien (AU)

Monnaie : tenez un compte des gains/paris dans l'AUD, gardez le déchargement des histoires (soutien, questions controversées).
Jeu responsable (RG) : limites de dépôt/temps, pauses et auto-exclusion - disponibles dans des applications de bonne foi ; utilisez-les.
Pratiques de plateforme : chez les opérateurs de bonne foi, l'unité « Fairness/Provably Fair » contient une description complète et des exemples de vérification ; l'absence de détails est une raison de choisir un autre service.

12) Résultat

La vérification de l'issue du jeu Crash est une procédure claire :
  • rapprochement du commit 'Server Seed Hash',
  • la restauration de 'RoundHash' par 'Server Seed', 'Client Seed', 'nonce' et l'algorithme,
  • application de la formule de mapping publiée et des règles d'arrondi,
  • multiplicateur identique dans votre vérification et dans l'histoire du jeu.

Gardez votre propre script, logiez les données d'entrée et vérifiez périodiquement les tours aléatoires. C'est comme ça que vous affirmez l'honnêteté non pas sur les mots, mais mathématiquement.