Recalculamos um cassino "provably fair" na mão — é assim que se parece a verificação de verdade

Pegamos um cassino “provably fair” que passou meses sem poder ser verificado e recalculamos uma rodada na mão — SHA-256 e HMAC. A diferença fica clara.

Recalculamos um cassino "provably fair" na mão — é assim que se parece a verificação de verdade

“Provably fair” é uma promessa: a de que você pode conferir qualquer resultado por conta própria, com matemática, em vez de acreditar na palavra do cassino. É uma boa promessa. Mas a promessa de que algo pode ser verificado só vale alguma coisa se algo de fato é verificável — e uma coisa não é a outra.

O que segue é um caso documentado — que o cassino, a Winna, já corrigiu — em que o site exibiu as palavras “provably fair” durante meses enquanto, segundo vários relatos independentes, nada daquilo podia ser reproduzido na prática. Vamos passar pelo que foi relatado e, em seguida, fazer a parte que quase nenhum site de análise se dá ao trabalho de fazer: recalcular os números por conta própria, a partir de valores públicos, para você acompanhar no seu próprio teclado.

O que “verificável” realmente exige

Uma rodada provably fair de verdade tem quatro engrenagens, e você precisa de todas elas:

  1. O cassino se compromete com uma semente do servidor antes da sua aposta, publicando o hash dela.
  2. Depois da rodada, ele revela a semente do servidor. Você mesmo calcula o hash; ele tem de bater com o hash mostrado antes.
  3. A sua semente do cliente e o nonce (o contador da rodada) se combinam com a semente do servidor.
  4. Uma fórmula publicada transforma tudo isso no resultado.

Se faltar um único elo — nenhuma semente revelada, um hash que não se reproduz, nenhuma semente do cliente escolhida por você —, não sobra nada para conferir. O selo continua lá. A prova, não.

O caso: meses de um selo que não dava para conferir

Entre o fim de 2025 e o início de 2026, testadores independentes no Bitcointalk relataram três problemas concretos nos jogos originais da Winna. Registramos o que segue como observações deles, não como conclusões nossas:

  • O hash pré-rodada não podia ser reproduzido a partir da semente do servidor revelada depois. Um testador rodou a comparação contra cerca de 45 métodos comuns de hashing; nenhum deles bateu.
  • Os jogadores não podiam escolher a própria semente do cliente — a única coisa que impede a casa de escolher uma semente que lhe convenha.
  • Apostas de valor zero mudavam o resultado sem avançar o nonce, o que sugere que o resultado se apoiava em algo fora do compromisso público.

Não estamos afirmando que alguma aposta tenha sido manipulada. O ponto é mais específico e, de certo modo, pior: naquele período, você simplesmente não tinha como saber. Um selo “provably fair” sobre um sistema que ninguém de fora da empresa consegue reproduzir é enfeite, não prova.

Fizemos a parte do auditor — recalculamos tudo

Mais tarde, a Winna migrou para um esquema padrão: sementes do servidor com SHA-256 simples e sementes do cliente escolhidas pelo usuário. Pegamos um par de sementes publicado desse sistema corrigido e fizemos a verificação por conta própria. Você pode repetir cada passo.

Passo 1 — conferir o compromisso. A semente do servidor revelada é a string de texto:

ed54303ccab80736f0be7cd109e7830edd150674a4dea9ca39daadc244a569bb

Calcule o SHA-256 dessa string como caracteres de texto — não o hexadecimal convertido em bytes, e sim os caracteres exatamente como aparecem. O resultado:

28e1731d4e629c05ad1e93e4a7bea7783f906829ba5857f388353488f197363e

Esse é exatamente o hash que o site mostrou antes da rodada. O envelope estava lacrado e intacto. Um aviso prático, porque nós mesmos tropeçamos nisso: garanta que sua ferramenta calcule o hash dos 64 caracteres como texto, sem quebra de linha no final — o cursor tem de ficar logo depois do último caractere. O resultado precisa ser 28e1731d…. Se sair outra coisa, sua ferramenta acrescentou uma quebra de linha (uma única quebra invisível muda o hash inteiro) ou converteu a string hex em bytes brutos. Não é o artigo que está errado; é exatamente a armadilha de que este texto trata.

Passo 2 — recalcular o resultado. Entradas: a semente do servidor acima, semente do cliente test1, nonce 1, round 0. Calcule HMAC-SHA256(chave = semente do servidor, mensagem = "test1:1:0"). O resultado começa com:

f531047f…

Pegue os quatro primeiros bytes — f5 31 04 7f = 245, 49, 4, 127 — e transforme-os numa fração entre 0 e 1:

245/256 + 49/256² + 4/256³ + 127/256⁴ = 0.9577791986521…

Este jogo aplica uma vantagem da casa de 1% — o fator 0.99 abaixo é o parâmetro do próprio jogo, nada além disso —, então o multiplicador é:

0.99 ÷ 0.9577791986521 = 1.033641…, arredondado para baixo, 1.03×

Esse é o ciclo inteiro. Todo valor é público; cada passo roda no console do navegador ou numa ferramenta de SHA-256 gratuita. Isso é o que verificável significa na prática — e é exatamente a conferência que passou meses sem devolver nada.

A correção é o ponto — não uma nota de rodapé

Repare no que acabamos de demonstrar: o sistema corrigido passa na verificação. Dizemos isso com clareza, logo de cara, porque um watchdog que publica só a falha e esconde a correção está alimentando rancor, não fazendo auditoria. A Winna teve um problema real e documentado; testadores o expuseram; o cassino mudou o esquema; e agora a matemática fecha — conferimos na mão.

Mas vale parar um momento no estado anterior. Durante meses, o site exibiu as mesmas duas palavras que exibe hoje. O selo nunca mudou. O que mudou foi uma coisa só: se o selo significava alguma coisa. Essa é a lição inteira: “provably fair” não é uma propriedade que se lê num logotipo. É uma propriedade que você — ou um auditor independente — de fato reproduz, ou ela não existe. Desenvolvemos o mesmo argumento, sem o caso concreto, em o que é provably fair e como verificar e em por que a estatística de crash não prova nada.

O que fazer na prática

Não leia o selo. Leia a matemática — ou encontre alguém que leia. Pegue uma semente do servidor revelada, calcule o hash da string de texto e veja se bate com o que foi exibido antes da rodada. Depois reconstrua um resultado a partir das sementes e do nonce. Se tudo encaixar, você tem uma verificabilidade em que dá para se apoiar. Se não encaixar — ou se você não conseguir nem obter as peças —, então “provably fair” é só “confia em mim” com sílabas a mais.

O selo é para a plateia. A reprodução é a prova. Nunca confunda os dois.