Cómo funciona el provably fair en los sitios de Rust y cómo comprobar tus tiradas
Hashes de server seed, client seeds, nonces y HMAC-SHA256 en palabras sencillas, con un ejemplo práctico que puedes reproducir y una rutina paso a paso para comprobar cualquier tirada en un sitio de skins de Rust.
Los diez sitios de nuestro ranking presentan sus juegos como provably fair. La expresión tiene un significado preciso, y la comprobación que hay detrás es algo que puedes ejecutar tú mismo con una herramienta gratuita de hashing o unas pocas líneas de código. Muy pocos jugadores la ejecutan alguna vez. Esta guía explica qué demuestra el sistema, qué deja fuera y cómo verificar una tirada de principio a fin.
La versión corta: antes de apostar, el sitio fija un valor secreto y te enseña una huella de él. Tú añades una entrada propia. Tras las apuestas, el sitio revela el secreto, y puedes confirmar que la huella coincide y que cada resultado se deriva de las entradas. Si los números cuadran, el sitio no pudo cambiar un resultado después de ver tu apuesta.
El problema que resuelve el provably fair
En un sitio de skins, el servidor decide cada resultado. Cuando abres una caja, tiras una moneda o esperas un multiplicador de crash, estás viendo la animación de un número que se produjo en una máquina que no puedes inspeccionar. Sin alguna forma de prueba, confías en que el operador no esté empujando en silencio las tiradas en tu contra cuando tu apuesta es grande.
Los casinos en línea con licencia suelen responder a esto con reguladores y auditorías de terceros de sus generadores de números aleatorios. La mayoría de los sitios de skins se apoya en cambio en un enfoque criptográfico. Tiene una gran ventaja para los jugadores: no necesitas confiar en un auditor, porque puedes repetir el cálculo en tu propio ordenador.
La idea se llama esquema de compromiso. Imagina que el sitio escribe su secreto en una tarjeta, la sella en un sobre y te entrega el sobre antes de que empiece el juego. No puede cambiar la tarjeta después sin que lo notes, y tú no puedes leer la tarjeta antes de tiempo.
Las tres entradas: server seed, client seed y nonce
Casi todos los sistemas provably fair de los sitios de Rust usan los mismos ingredientes. Las etiquetas varían un poco de un sitio a otro, pero los papeles son los mismos.
Server seed
Una cadena aleatoria larga generada por el sitio. Permanece secreta mientras juegas, porque cualquiera que la conociera podría predecir todos los resultados. Lo que ves en su lugar es su hash, normalmente producido con SHA-256. Un hash es una huella unidireccional. La misma entrada siempre da la misma salida de 64 caracteres, cambiar un solo carácter de la entrada cambia la salida por completo, y no hay forma práctica de ir hacia atrás desde el hash hasta la seed.
Client seed
Una cadena que viene de tu lado. Los sitios generan una por defecto para ti, y la mayoría te permite editarla en el panel de justicia o de ajustes. Su función es impedir que el sitio elija una server seed que te perjudique a ti en particular. El sitio se comprometió con su seed antes de saber qué ibas a escribir, así que no tuvo forma de ajustar una a la otra.
Nonce
Un contador que empieza en 0 o en 1 y sube de uno en uno con cada apuesta que haces con el mismo par de seeds. Permite reutilizar una server seed y una client seed para cientos de apuestas y aun así obtener un resultado nuevo en cada una.
Cuando quieres comprobar tus resultados, pides al sitio que rote la seed. Revela la server seed antigua en texto plano, te muestra el hash de una nueva y reinicia el nonce. Todo lo que jugaste con la seed antigua ya se puede verificar.
Cómo se convierten las entradas en un resultado
La receta más común es HMAC-SHA256. HMAC es una forma estándar de combinar una clave secreta con un mensaje para producir un hash. En la mayoría de los sitios de Rust, la server seed es la clave y el mensaje es la client seed y el nonce unidos, a menudo con dos puntos, como clientseed:nonce. Algunos sitios añaden un número de ronda o un ID de juego, así que lee siempre la fórmula exacta en la propia página de justicia del sitio.
La salida es una cadena hexadecimal de 64 caracteres. Después el sitio convierte parte de esa cadena en un número entre 0 y 1. Un método típico toma los primeros ocho caracteres hexadecimales (32 bits), los convierte en un número entero y los divide entre 4,294,967,296, que es 2 elevado a 32. Ese decimal se asigna después al juego:
- Dados y upgrader: multiplica por 100 para obtener una tirada de 0.00 a 99.99 y compárala con el objetivo.
- Ruleta: multiplica por el número de casillas de la rueda y redondea hacia abajo para elegir una casilla.
- Cajas: multiplica por el número total de tickets de la caja, de modo que una skin que posee el 1% de los tickets gana en el 1% de las tiradas.
- Crash: pasa el número por una fórmula que lo convierte en un multiplicador, con la ventaja de la casa integrada. Nuestra guía de estrategia de crash explica esa fórmula y lo que implica para los objetivos de cobro.
Un ejemplo práctico que puedes reproducir
Las seeds de abajo están inventadas para este ejemplo, de modo que puedas comprobar nuestra aritmética con cualquier calculadora de HMAC-SHA256.
- Server seed: example-server-seed-01. Su hash SHA-256 empieza por a5275da7ccca3f73. Ese hash es lo que te mostraría el sitio antes de jugar.
- Client seed: my-own-client-seed. Nonce: 1. El mensaje es, por tanto, my-own-client-seed:1.
- HMAC-SHA256 con la server seed como clave y ese mensaje como entrada da un resultado que empieza por 4cdcf221.
- El hexadecimal 4cdcf221 es 1,289,548,321 en decimal. Dividido entre 4,294,967,296, son aproximadamente 0.30025.
- En una escala de dados de 0 a 100, eso es una tirada de 30.02. En una ruleta de 15 casillas, 0.30025 por 15 son unos 4.5, que redondeado hacia abajo da la casilla 4 (contando la primera casilla como 0).
Ejecuta las mismas seeds con el nonce 2 y obtendrás un hash completamente distinto, que empieza por 6486ccbd y equivale a unos 0.3927. Nada de la primera tirada te dice nada de la segunda. Esa independencia es el sentido de todo: no hay ningún patrón que leer en un historial de apuestas, porque cada resultado es un hash nuevo.
Cómo verificar una tirada tú mismo, paso a paso
La primera comprobación completa lleva un rato. Después son unos minutos de copiar y pegar. Hazlo primero con un saldo pequeño, para conocer el proceso antes de que un resultado te importe de verdad.
- Abre el panel de justicia antes de apostar. Suele estar enlazado desde la pantalla del juego, el pie de página o los ajustes de tu perfil. Guarda la server seed hasheada en algún sitio fuera del sitio, como una nota en el móvil o una captura de pantalla.
- Fija tu propia client seed. Sustituye la que viene por defecto por algo que escribas tú. Aporrea el teclado. No hace falta que sea memorable.
- Juega y anota las apuestas que te importen. Apunta el nonce que se muestra en cada apuesta, o búscalo después en tu historial de apuestas.
- Rota la seed. El sitio revela la server seed antigua. Cópiala.
- Comprueba el compromiso. Pasa la server seed revelada por cualquier herramienta SHA-256. La salida debe coincidir con el hash que guardaste en el paso 1, carácter por carácter.
- Recalcula la tirada. Usa HMAC-SHA256 con la server seed revelada, tu client seed y el nonce, y aplica la conversión que publica el sitio. En PHP es una sola llamada a hash_hmac, y el módulo hmac de Python hace lo mismo en un par de líneas.
- Compara. El número que calcules debe producir el resultado registrado en tu historial.
La mayoría de los sitios ofrecen también un verificador integrado donde pegas las seeds. Es cómodo, pero se ejecuta con el código del propio operador. Para una comprobación que no dependa en absoluto del sitio, usa una herramienta independiente o tu propio script al menos una vez.
Los juegos compartidos funcionan algo distinto
Los modos individuales como dados, upgrader y aperturas de cajas en solitario pueden funcionar con tu par de seeds personal. Los juegos donde muchos jugadores comparten un resultado, como el jackpot, el coinflip, las case battles, las rondas de ruleta y el crash, no pueden dejar que la client seed de un jugador decida el resultado de todos. Los sitios lo resuelven de unas pocas formas habituales.
- Una cadena de hashes. Habitual en el crash. El sitio genera de antemano una larga cadena de hashes, en la que el hash de cada ronda es el SHA-256 del de la ronda siguiente. Publica el último hash de la cadena antes de jugar la primera ronda, y puedes comprobar que cada ronda revelada produce con su hash la anterior. Todos los resultados de la cadena quedaron fijados antes de que nadie hiciera una apuesta.
- Una seed pública externa al sitio. El sitio se compromete con su server seed y después mezcla un valor que nadie podía conocer de antemano, como el hash de un bloque futuro de una blockchain pública. Como ese bloque no existía cuando el sitio se comprometió, el sitio no pudo ajustar su seed a él.
- Compromisos por ronda. En el jackpot y el coinflip, la seed hasheada de la ronda aparece cuando la ronda se abre, y la seed en claro más el ticket ganador se muestran cuando termina.
La idea de la verificación es la misma en cada caso. Encuentra el compromiso que era público antes de la ronda, confirma que el valor revelado coincide con él y recalcula el resultado. Para ver cómo un ticket ganador se convierte en ganador en un bote compartido, mira nuestra guía de probabilidades de coinflip y jackpot. Las case battles mezclan ambos enfoques, lo cual explicamos en case battles explicadas.
Lo que el provably fair no demuestra
Una tirada verificada demuestra una sola cosa, y estrecha: el resultado salió de entradas con las que el sitio se comprometió antes de que apostaras. Es útil, pero los jugadores suelen leer en la insignia mucho más de lo que respalda.
- No dice nada sobre la ventaja de la casa. Un juego de crash con una gran ventaja puede ser perfectamente provably fair. La ventaja está dentro de la fórmula publicada que convierte el número aleatorio en un multiplicador o una probabilidad de ganar. Justo significa que el sitio siguió sus propias reglas, y esas reglas siguen favoreciendo al sitio con el tiempo.
- No comprueba precios. Si una caja lista una skin a un valor muy por encima de lo que se vendería en el Mercado de la Comunidad de Steam, la tirada puede ser justa y la caja seguir siendo mala relación calidad-precio. Nuestra guía del upgrader muestra cómo la valoración de los objetos desplaza en silencio las probabilidades reales.
- No cubre los retiros. Un sitio puede tener seeds impecables y aun así retrasar pagos, congelar cuentas o reescribir sus condiciones. Por eso la justicia es solo una entrada de cómo puntuamos los sitios, junto a la velocidad de pago y la confianza.
- Solo funciona si alguien comprueba. Un compromiso que nadie compara es solo una cadena de caracteres en una página.
Señales de alerta en una página de justicia
Verificar seeds es un paso rutinario cuando probamos un sitio. Estas son las cosas que nos hacen sospechar, más o menos de leves a graves.
| Lo que ves | Qué significa | Qué hacer |
|---|---|---|
| Sin opción de cambiar la client seed | El sitio controla todas las entradas de tus tiradas personales | Trata los modos individuales con más cautela |
| Un botón de verificador pero ninguna fórmula publicada | Solo puedes comprobar los resultados con el código del propio sitio | Pide al soporte la fórmula exacta antes de depositar mucho |
| El hash de la server seed solo aparece después de apostar | No hay un compromiso real | No trates el juego como provably fair |
| Las server seeds antiguas nunca se pueden revelar | No se puede verificar nada | Igual que arriba |
| La seed revelada no da el hash del compromiso guardado | Se cambió la seed, o la página está rota | Deja de jugar, haz capturas de todo y contacta con el soporte |
Si alguna vez llegas a la última fila, conserva tus pruebas: el hash guardado, la seed revelada, los ID de las apuestas y la hora de cada una. Una sola discrepancia puede ser un fallo de visualización, pero es exactamente el tipo de reporte creíble de un jugador que nos hace volver a revisar un sitio.
Una rutina sensata para jugadores normales
No necesitas verificar cada apuesta. Una rutina ligera detecta la mayoría de los problemas sin convertir una sesión en deberes.
- Fija una client seed nueva siempre que empieces a jugar en un sitio nuevo.
- Haz una captura de la server seed hasheada antes de jugar.
- Rota tras la sesión y comprueba el compromiso, que es un cálculo SHA-256.
- Recalcula el resultado o los dos resultados que más importaron, como una gran derrota en el upgrader o una battle que estabas seguro de que deberías haber ganado.
- De vez en cuando, repite la comprobación completa con una herramienta independiente en lugar de con el verificador del sitio.
Una verificación limpia significa que las pérdidas que sufres son las que predicen las matemáticas publicadas, y no más. La ventaja sigue ahí en cada tirada. El siguiente paso práctico es decidir de antemano cuánto de esas pérdidas esperadas estás dispuesto a pagar por el entretenimiento; nuestra página de juego responsable cubre límites sencillos y las herramientas que ayudan a respetarlos.
Preguntas frecuentes
¿Puede hacer trampas un sitio provably fair?
No puede cambiar un resultado comprometido sin que falle la comprobación del hash. Sí puede tener una ventaja de la casa alta, sobrevalorar objetos en las cajas o retrasar retiros, porque el provably fair solo cubre cómo se produce la tirada.
¿Tengo que cambiar mi client seed?
No, pero deberías. Una client seed que elegiste después de que se mostrara el hash de la server seed significa que el sitio no pudo elegir su seed pensando en tu entrada.
¿Por qué el sitio no muestra simplemente la server seed antes de jugar?
Quien conozca tanto la server seed como la client seed puede calcular todos los resultados futuros. El hash permite al sitio comprometerse con su seed sin revelar las tiradas que vienen.
¿Qué herramienta puedo usar para verificar tiradas?
Sirve cualquier calculadora de SHA-256 y HMAC-SHA256, incluidas las herramientas gratuitas en línea y las funciones integradas de PHP, Python o JavaScript. Usa el verificador del sitio por comodidad y una herramienta independiente para la comprobación que cuenta.
¿Es SHA-256 lo bastante seguro para esto?
Sí. Es un estándar muy extendido, también usado en la minería de Bitcoin, y no se conoce ninguna forma práctica de revertirlo ni de encontrar una segunda seed que produzca el mismo hash.
Sigue leyendo
Guías relacionadas
Bonos, cajas gratis y códigos promo de Rust gambling: cuánto valen
Una caja gratis vale lo que da de media, no su mejor objeto, y un saldo gratis vale lo que sobrevive al requisito de apuesta. Cómo poner precio a cada bono habitual de los sitios de Rust antes de escribir un código.
Case battles de Rust explicadas: modos, probabilidades y cómo elegir una battle justa
Una case battle no cambia la ventaja de la casa de las cajas que contiene. Cambia lo fuerte que ganas o pierdes. Cómo funcionan los formatos, las matemáticas que hay detrás y cómo detectar una battle que merece la pena.
Skin gambling responsable: límites, señales de alerta y dónde conseguir ayuda
Las skins hacen fácil perder la noción del dinero real. Esta guía cubre las señales de alerta, los límites que de verdad aguantan, la autoexclusión y las herramientas de bloqueo, y las líneas de ayuda gratuitas a las que puedes llamar hoy.