Provadamente Justo

O que é "Provadamente Justo"

Os jogadores sempre têm medo de serem enganados em jogos online.
Isso é compreensível, pois é tecnicamente muito fácil para um provedor de jogos online fazer você perder. No Jemlit, temos uma solução para isso que se chama provadamente justo. Provadamente justo é uma ferramenta que permite a você (o jogador) verificar cada resultado e garantir que não está sendo enganado!


Como Provadamente Justo funciona?

Neste método, cada resultado é calculado pelas seguintes variáveis:

  • Server Seed - Uma sequência aleatória de caracteres fornecida por nós
  • Client Seed - Uma sequência de caracteres gerada pelo seu navegador que você pode alterar
  • Nonce ou Contador de jogadas - Um número que aumenta a cada jogada

Você receberá um hash criptografado do Server Seed antes de começar a jogar.
Como você o recebe antecipadamente, não podemos alterá-lo depois. No entanto, ele está criptografado, então você não pode calcular seus próprios resultados antecipadamente (apenas depois, se receber o Server Seed sem hash). O Server Seed é criptografado usando o algoritmo SHA512.

Seu navegador irá gerar um Client Seed aleatório. No entanto, você pode (e deve) ajustar esse Client Seed antes de começar. Assim, garante que o site não saiba seu Client Seed antecipadamente.

Agora, ao fazer uma aposta, o Nonce começa com 1. A cada aposta, o número nonce aumenta em 1.


Calculando o resultado

Agora vem a parte técnica! Existem 3 etapas que levam ao número final da jogada.

Etapa 1 - Gerando o hash das variáveis

Nesta etapa, calculamos o HMAC com o algoritmo SHA512/256 usando o Server Seed como chave, e o Client Seed e o Nonce como dados, concatenados por um hífen (-).

Você pode calcular por conta própria; acesse aqui e execute este código:
echo hash_hmac('sha512/256', seu client seed-seu nonce', 'server seed');
O resultado será 38611068f6936027c4657138536fb5bb8f82a6cb2d883f1acb47cb24013f9e93

Etapa 2 - Convertendo o hash em número

Na etapa 2, pegamos o resultado obtido e o transformamos em número; acesse aqui e execute este código:
echo number_format(hexdec('38611068f6936027c4657138536fb5bb8f82a6cb2d883f1acb47cb24013f9e93'), 0, ".", "");
Você obterá 25501016943689873370561741542489390377389678092728534236058081515070178721792, um número muito longo.

Etapa 3 - Calculando o resultado final

Como queremos um número decimal entre 0 e 100, primeiro dividimos o número da etapa anterior pelo número máximo possível, 1664 (64 é o comprimento da string obtida na Etapa 1).
Por fim, o resultado é calculado:
roll = 0 + número dividido * 100.
Neste exemplo, o resultado é 22.0231.


Como o prêmio é escolhido?

Quando você acessa a página de uma eBox, pode alternar as chances clicando em Mostrar chances, e pode ver os resultados clicando em "Ver resultados" no final da página.
Para cada item na caixa, você verá o número necessário para ganhar o prêmio, ex.: 95.54 a 97.22. Isso significa que, se você tirar um número maior que 95.54 e menor ou igual a 97.22, você ganhará o prêmio.


Como posso verificar que tudo é justo?

Para verificar que não houve trapaça, basta seguir as etapas ilustradas acima.
Claro, você só poderá verificar um jogo depois de revelar o Server Seed.
Você encontra seu Server Seed, Client Seed e Nonce in the "Fairness" popup na janela "Fairness" no topo da página (ou no menu superior esquerdo se estiver acessando o JemLit pelo celular).