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

CaixasUpgrade
Inventário

Jogo justo

A SpyDota 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.

Como verificar o seu jogo

A seed do servidor é o valor secreto a partir do qual o resultado do jogo é calculado. Para recalcular um jogo, a seed precisa ser revelada — o card do jogo faz isso por você.

  1. Histórico
    SkinCaixa
    Night Terrors HatShadow Shaman
    Belt of the Forlorn MazeShadow Shaman

    Abra o histórico

    Clique no seu avatar no topo do site, abra a aba “Histórico” e escolha “Caixas” ou “Upgrades”.

  2. Data
    22 de outubro de 2026 às 11:32
    22 de outubro de 2026 às 11:32
    22 de outubro de 2026 às 11:32

    Clique em “Verificar”

    O botão fica no fim da linha do jogo (no celular, role a tabela para a direita). No card que abrir, clique em “Verificar” de novo.

  3. Jogo nº 2 do par de seeds
    Número sorteado37.847.706 de 100.000.000

    Para verificar o jogo, a seed do servidor precisa ser revelada. Criaremos um novo par de seeds: a seed atual será revelada e preenchida na verificação, e os números dos jogos recomeçarão.

    Revele a seed

    Se a seed ainda for secreta, o card vai oferecer “Trocar seeds e verificar”. A seed antiga será revelada — depois disso, dá para verificar todos os jogos feitos com ela. Os jogos novos recomeçam a contagem do 1, e os já jogados não mudam. Se a seed já foi revelada, este passo não aparece.

  4. Confere

    Seu navegador recalculou o jogo com a seed revelada e o resultado confere com o registro do servidor.

    Número sorteado37.847.706
    • Belt of the Forlorn MazeBelt of the Forlorn Maze29.376.71035.693.291
    • Night Terrors HatNight Terrors Hatsaiu35.693.29241.180.434
    • Censer of GlissCenser of Gliss41.180.43547.096.768
    Detalhes do cálculo
    Mensagemcase:dota2:e784b35edb9c33afec77526dac3faa49:2
    HMAC-SHA25660e3df4be0729100…0cc8
    Número do hash1.625.546.571
    sha256 da seed do servidora6d071c29474dfc7…b787

    Confira o resultado

    A página de verificação vai abrir. “Confere” significa que o seu navegador recalculou o jogo e chegou ao mesmo resultado que o servidor registrou. Compare o item marcado como “saiu” com a linha do histórico; no upgrade, veja “Vitória” ou “Derrota”.

Jogos feitos antes do lançamento do Provably Fair, presentes e itens concedidos não têm o botão “Verificar”. Se o item foi substituído, a verificação vale para o drop original. Se aparecer “Não confere”, salve a seed do servidor e fale com o suporte.

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 o cálculo 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.