Click here to view the original iTech Labs Certificate.
Visão geral do sistema
O Gerador de Números Aleatórios (RNG) gera números aleatórios comprovadamente justos, usados para determinar o resultado de cada jogo no site.
Qualquer usuário pode verificar o resultado de um jogo de forma totalmente determinística. Ao fornecer o Client Seed como entrada, o Play2x não pode manipular os resultados em seu próprio favor.
O RNG do Play2x permite que cada jogo gere quantos números aleatórios forem necessários a partir de uma única combinação de client seed, server seed e nonce.
Cada jogo usa esses números para determinar o resultado, convertendo-os em:
- cartas ou pedras (hilo, escadas, triplo)
- embaralhamento de listas de resultados possíveis (keno, minas, torre)
- números (crash, dados)
- caminhos (plinko)
Entradas:
Cada usuário possui um client seed, server seed e nonce ativo, sendo o nonce incrementado a cada jogo jogado.
Seed do cliente:
String aleatória definida pelo usuário. Por padrão, é uma string gerada pelo servidor.
Seed do servidor:
O server seed é uma string aleatória de 64 caracteres hexadecimais gerada pelo servidor. O Play2x publica o hash SHA256 dessa string (Wikipedia)
O usuário pode alterar seu server seed a qualquer momento. Ao fazer isso, um novo seed é gerado e o nonce é reiniciado para 0. O seed anterior se torna público e pode ser verificado via SHA256.
Número único (nonce):
O nonce é um número que é incrementado a cada jogo, garantindo entradas únicas para cada rodada. É o único valor que muda entre uma rodada e outra.
Conversão de entradas em bytes:
O client seed, server seed e nonce são usados como entradas para gerar os números aleatórios.
Os bytes são gerados usando a função HMAC_SHA512 (K, m) (wikipedia). Essa função retorna 64 bytes aleatórios (0-255) com base no server seed (K) e uma mensagem (m).
A mensagem é composta pelo client seed, o nonce e um número incremental.
Este número incremental começa em 0 e é aumentado a cada vez que se usam os 64 bytes retornados pela HMAC_SHA512. A mensagem final segue o padrão:
HMAC_SHA512(server_seed, client_seed:nonce:round)
registered address – Curaçao, Abraham de Veerstraat 9