Texto «Provably fair: comprobar el hash» sobre una pantalla llena de código de programación

Provably fair: cómo comprobar que una tirada no fue manipulada

En un casino físico ves la baraja, el dado o la bola. En un juego online no ves nada: aparece un número en pantalla y tienes que aceptar que salió así. El operador controla el servidor, el código y el resultado.

Durante años la respuesta fue «confía en nosotros». Los sistemas provably fair (demostrablemente justos) proponen otra cosa: que puedas comprobar por tu cuenta que el resultado de una ronda no se cambió después de que el juego se comprometió con su parte del resultado. La herramienta que lo hace posible es un hash.

Todo esto funciona detrás de escena. Pero tanto si juegas online como si te interesa la seguridad, vale la pena entenderlo: es un ejemplo práctico de cómo un hash te permite comprobar en lugar de creer. La idea central es comprometerse: si entiendes ese compromiso, entiendes qué prueba el sello provably fair y qué no.

Qué es provably fair: un sobre cerrado antes de jugar

Provably fair es un esquema de compromiso (commitment scheme, en inglés): el operador fija su parte del resultado antes de que juegues y te deja comprobar después que no la cambió.

Diagrama de cómo funciona provably fair: compromiso con hash, semillas del servidor y del cliente, nonce y verificación
Quién aporta qué y en qué orden: semillas, nonce, hash y verificación.

Imagina que, antes de lanzar un dado, alguien escribe un dato secreto en un papel, lo mete en un sobre cerrado y te lo entrega. Después de la tirada te enseñan el papel. Si coincide con el dato que decidió la tirada, sabes que no lo cambiaron sobre la marcha.

En criptografía, ese sobre es el hash: la huella de longitud fija que una función calcula a partir de cualquier dato, de la que no se puede recuperar el dato original. Si cambia una sola letra del dato, la huella cambia por completo. Lo explicamos a fondo en nuestra guía de hashing en criptografía.

El compromiso funciona así: el juego te muestra el hash de un dato secreto antes de la ronda. Ese hash no te deja adivinar el secreto, pero lo deja amarrado. Cuando después te revelan el secreto, calculas su hash y lo comparas con el que te mostraron.

Las tres piezas: semilla del servidor, semilla del cliente y nonce

Casi todos los sistemas provably fair combinan estas tres piezas para generar cada resultado:

  • Semilla del servidor. Un valor aleatorio que genera el operador y mantiene en secreto. Lo que te muestra antes de la ronda es su hash: el sobre cerrado, que se conoce como compromiso.
  • Semilla del cliente. Un valor que viene de tu lado. Normalmente lo genera tu navegador, pero un sistema bien diseñado te deja cambiarlo.
  • Nonce. Un contador que sube en cada ronda jugada con el mismo par de semillas. Gracias a él, cada ronda parte de una entrada distinta sin cambiar las semillas.

Las tres piezas se juntan y pasan por una función hash. El resultado es una cadena que nadie podía predecir por separado y que cualquiera puede recalcular cuando conoce las tres. Muchos sistemas lo hacen con HMAC-SHA256, que se apoya en el algoritmo SHA-256, aunque cada operador puede elegir otro algoritmo.

¿Por qué importa tu semilla? Porque el operador se compromete con la suya antes de conocer la tuya. Si respeta ese orden, no puede elegir después una semilla del servidor que favorezca un resultado, porque ese resultado depende también de un valor que tú controlas.

Eso sí, cambiar tu semilla no mejora tus probabilidades: solo impide que el otro lado prepare el resultado.

Del hash al número: el sesgo del módulo y cómo se corrige

Un hash es una tira de bits enorme, y el juego necesita algo pequeño: un «4» en el dado, un número del 0 al 9, una carta, una casilla de un tablero o una posición de la ruleta.

Tiene que traducir esos bits a un resultado concreto, y en ese paso se puede colar un sesgo sin que nadie lo note.

La forma más directa es tomar un número X sacado del hash y calcular X módulo P (el resto de la división), donde P es la cantidad de resultados posibles. El problema aparece cuando el rango de X no es un múltiplo exacto de P.

