Click here to view the original iTech Labs Certificate.
Visão geral do sistema
O gerador de números aleatórios cria números aleatórios comprováveis e totalmente justos que são usados para determinar o resultado de cada jogo jogado no site.
Cada usuário pode verificar completamente o resultado de qualquer jogo de maneira determinística. Ao fornecer um parâmetro, a semente do cliente, para os inputs do gerador de números aleatórios, o Play2x não pode manipular os resultados a seu favor.
O gerador de números aleatórios do Play2x permite que cada jogo solicite qualquer número de números aleatórios a partir das sementes iniciais do cliente, a semente inicial do servidor e o número único.
Cada jogo usa esta lista de números aleatórios para determinar seu resultado, transformando-os no resultado necessário:
- em cartas ou pedras (hilo, stairs, triple)
- Embaralhando a lista de resultados possíveis (keno, mines, tower)
- em números (crash, dice)
- em um caminho (plinko)
Dados de entrada:
Cada usuário possui uma semente do cliente, semente do servidor e número único ativos, onde o número único incrementa após cada jogo.
Semente do Cliente:
Uma string aleatória gerada pelo usuário. Por padrão, uma string aleatória do servidor.
Semente do Servidor:
A semente inicial do servidor é gerada pelo servidor e é uma sequência hexadecimal (0-9, a-f) de 64 caracteres gerada aleatoriamente. O Play2X utiliza o hash da semente inicial do servidor usando o algoritmo SHA256. (Wikipedia)
O usuário pode alterar sua semente do servidor atual. Quando a semente é alterada, uma nova semente ativa é gerada automaticamente, e o número único é redefinido para 0.
Então, a semente anterior, que agora está inativa, é revelada e pode ser verificada usando SHA256.
Número Único:
Número único é um número que incrementa em um a cada vez que um jogo é concluído. Isso permite gerar uma entrada única para o jogo, e é o único parâmetro que muda após cada jogo.
Convertendo Dados de Entrada para Bytes:
A semente do cliente, a semente do servidor e o número único são usados como parâmetros de entrada para o gerador de números aleatórios.
Bytes são gerados usando a função HMAC_SHA512(K, m) (Wikipedia). Esta função gera 64 bytes aleatórios (0-255) a partir da semente inicial do servidor dada (K) e da mensagem (m).
A mensagem é criada usando a semente do cliente, o número único e um número incremental.
Este número, começando do 0, incrementa em um a cada vez que 64 bytes (retornados pela função HMAC_SHA512(K, m)) são utilizados. Então, a mensagem é criada concatenando a semente inicial do cliente, dois pontos, o número único, outro dois pontos e o número de incremento.
HMAC_SHA512(semente_servidor, semente_cliente:número_único:rodada)
registered address – Curaçao, Abraham de Veerstraat 9