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. INGREDIENTES
Son 3, los ingredientes que component 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 pueda verla. Se trata del hash de uno de los últimos bloques de Doge minados del día (Blockchain).
Nonce. Una pizca de sal, que 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 probarblo 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 tú mismo si la semilla ha sido modificada: comparando el hash de la semilla revelada al final del día con el hash mostrado durante el día. Si alteráramos 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, la cual es una función criptográfica que toma como entrada una semilla usando todo lo anterior. Por ejemplo, para una ronda de la ruleta, la semilla sería la siguiente:
Para ello hacemos uso de la función HMAC, la cual es una función criptográfica que toma como entrada una semilla usando todo lo anterior. Por ejemplo, para una ronda de la 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 obenter el resultado del juego. Dependiendo del juego transformamos el resultado de una forma u otra. Si quieres ver el código exacto de como se hace, puedes hacer click en el juego quieras al final 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 la semilla secreta hasheada del día siguiente
Día 1 - 23:55
Aquí obtenemos el hash público de el último bloque minado de Dogecoin y lo guardamos como clave pública del Día 2. Y además, generamos la semilla secreta del Día 3
Día 2 - 00:00
La semilla secreta del Día 1 es revelada para verificación.
3. ¿POR QUÉ NO PODEMOS INFLUIR EN LOS RESULTADOS?
La semilla pública viene 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 podemos ver que el hash de la semilla secreta del Día 2 sería abbba.
Día 1 - 23:55
Obtenemos la semilla pública con el bloque de Doge. Dado que el valor del bloque es completamente aleatorio y externo a nosotros, y como nos hemos comprometido a que la semilla del Día 2 sea abbba (hash), es imposible que podamos influir en los restulados.