Cloudbet usa este ejemplo: un dado de 10 caras alimentado con números de 4 bits, que van del 0 al 15. Si aplicas módulo 10 sin más, los valores del 10 al 15 se convierten en 0 a 5.

Resultado: del 0 al 5 salen por dos caminos (0 y 10, 1 y 11, y así) y del 6 al 9 por uno solo. Los primeros saldrían el doble de veces.

La solución es el muestreo por rechazo: si el número sacado es 10 o mayor, se descarta y se saca otro. Así cada cara conserva la misma probabilidad.

Sesgo del módulo con un dado de 10 caras y cómo lo corrige el muestreo por rechazo
La misma serie 0-15 con módulo 10, sin rechazo y con rechazo.

Cómo verificar una ronda provably fair en Cloudbet

Cloudbet, un casino de criptomonedas con licencia de Curazao, publica cómo funciona su sistema provably fair, con una explicación de cada pieza y herramientas de verificación. Lo que sigue es lo que la compañía describe en esa página.

Su implementación no usa HMAC-SHA256. Según Cloudbet, la semilla del servidor es una cadena aleatoria de 32 bytes que se genera antes de jugar con la función randomBytes de Node.js. Se mantiene en secreto hasta que se rota el par de semillas.

El compromiso que muestra al jugador es el hash SHA3-256 de esa semilla. La semilla del cliente la genera el navegador por defecto, y el jugador puede cambiarla por una de hasta 255 caracteres.

Cloudbet llama «firma» de la ronda al SHA3-256 de la semilla del servidor, la semilla del cliente y el nonce (aunque es un hash, no una firma digital). Su documentación técnica indica que las tres piezas se unen con dos puntos: semillaServidor:semillaCliente:nonce.

Esa firma entra en SHAKE256, que produce un flujo de números aleatorios. De ese flujo sale el resultado con el muestreo por rechazo que vimos antes. Cada juego traduce esos números a su propio formato y tiene su propia página explicativa.

Con su verificador, la comprobación sigue estos pasos:

  1. Anota el compromiso y tu semilla del cliente antes de la ronda.
  2. Al terminar, anota el nonce y el resultado de la ronda, y rota las semillas para que se revele la semilla del servidor.
  3. Calcula el SHA3-256 de la semilla revelada y compáralo con el compromiso que anotaste.
  4. Introduce la semilla del servidor, la semilla del cliente y el nonce en la calculadora del juego.
  5. Compara el resultado reconstruido con el que mostró el juego.

Según su página, el sistema se aplica a sus juegos originales: Mines, Pump, Plinko, Dice, Dice: Golden Ticket, Limbo, Roulette y Keno. Las herramientas de verificación están alojadas en un dominio de su proveedor de juegos (games.cbet.cf.purejoy.games), no en cloudbet.com.

La FAQ de Cloudbet afirma que el sistema admite verificadores independientes. Su verificador carga sin iniciar sesión y, según la propia herramienta, calcula el hash en tu dispositivo. Lo probamos con una semilla de prueba y la comprobación del compromiso funcionó.

Verificador de Cloudbet comprobando que la semilla del servidor coincide con su compromiso SHA3-256
Comprobación del compromiso con una semilla de prueba: los dos hashes SHA3-256 coinciden.

Comprueba el compromiso sin depender de su herramienta

La calculadora del juego sirve, pero solo demuestra que sus cuentas cuadran consigo mismas. El paso 3, comprobar que la semilla revelada coincide con el compromiso, se puede hacer con unas líneas de Python, que ya trae SHA3-256 en su librería estándar:

import hashlib

semilla_servidor = "pega aquí la semilla del servidor revelada"
compromiso = "pega aquí el compromiso que anotaste antes de jugar"

calculado = hashlib.sha3_256(semilla_servidor.strip().encode()).hexdigest()
print("Coincide" if calculado == compromiso.strip().lower() else "NO coincide")

Si el script responde «Coincide», la semilla que te revelaron es la misma con la que el sistema se comprometió antes de la ronda.

