Ir al contenido principal

Provably Fair - Esquemas de compromiso

¿Qué es un esquema de compromiso?

Un esquema de compromiso es una función que permite a un jugador y a la plataforma comprometerse de forma segura con un valor secreto elegido, manteniéndolo oculto para los demás.

Estos valores pueden revelarse posteriormente para que terceros verifiquen que el compromiso coincide con el valor revelado. Un esquema de compromiso garantiza que el casino sea verificable.

Un esquema de compromiso tiene dos fases: una fase de compromiso y una fase de revelación.

Fase de compromiso:

El objetivo de la fase de compromiso es comprometer o bloquear ciertos valores creados por el jugador y el operador para generar los resultados del juego.

En una explicación simplificada, se comprometen valores 3 y se utilizan para generar el resultado de un juego. Una vez que los valores se comprometen, no pueden modificarse hasta la fase de revelación. Durante el compromiso, se aplica hashing para evitar la manipulación.

  1. Semilla activa del cliente

  2. Semilla activa del servidor (sin hash)

  3. Nonce

Output = Commit(Active_Client_Seed, Active_Server_Seed, Nonce)

Semilla activa del cliente: no tiene hash y es un valor determinado por el jugador.

Semilla activa del servidor (sin hash): se mantiene secreta y es creada por el servidor. A este valor secreto se le aplica hash. Solo se muestra el valor con hash al operador y al jugador.

Nonce originalmente se establece en 0, ya que no se ha jugado ninguna partida. Aumentará con cada jugada.

Una combinación de estas 3 variables garantiza que el resultado del compromiso siempre sea diferente

Fase de revelación:

En la fase de revelación, el objetivo es revelar la semilla del servidor sin hash. Una vez que se conocen las semillas sin hash y el nonce, el usuario puede verificar su resultado.

Si un jugador desea verificar sus resultados, primero deberá rotar su par de semillas de servidor y cliente.

Cuando se haga esto, la plataforma eliminará el hash y mostrará la semilla del servidor que estaba activa anteriormente. Ahora, los jugadores, el operador y cualquier tercero conocerán toda la información 3: la semilla del cliente, la semilla del servidor y el nonce.

Al ingresar la semilla del cliente, la semilla del servidor y el nonce conocidos de la ronda, siempre podremos comprobar los resultados de ese juego y ronda específicos.

Semilla del servidor

La semilla del servidor es generada por su sistema como una cadena hexadecimal aleatoria de 64 caracteres. Esta semilla se somete a procesos de hashing SHA-256. Se muestra el valor con hash. El hashing tiene dos propósitos:

  1. Prevenir las trampas: es computacionalmente imposible que un usuario encuentre la semilla original del servidor sin hash a partir del hash (resistencia a la primera preimagen), lo que evita que los jugadores hagan trampa.

  2. Prevenir la manipulación: es computacionalmente imposible encontrar dos entradas sin hash iguales que produzcan la misma salida con hash, dada la propiedad de resistencia a colisiones de SHA-256, lo que evita que el operador engañe al jugador.

Solo cuando el juego finaliza y el usuario rota las semillas del cliente, el casino eliminará el hash de la semilla del servidor para su verificación.

Semilla del cliente

La semilla del cliente le pertenece a usted, el jugador, para garantizar que influya en la aleatoriedad del resultado de cada juego.

Inicialmente, su navegador genera aleatoriamente la semilla del cliente. Sin embargo, le recomendamos que edite la semilla del cliente con un valor de su preferencia. Esto garantiza que usted, como jugador, tenga influencia en el resultado del juego.

Nonce

En criptografía, nonce se refiere a “número usado una vez”. Es un número que aumenta de valor cada vez que se realiza una nueva apuesta con el mismo conjunto de semillas de servidor y cliente.

Esto garantiza que la combinación de la semilla del servidor, la semilla del cliente y el nonce sea diferente en cada juego, y que el resultado del esquema de compromiso también sea diferente.

Obtenga más información sobre cómo se implementan estos valores en el código.

¿Ha quedado contestada tu pregunta?