Jogo justo (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

Jogo justo

A SpyDrop usa o algoritmo Provably Fair para que qualquer jogador possa verificar a justiça de um jogo. O resultado de uma caixa ou de um upgrade é definido por uma seed do servidor fixada de antemão, pela sua seed do cliente e pelo número do jogo, então ele não pode ser manipulado depois que o jogo começa.

O resultado é definido com antecedência

Antes do jogo você vê o hash da seed do servidor, então o servidor não pode mais trocar os dados de origem sem que você perceba.

Seus dados entram no cálculo

Sua seed e o número do jogo participam do cálculo, então o resultado não é formado só pelo servidor.

Dados do jogo

Informe os dados de um jogo. O cálculo é feito no seu navegador e nada é enviado ao servidor.

Um array de linhas com os campos itemId, start, end, name e phase (fase do CS2 ou null). Copie-o do cartão do jogo.

Resultado da verificação

Preencha os dados do jogo e toque em “Verificar”: o número sorteado e o item aparecerão aqui.

Como o resultado é formado

Seed do servidor + Sua seed + Número do jogo = Resultado justo

Como funciona

  1. O compromisso do servidor

    O servidor escolhe uma seed do servidor aleatória e mostra apenas o hash SHA-256 dela. Depois disso a seed não pode ser trocada: o hash deixaria de conferir.

  2. O hash do jogo

    Para cada jogo é calculado um HMAC-SHA256. A chave é a seed do servidor como uma string hex de 64 caracteres, exatamente como está, sem decodificar em bytes. A mensagem é montada com o tipo de jogo, o jogo, a sua seed do cliente e o número do jogo.

  3. O ticket

    Os primeiros 8 caracteres hex do hash dão um número de 0 a 4.294.967.295. Dele sai o ticket de 1 a 100.000.000: floor(número × 100.000.000 / 2^32) + 1.

  4. Caixa

    Na tabela de chances no momento do jogo, cada item tem o seu intervalo de tickets. Sai o item em cujo intervalo o ticket cair.

  5. Upgrade

    O limite é floor(chance × 100.000.000). O upgrade vence se o ticket não for maior que o limite.

  6. A revelação

    A seed do servidor é revelada quando você troca as seeds. Depois disso, qualquer jogo do par pode ser recalculado no navegador, nesta página, ou com o seu próprio código.

A fórmula

Mensagem
kind:game:clientSeed:nonce
Chave HMAC
HMAC-SHA256(serverSeed, message)

A chave é a string hex da seed do servidor como está (64 caracteres), e não os bytes decodificados dela. É aqui que a maioria das verificações feitas por conta própria dá errado.

Você pode verificar um jogo já realizado com o botão “Verificar” no histórico de caixas e upgrades.