En Cloudbet, la semilla se hashea tal como se muestra, como texto hexadecimal, sin decodificarla de hexadecimal a bytes. Si la conviertes, el hash sale distinto y la comprobación falla aunque nadie haya hecho trampa.

Si no coincide, comprueba primero que copiaste bien los dos valores y que no decodificaste la semilla. Si aun así no coincide, la semilla revelada no es la que respalda el compromiso.

Reconstruir el resultado completo (pasos 4 y 5) exige replicar la firma, el flujo de SHAKE256 y la traducción propia de cada juego. Para esa parte dependes de la calculadora del juego, así que esa mitad de la comprobación no es independiente.

Lo que provably fair no garantiza: RTP, licencia y pagos

Provably fair prueba una cosa concreta: que el resultado de esa ronda salió de semillas comprometidas antes de jugar y no se cambió después. Para eso hacen falta las dos comprobaciones: que la semilla coincida con el compromiso y que el resultado se pueda reconstruir. No dice nada sobre si el juego es «justo» en sentido económico.

El sistema no te informa del RTP (el porcentaje teórico que el juego devuelve a largo plazo) ni de la ventaja de la casa. Las reglas y los pagos se fijan antes del hash, y el hash no los revisa.

Tampoco dice nada del operador: si tiene licencia, cómo trata tus datos o si paga los retiros. Son preguntas de confianza en una empresa, no de criptografía, y ningún hash las responde.

Ni siquiera garantiza que la semilla sea impredecible: una generada con poca aleatoriedad podría adivinarse aunque el hash cuadre a la perfección.

RNG certificado frente a provably fair

Provably fair no cubre todo el catálogo de un sitio: suele limitarse a los juegos originales de cada casino.

Las tragamonedas de proveedores externos usan otro sistema: un generador de números aleatorios auditado por laboratorios como eCOGRA, iTech Labs o GLI. Los juegos con crupier en vivo no usan un generador de números: su resultado sale de una ruleta o unas cartas reales, filmadas en directo.

La diferencia está en quién comprueba. En el RNG certificado, un laboratorio revisa con pruebas estadísticas que el generador se comporta bien, y tú confías en su informe. En el provably fair, compruebas tú una ronda concreta.

Cómo saber si un sistema provably fair es falso: señales de alerta

El sello se puede poner en cualquier página. En julio de 2026, la organización independiente ProvablyFair.org analizó 240.000 apuestas en un casino de criptomonedas que anunciaba su juego como provably fair.

El sistema no tenía semilla del cliente ni una fórmula pública: la «prueba» que revelaba ya contenía el resultado final, así que nadie podía reconstruirlo. Además, en esas 240.000 apuestas el juego devolvió un 97,33 % frente al 99,02 % anunciado.

Un mecanismo que protege menos de lo que promete suele delatarse así:

  1. No muestra el compromiso antes de la ronda. Si el hash aparece solo después de tu apuesta, no hay sobre cerrado: el operador pudo elegir su semilla conociendo la tuya y luego calcular el hash.
  2. No te deja cambiar tu semilla. Si el sistema fija la semilla del cliente y el operador la conoce antes de comprometer la suya, puede elegir su semilla sabiendo qué resultado saldrá.
  3. No revela la semilla del servidor. O la cambia en cada apuesta sin haber publicado antes el compromiso de cada una. Sin la semilla revelada no puedes comparar nada, y el compromiso queda como decoración.
  4. No documenta el algoritmo ni el formato. Si no sabes qué función hash usa ni cómo convierte el hash en un resultado, nadie fuera del casino puede rehacer el cálculo.
  5. El verificador no reproduce el resultado. Si introduces semillas y nonce y el número no coincide con el que viste, la verificación falla, aunque el hash coincida.

La próxima vez que veas el sello provably fair

Hazte tres preguntas. Antes de la ronda: ¿te muestran el hash de la semilla del servidor y puedes poner tu propia semilla?

Al terminar: ¿la semilla revelada coincide con ese hash, comprobado con una herramienta que no sea la del casino? ¿Y el resultado se puede reconstruir con las semillas y el nonce?

Si las tres respuestas son sí, tienes una prueba de que el operador no cambió su semilla después de verte jugar

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda