Cómo funcionan de verdad los dados provably fair — y por qué publicamos una cadena de hash en cada partida
Un recorrido por la generación de dados mediante commit-reveal con SHA-512, por qué importa para el backgammon en línea y por qué 6proclub es la única plataforma que ofrece una cadena de hash verificable para cada tipo de juego.
Si alguna vez has vivido en línea una larga y dolorosa racha de derrotas, seguramente has tenido el mismo pensamiento que todo jugador de backgammon desde que salió el primer cliente de internet: ¿esto está amañado?
La respuesta honesta, para casi todos los sitios que puedas nombrar, es que no tienes forma de saberlo. Un servidor en algún lugar llama a su propio generador de números aleatorios. No te queda más remedio que confiar en él. Toda la maquinaria —el RNG, el repartidor, los pagos— vive detrás de una puerta cerrada. «Confía en nosotros» es todo el modelo de equidad.
No creemos que eso sea suficiente, y hemos construido 6proclub para que no tengas que creernos bajo palabra en ninguna tirada. Cada tirada de dados, en cada tipo de juego que ofrecemos, se genera mediante una cadena de hash commit-reveal pública que puedes verificar tú mismo, a posteriori, con nada más que sha256, sha512 y los valores que publicamos al final de tu partida.
Este artículo explica cómo funciona, en lenguaje claro, y por qué creemos ser la única plataforma de backgammon que lo hace en todos sus tipos de juego.
El problema del «confía en mí»
Un juego de dados tradicional en línea funciona así:
- El servidor elige dos números entre 1 y 6.
- El servidor le dice a tu cliente cuáles son.
- Tu cliente anima los dados y tú juegas el movimiento.
Eso es todo. La «aleatoriedad» es lo que el servidor diga que es. No hay rastro de auditoría. Si el operador ajustara discretamente la distribución en contra de los jugadores a punto de ganar dinero, nunca lo sabrías —y tampoco un auditor externo con una instantánea trimestral, porque para cuando alguien mire, la única prueba que queda es lo que el servidor decidió registrar.
Esto no es una hipótesis. Es exactamente la estructura que ha producido todos y cada uno de los escándalos de equidad del juego en línea de los últimos veinte años.
Commit-reveal, la versión corta
Un esquema de commit-reveal es la construcción criptográfica más sencilla que resuelve esto. La idea es la siguiente:
- Antes de que ocurra ninguna tirada, el servidor elige una semilla secreta larga.
- El servidor publica el hash de esa semilla (el commit).
- La partida se desarrolla. El servidor usa la semilla, combinada con un contador por tirada y tu propia contribución, para derivar cada valor de dado.
- Al terminar la partida, el servidor publica la semilla original (el reveal).
Cualquiera puede ahora tomar la semilla revelada, pasarla por la misma función de hash y confirmar que el resultado coincide con el commit que se publicó antes de empezar la partida. Como los hashes criptográficos son resistentes a la preimagen, el servidor no podría haber cambiado de idea a mitad de camino y producido una semilla cuyo hash coincidiera con el mismo commit pero generara tiradas distintas.
Dicho de otro modo: el servidor tiene que fijar su aleatoriedad antes de ver cómo se desarrollará la partida. Esa única propiedad es todo el fundamento del juego provably fair.
Cómo lo hace 6proclub en concreto
Usamos dos hashes bien estudiados, cada uno para la tarea en la que mejor rinde: SHA-256 para la verificación commit/reveal, SHA-512 para la derivación de cada tirada. Para cada partida, la cadena tiene este aspecto:
serverSeed → secreto aleatorio, generado al inicio de la partida
commit = SHA-256(serverSeed) // publicado ANTES de cualquier tirada
roll_n = SHA-512(serverSeed : clientSeed : nonce : rollNumber)
→ reducido a dos valores de dados 1..6
Tú aportas tu propia clientSeed —normalmente bytes aleatorios de tu navegador—. El servidor no puede sesgar la cadena en tu contra porque cada tirada depende de tu semilla, que el servidor no ha visto y no puede predecir en el momento en que se hace el commit.
Cuando la partida termina, publicamos:
- La
serverSeedoriginal. - La
clientSeed. - El contador de tiradas en cada paso.
Tú mismo pasas la serverSeed por SHA-256 y confirmas que coincide con el commit mostrado al inicio. Si coincide, la cadena está intacta. Y si la cadena está intacta, las tiradas quedaron determinadas en el momento en que empezó la partida —antes de que ninguno de los dos supiéramos cómo iba a desarrollarse.
Este es todo el contrato de equidad, y lo hace cumplir la matemática, no nuestra promesa.
Por qué «cada tipo de juego» es lo que importa
Encontrarás un puñado de plataformas en línea que publican un mecanismo de equidad para un solo producto —normalmente una tragaperras o un único juego de dados—. La cadena está integrada en ese producto concreto y ahí se detiene.
6proclub es la única plataforma de backgammon que conocemos que ejecuta la misma cadena de hash verificable en todos los tipos de juego que ofrecemos —backgammon, war y cada juego que añadamos a continuación—. Cuando lanzamos un juego nuevo, la capa de equidad no se añade como una función más; es el cimiento. No existe un «ya lo haremos verificable más adelante». No existe ninguna versión de nuestros juegos en la que los dados o el barajado no formen parte de la cadena.
Es una decisión que tomamos a nivel de arquitectura, y es la decisión de la que estamos más orgullosos.
Qué deberías comprobar realmente
Cuando una partida termina en 6proclub, abre la página de verificación de esa partida y busca tres cosas:
- El commit. Asegúrate de que era visible antes de empezar la partida —la marca de tiempo del commit es anterior a la primera tirada—.
- El reveal. Pasa tú mismo la
serverSeedpor SHA-256 y confirma que coincide con el commit. (echo -n "<seed>" | sha256sumlo hace en Linux.) - Las tiradas. Para cada tirada, la derivación publicada debe reproducir los dados que realmente viste en el tablero —aplica SHA-512 a
serverSeed:clientSeed:nonce:rollNumberexactamente como lo describimos en la página de verificación—.
Si alguna de esas tres comprobaciones falla, tenemos un problema y queremos saberlo de inmediato. Escríbenos. Arreglaremos la cadena o reembolsaremos la partida, en ese orden.
Lo esencial
La confianza en el juego en línea no debería ser una simple sensación. Debería ser una propiedad que puedas verificar con sha512sum y unos minutos de tu tiempo. Cualquier otro enfoque es solo una afirmación de marketing.
Construimos 6proclub sobre la convicción de que cuanto más fácil se lo pongamos a un jugador escéptico para pillarnos haciendo trampa, más nos ganamos el derecho a pedirle a cualquiera que juegue aquí por dinero. La cadena de hash es como mantenemos esa promesa —y se ejecuta bajo cada juego que lleguemos a ofrecer—.
Juega aquí. Verifica tus partidas. Cuéntales a los demás jugadores lo que encontraste.