DEMOSTRABLEMENTE JUSTO
El resultado de todos los juegos puede ser comprobado una vez finalice el día. Pero, ¿cómo se genera el resultado?
1. ELEMENTOS
Son 3, los elementos que componen la generación de un resultado de cualquier juego:
Semilla secreta del servidor. Piensa en ella como un ingrediente secreto que se mantiene oculto hasta el final del día. Hasta que no se revela, sólo puedes ver su hash.
Semilla pública. Al contrario que la anterior, todo el mundo puede verla. Se trata del hash de uno de los últimos bloques de Doge minados del día (Blockchain).
Nonce. Asegura que cada ronda sea única. Es un número que se incrementa en 1 cada vez que se juega una ronda.
¿Qué es un hash?
Un hash es una huella digital única de cualquier tipo de información (texto, imagen, archivo, etc.). Es como juntar toda la información y generar un código único y corto. La magia de esto es que, para una misma entrada, siempre obtendremos el mismo código. Por ejemplo, si nuestra entrada fuera:
macaco -> 9ffe05b4553f32356d4d70f128ff0bb8c19f64275c45153ef26ed127e264a2aa
Obtendríamos un código único. Y si cambiáramos lo más mínimo la entrada original, obtendríamos un hash completamente diferente:
macacos -> 5554c3c7d648c487b73b5cbf8ff0e8868d2813ccdef0dde75b00bcec3b52550d
Puedes probarlo tú mismo en cualquier página que calcule el hash SHA-256 y verás como obtienes el mismo valor (ten cuidado con los espacios), por ejemplo.
Durante el día, mostramos el hash de la semilla secreta pero no la semilla en sí. Así, puedes comprobar si la semilla ha sido modificada comparando el hash revelado al final del día con el mostrado durante el día. Si se alterara la semilla, el hash sería completamente diferente.
2. GENERACIÓN
Sabiendo todo esto, ¿cómo se genera el resultado de un juego? Para ello hacemos uso de la función HMAC, una función criptográfica que toma como entrada una semilla compuesta de todo lo anterior. Por ejemplo, para una ronda de ruleta, la semilla sería la siguiente:
ROULETTE-9ffe05b4553f323-75c71c75a7376:3
De izquierda a derecha, CÓDIGO DE JUEGO, SERVER SEED, PUBLIC SEED, NONCE.
Una vez calculado el resultado con la función HMAC, la transformamos para obtener el resultado del juego. Dependiendo del juego, lo transformamos de una forma u otra. Si quieres ver el código exacto, haz click en el juego que desees al principio de esta página.
3. PROCESO DIARIO
Aclarado todo esto, vamos a entender cómo se obtienen las semillas de cada día.
Día 1 - 15:00
En este punto podemos ver el hash de la semilla secreta, la semilla pública y el nonce, y el hash de la semilla secreta del día siguiente.
Día 1 - 23:55
Aquí obtenemos el hash público del último bloque minado de Dogecoin y lo guardamos como clave pública del Día 2. Además, generamos la semilla secreta del Día 3.
Día 2 - 00:00
La semilla secreta del Día 1 se revela para verificación.
3. ¿POR QUÉ NO PODEMOS INFLUIR EN LOS RESULTADOS?
La semilla pública proviene de algo fuera de nuestro control (el bloque minado de Dogecoin). Además, mostramos el hash de la semilla secreta que usaremos el día siguiente. Ejemplo:
Día 1 - 15:00
En la parte superior de la página de historial se muestra que el hash de la semilla secreta del Día 2 sería abbba.
Día 1 - 23:55
Obtenemos la semilla pública del bloque de Doge. Dado que el valor del bloque es completamente aleatorio y externo, y puesto que hemos comprometido que la semilla del Día 2 sea abbba (hash), es imposible influir en los resultados.