Pokerni : jetons sans valeur monétaire, non achetables, non convertibles et non transférables ; adversaires IA signalés par un badge. Comme la maison fournit les adversaires, nous vous devons une transparence totale sur la donne.
Le calcul se fait entièrement dans votre navigateur, rien n'est envoyé au serveur. Ce navigateur garde l'empreinte reçue avant la main et la graine reçue après ; si vous êtes connecté, votre historique est aussi consulté. Vous pouvez aussi coller les deux valeurs vous-même : à la table, l'empreinte s'affiche en survolant le badge « Donne vérifiable ».
Ce que cette vérification prouve : que l'empreinte publiée avant la première carte est bien celle de la graine révélée après la dernière. Le paquet était donc fixé avant que vous ne voyiez une seule carte, et personne n'a pu le changer en cours de main.
Ce qu'elle ne prouve pas : l'ordre exact des 52 cartes issu de la graine. Ce mélange utilise le générateur de NumPy, que le navigateur ne sait pas rejouer ; le script Python de la version technique le reconstitue carte par carte.
Les adversaires IA portent en permanence le badge IA sur leur siège, avec leur niveau. Une IA reçoit exactement les mêmes informations qu'un joueur humain assis à sa place : ses deux cartes, les cartes communes et les coups publics ; jamais les cartes des autres ni les cartes à venir. Le code de la donne est vérifiable, comme expliqué ci-dessus. Le coach est un système automatisé : ses conseils sont calculés par un programme, jamais donnés par une personne, à partir de vos seules cartes et des coups publics.
Avant chaque main, le serveur tire une graine de 63 bits avec le générateur cryptographique du système (secrets.randbits(63) en Python, imprévisible, y compris pour nous). Cette graine alimente une permutation déterministe des 52 cartes (numpy.random.default_rng(graine).permutation(52)). Les deux premières cartes de chaque joueur puis les 5 cartes communes sont servies dans l'ordre du paquet, sans brûlage.
Le serveur ne peut pas changer les cartes en cours de main, et le prouve :
1. Avant la main, chaque message d'état contient un engagement : commit = SHA-256("selfpoker:" + graine). L'empreinte fige le paquet complet sans rien révéler.
2. Après la main, le message de fin (hand_end) révèle la graine. Chacun peut alors vérifier que l'empreinte correspond et reconstituer le paquet entier, y compris les cartes non distribuées.
import hashlib
import numpy as np
graine = 1234567890123456789 # champ "fairplay.seed" du hand_end
commit = "..." # champ "commit" des messages d'état
assert hashlib.sha256(f"selfpoker:{graine}".encode()).hexdigest() == commit
paquet = list(np.random.default_rng(graine).permutation(52))
# n joueurs : cartes 0..2n-1 = mains (2 par joueur), 2n..2n+4 = cartes communes
# rang = carte // 4 (0=2 … 12=as), couleur = carte % 4 (♣♦♥♠)
Chaque main jouée est archivée avec sa graine : l'historique complet est rejouable à l'identique.
Les IA reçoivent exactement la même information qu'un joueur humain à leur place : leurs deux cartes, le board et les mises. Par construction, le code ne leur passe jamais les cartes adverses ni les cartes à venir. Elles portent toutes le badge IA, avec leur niveau affiché.
Le coach peut jouer son propre conseil à votre place, à votre rythme, en expliquant chaque coup. Le mode Auto n'existe que sur Pokerni, contre des IA ou à des tables entre amis. Rien ne sort du site : aucune connexion à un autre site de poker n'est possible.
Des questions ? Le code du serveur est inspectable sur la machine qui l'héberge : c'est un site privé, entre gens de confiance.
Musique d'ambiance : Jason Shaw, audionautix.com, licence Creative Commons BY 4.0 (« Big Swing Band », « Closer To Jazz », « Dirt Road Traveler », « Nice And Easy », « Acoustic Rock », « Feel Good Rock »).
Jetons sans valeur monétaire, non achetables, non convertibles et non transférables. Site de jeu et d'apprentissage, pas de jeu d'argent. 18 ans et plus.