SpyDota utilise l’algorithme Provably Fair pour que chaque joueur puisse vérifier l’équité d’une partie. Le résultat d’une caisse ou d’un upgrade est déterminé par un seed serveur fixé à l’avance, votre seed client et le numéro de partie : il ne peut donc plus être truqué une fois la partie lancée.

Le seed serveur est la valeur secrète à partir de laquelle le résultat de la partie est calculé. Pour recalculer une partie, il faut révéler le seed : la fiche de la partie s’en charge pour vous.
Cliquez sur votre avatar dans l’en-tête, ouvrez l’onglet « Historique » et choisissez « Caisses » ou « Upgrades ».
Le bouton se trouve au bout de la ligne de la partie (sur mobile, faites défiler le tableau vers la droite). Dans la fiche qui s’ouvre, cliquez de nouveau sur « Vérifier ».
Pour vérifier la partie, le seed serveur doit être révélé. Nous créerons une nouvelle paire de seeds : le seed actuel sera révélé et inséré dans la vérification, et les numéros de partie recommenceront.
Si le seed est encore secret, la fiche proposera « Changer de seeds et vérifier ». L’ancien seed sera révélé : vous pourrez alors vérifier toutes les parties jouées avec lui. Les nouvelles parties repartent de 1, celles déjà jouées ne changent pas. Si le seed est déjà révélé, cette étape n’apparaît pas.
Votre navigateur a recalculé la partie avec le seed révélé et le résultat correspond à l’enregistrement du serveur.
La page de vérification s’ouvre. « Concorde » signifie que votre navigateur a recalculé la partie et obtenu ce que le serveur a enregistré. Comparez l’objet marqué « tombé » avec la ligne de l’historique ; pour un upgrade, « Gagné » ou « Perdu ».
Les parties jouées avant le lancement de Provably Fair, les cadeaux et les attributions n’ont pas de bouton « Vérifier ». Si l’objet a été remplacé, la vérification porte sur le drop d’origine. Vous voyez « Ne concorde pas » ? Enregistrez le seed serveur et écrivez au support.
Avant la partie, vous voyez le hash du seed serveur : le serveur ne peut donc plus remplacer discrètement les données de départ.
Votre seed et le numéro de partie participent au calcul : le résultat n’est donc pas formé par le serveur seul.
Saisissez les données d’une partie. Le calcul se fait dans votre navigateur et rien n’est envoyé au serveur.
Renseignez les données de la partie et appuyez sur « Vérifier » : le nombre tiré et l’objet apparaîtront ici.
Seed serveur + Votre seed + Numéro de partie = Résultat équitable
Le serveur choisit un seed serveur aléatoire et n’en affiche que le hash SHA-256. Le seed ne peut plus être remplacé ensuite : le hash ne correspondrait plus.
Pour chaque partie, un HMAC-SHA256 est calculé. La clé est le seed serveur sous forme de chaîne hex de 64 caractères, telle quelle, sans décodage en octets. Le message est composé du type de jeu, du jeu, de votre seed client et du numéro de partie.
Les 8 premiers caractères hex du hash donnent un nombre de 0 à 4 294 967 295. On en tire un ticket de 1 à 100 000 000 : floor(nombre × 100 000 000 / 2^32) + 1.
Dans la table des chances au moment de la partie, chaque objet a sa propre plage de tickets. L’objet dont la plage contient le ticket est obtenu.
Le seuil est floor(chance × 100 000 000). L’upgrade est gagné si le ticket n’est pas supérieur au seuil.
Le seed serveur est révélé lorsque vous changez de seeds. Ensuite, toute partie de la paire peut être recalculée dans le navigateur sur cette page ou avec votre propre code.
La clé est la chaîne hex du seed serveur telle quelle (64 caractères), et non les octets décodés. C’est ici que se trompent la plupart des vérifications faites soi-même.