Verifica el proceso, no una promesa.

Roat Pkz se compromete con una entrada oculta del servidor antes de jugar, la revela después y publica implementaciones deterministas de los verificadores para que el resultado registrado pueda reproducirse de forma independiente.

Código abierto · Licencia MIT
Resumen
SHA-256
Verificación
Local y sin conexión
Implementaciones
5
Secuencia del protocolo

Compromiso. Fijación. Revelación. Reproducción.

Cada fase conserva las pruebas necesarias para auditar el resultado final.

01

Compromiso

Antes de jugar, el servidor publica una huella SHA-256 de su semilla oculta.

02

Fijación

La apuesta y las semillas controladas por el jugador se fijan antes de generar el resultado.

03

Revelación

Después de la sesión o ronda, se revela la semilla original del servidor para que pueda verificarse de forma independiente.

04

Reproducción

El verificador correspondiente vuelve a calcular el resultado determinista a partir de las entradas registradas.

Entradas específicas del juego. Resultado determinista.

Todos los juegos utilizan SHA-256, pero el orden exacto de las entradas, las reglas de los contadores y la conversión del resultado los define el verificador de cada juego. Utiliza siempre la implementación correspondiente.

Un compromiso coincidente confirma que la semilla revelada no fue sustituida. Una reproducción coincidente confirma que las entradas reveladas generan el resultado registrado.

verification.pseudo
committedHash = SHA-256(serverSeed)

assert SHA-256(revealedSeed)
       == committedHash

gameInput = gameSpecificMaterial(...)
outcome   = map(SHA-256(gameInput), rules)
Registro de verificadores

Elige la implementación exacta del juego.

Cada verificador es una herramienta autónoma para el navegador que puede guardarse para revisarla sin conexión.

Revisar código fuente

Blackjack

ProvablyFairBlackjack
Dominio de salidaBaraja de 8 mazos · 416 cartas
Entradas necesarias clientSeed · serverSeed · nonce
hash = SHA256(clientSeed + ":" + serverSeed + ":" + nonce + ":" + counter);
j = unsigned64(hash[0..7]) % (i + 1); swap(deck[i], deck[j]);

Dados

ProvablyFairDice
Dominio de salida0,00–100,00 % · 10.001 valores
Entradas necesarias clientSeed · serverSeed · nonce
hash = SHA256(clientSeed + ":" + serverSeed + ":" + nonce);
roll = (unsigned32(hash[0..3]) % 10_001) / 100.0;

Minas

ProvablyFairMines
Dominio de salidaCuadrícula 5 × 5 · 25 posiciones
Entradas necesarias clientSeed · serverSeed · nonce · mineCount
hash = SHA256(clientSeed + ":" + serverSeed + ":" + nonce + ":" + counter++);
index = unsigned64(hash[0..7]) % remaining;
mine = bag[index]; bag[index] = bag[--remaining];

Flower Poker

ProvablyFairFlowerPoker
Dominio de salidaSecuencia determinista de flores
Entradas necesarias player1Seed · player2Seed · serverSeed
hash = SHA256(player1Seed + ":" + player2Seed + ":" + serverSeed + ":" + index);
value = unsigned64(hash[0..7]) & 0x7FFF_FFFF_FFFF_FFFF;
roll = (value % 500) + 1; flower = roll == 1 ? BLACK : roll == 2 ? WHITE : common[(roll - 3) % 7];

Boxeo

ProvablyFairBoxing
Dominio de salidaSecuencia de golpes · valores 0–16
Entradas necesarias player1Seed · player2Seed · serverSeed · hit counter
hash = SHA256(player1Seed + ":" + player2Seed + ":" + serverSeed + ":" + hitNo);
hit = unsigned64(hash[0..7]) % 17;
Auditoría independiente

Verifica una partida registrada.

  1. 1
    Conserva las entradas

    Copia los valores exactamente como aparecen en el juego. Las semillas distinguen entre mayúsculas y minúsculas.

  2. 2
    Abre el verificador correspondiente

    Selecciona el mismo juego e introduce todas las semillas, nonces, contadores o parámetros necesarios.

  3. 3
    Vuelve a calcular y compara

    Genera el resultado y compara la salida completa con el resultado registrado de la partida.

Preguntas técnicas

Preguntas sobre la verificación.

¿Roat Pkz está manipulado?

No. Antes de jugar, Roat Pkz se compromete con una semilla oculta del servidor mediante la publicación de su hash SHA-256. Después, la semilla se revela y el verificador publicado puede reproducir el resultado a partir de las entradas registradas. Una semilla sustituida o un resultado alterado producirían una discrepancia.

¿El sistema de apuestas de Roat Pkz es de código abierto?

Sí. Las implementaciones de apuestas verificablemente justas y los verificadores para el navegador están publicados en GitHub bajo la licencia MIT. Esto permite que cualquier persona examine el manejo exacto de las semillas, el hashing y la lógica que convierte cada resultado, reproduzca de forma independiente los resultados registrados y audite el funcionamiento de cada juego compatible.

¿Qué demuestra una verificación correcta?

Confirma que la semilla revelada del servidor coincide con el compromiso anterior y que las entradas publicadas reproducen el resultado registrado mediante el algoritmo publicado de ese juego.

¿Por qué solo se muestra un hash antes de jugar?

Publicar antes de tiempo la semilla original del servidor revelaría material secreto de entrada. Su hash SHA-256 compromete al servidor con esa semilla sin exponerla hasta que finaliza la partida.

¿Por qué algunos juegos utilizan un nonce o contador?

Un nonce o contador proporciona a cada resultado una entrada determinista distinta mientras sigue activo el mismo par de semillas. Utiliza el valor exacto registrado para el resultado que verificas.

¿Puedo elegir mi propia semilla de cliente?

Sí. Utiliza el control de semilla de la interfaz de apuestas antes de realizar tu apuesta. La entrada controlada por el jugador impide que el servidor elija por sí solo todas las entradas.

¿Las semillas de cliente idénticas generan resultados idénticos?

No. La semilla del servidor y, cuando corresponda, el nonce o contador también forman parte de la entrada. Para reproducir un resultado debe coincidir el conjunto completo de entradas.

¿Qué debo hacer si un verificador no coincide?

No modifiques los valores registrados. Guarda la semilla del cliente o las semillas de los jugadores, la semilla revelada del servidor, el nonce o contador, los datos de la apuesta y el resultado observado; después envía el registro completo a soporte.