Juego limpio (Provably Fair)

3-102-969694 SOCIEDAD DE RESPONSABILIDAD LIMITADA. PROVINCIA 01 SAN JOSE, CANTON 01 SAN JOSE, DISTRITO CARMEN, BARRIO ESCALANTE, AVENIDA SIETE, CALLE VEINTINUEVE, EDIFICIO DOS MIL NOVECIENTOS DIEZ, CENTRO CORPORATIVO AG

Juego justo

SpyDrop usa el algoritmo Provably Fair para que cualquier jugador pueda comprobar la imparcialidad de una partida. El resultado de una caja o de un upgrade lo determinan una seed del servidor fijada de antemano, tu seed del cliente y el número de partida, así que no se puede manipular una vez empezada la partida.

El resultado se fija de antemano

Antes de la partida ves el hash de la seed del servidor, así que el servidor ya no puede cambiar los datos de origen sin que se note.

Tus datos forman parte del cálculo

Tu seed y el número de partida participan en el cálculo, así que el resultado no lo forma solo el servidor.

Datos de la partida

Introduce los datos de una partida. El cálculo se hace en tu navegador y no se envía nada al servidor.

Un array de filas con los campos itemId, start, end, name y phase (fase de CS2 o null). Cópialo de la tarjeta de la partida.

Resultado de la verificación

Introduce los datos de la partida y pulsa «Verificar»: aquí aparecerán el número y el objeto.

Cómo se forma el resultado

Seed del servidor + Tu seed + Número de partida = Resultado justo

Cómo funciona

  1. El compromiso del servidor

    El servidor elige una seed del servidor aleatoria y muestra solo su hash SHA-256. Después no se puede cambiar la seed: el hash dejaría de coincidir.

  2. El hash de la partida

    Para cada partida se calcula un HMAC-SHA256. La clave es la seed del servidor como cadena hex de 64 caracteres, tal cual, sin decodificarla a bytes. El mensaje se forma con el tipo de juego, el juego, tu seed del cliente y el número de partida.

  3. El ticket

    Los primeros 8 caracteres hex del hash dan un número de 0 a 4 294 967 295. De él sale el ticket de 1 a 100 000 000: floor(número × 100 000 000 / 2^32) + 1.

  4. Caja

    En la tabla de probabilidades del momento de la partida, cada objeto tiene su propio rango de tickets. Se obtiene el objeto en cuyo rango cae el ticket.

  5. Upgrade

    El umbral es floor(probabilidad × 100 000 000). El upgrade gana si el ticket no supera el umbral.

  6. La revelación

    La seed del servidor se revela cuando cambias las seeds. Después puedes recalcular cualquier partida del par en tu navegador, en esta página, o con tu propio código.

La fórmula

Mensaje
kind:game:clientSeed:nonce
Clave HMAC
HMAC-SHA256(serverSeed, message)

La clave es la cadena hex de la seed del servidor tal cual (64 caracteres), no los bytes decodificados de ella. Aquí es donde fallan la mayoría de las comprobaciones hechas por cuenta propia.

Puedes verificar una partida jugada con el botón «Verificar» del historial de cajas y upgrades.