Verificador · Provably fair

Verificador provably fair — confira rodadas de crash, Mines e Plinko

Cole uma seed do servidor, uma seed do cliente e um nonce e recalcule a rodada você mesmo com HMAC-SHA256 — sem ida e volta a um servidor, sem cadastro. Funciona com o nosso esquema de referência documentado; veja abaixo o que isso prova e o que não prova.

✓ Matemática verificada · Atualizado em · Como calculamos
Nunca cole aqui uma seed do servidor ativa (ainda não revelada) de um jogo real.
Deixe em branco se você só tiver a seed revelada.
1 a 32 linhas.
Checagem do hash
Confere ✓
add850c92de9586e9c8be1cfeb1a9688779c8ed18a934f4376e5a88c00376f39
Multiplicador de crash
4,26×
nonce 0

Mensagem do HMAC: hero:0:0

HMAC-SHA256(seed do servidor, mensagem), bloco 0, hex: —

Primeiros 13 caracteres hex (h, 52 bits): c5bb1831a70b8

bust = max(1, floor(100·(1−e)·2^52 / (2^52 − h)) / 100) = 4,26×

Esquema de referência §6 — não é cópia do algoritmo de nenhum provedor específico · metodologia

Multiplicador de crash para os próximos 10 nonces com as mesmas seeds
NonceMultiplicador de crash

Compromisso, revelação, verificação

Os sistemas provably fair funcionam em três etapas. Primeiro, o compromisso: antes de você jogar, o operador publica o hash de uma seed do servidor que já escolheu mas ainda não revelou — geralmente SHA-256, registrado em algum lugar para onde você (ou qualquer pessoa) pode apontar depois. Segundo, a jogada: cada rodada combina essa seed do servidor escondida com uma seed do cliente (sua, ou gerada para você) e um nonce que sobe de um em um a cada rodada, produzindo o resultado por uma fórmula fixa. Terceiro, revelação e verificação: mais tarde, normalmente quando você troca para uma nova seed de servidor, a antiga é publicada. Calcular o hash dela deve reproduzir o compromisso do primeiro passo, e rodar a fórmula de novo deve reproduzir cada rodada que você jogou.

Uma checagem que falha — um hash calculado ou um resultado que não bate — é uma divergência, não prova automática de fraude: pode vir tanto de um erro de digitação numa seed quanto do nonce errado, de um hash que nunca foi de fato publicado com antecedência, ou de conferir uma rodada de outro esquema (layout de bytes ou fórmula diferentes) com esta ferramenta. Trate uma divergência como motivo para conferir de novo as entradas e o esquema primeiro, e só depois como indício de manipulação, quando essas causas já tiverem sido descartadas — idealmente contra um compromisso que você (ou um terceiro independente) consiga mostrar que foi registrado antes da rodada acontecer.

A seed do servidor é a metade que só o operador conhece até a revelação — é ela que impede resultados previsíveis com antecedência. A seed do cliente pode impedir o operador de escolher silenciosamente uma seed de servidor favorável à casa para um jogador específico, mas só sob duas condições: o compromisso de hash precisa estar registrado em algum lugar conferível antes da rodada, e a seed do cliente precisa ser escolhida por você (ou de outra forma que o operador não controle nem consiga prever) depois que o hash já está público, e não fornecida ou sobrescrita pelo operador. O nonce é um contador de rodadas: cada novo nonce alimenta uma mensagem diferente na etapa de HMAC abaixo, produzindo um resultado separado com as mesmas duas seeds — ele sozinho não torna os resultados imprevisíveis, e reutilizar as mesmas seeds com o mesmo nonce sempre reproduz o mesmo resultado (essa repetição é esperada, não um defeito).

O que o HMAC-SHA256 faz

O HMAC-SHA256 pega uma chave secreta (a seed do servidor) e uma mensagem (seedDoCliente:nonce:contador) e produz um bloco de 32 bytes que é determinístico mas parece ruído, a menos que você conheça a chave. O verificador monta essa mensagem com contador 0, calcula o HMAC e converte os bytes para hex no passo mostrado acima. No Crash, os primeiros 13 caracteres hexadecimais do bloco 0 são lidos como um inteiro de 52 bits; no Mines e no Plinko, o bloco (e mais blocos, se uma rodada precisar de mais bytes, com o contador aumentando) é lido como inteiros de 32 bits big-endian — cada um alimenta a fórmula de resultado do próprio jogo. Nada aqui fica escondido ou sorteado além da própria seed do servidor.

Esquema de referência cashoutodds v1 (documentado)

Como os provedores reais raramente publicam especificações completas, este verificador implementa e documenta o próprio esquema aberto para que cada etapa seja conferível:

  • Crash: pega os primeiros 13 caracteres hex do bloco 0 como um inteiro de 52 bits h, depois bust = max(1, floor(100·(1−e)·2^52 / (2^52 − h)) / 100), em que e é a vantagem da casa — este verificador sempre usa e = 3% (0,03), o mesmo valor dos nossos simuladores. Valores maiores de h empurram o multiplicador para cima; a fórmula usa aritmética inteira exata, não ponto flutuante.
  • Mines: as posições das minas são sorteadas com Fisher–Yates por amostragem por rejeição sobre as casas restantes — cada inteiro de 32 bits do fluxo só é aceito se cair abaixo do maior múltiplo do número de casas, então toda casa restante mantém a mesma chance e não há viés de módulo.
  • Plinko: cada linha consome um inteiro de 32 bits e lê só o bit mais significativo dele — 1 significa direita, 0 significa esquerda — porque um intervalo de 32 bits se divide em duas metades exatamente iguais, de novo sem viés.

Cada uma dessas regras é determinística e reproduzível: com a seed do servidor revelada, a seed do cliente, o nonce, esta versão do esquema de referência e os mesmos parâmetros do jogo (tamanho do tabuleiro e número de minas no Mines, número de linhas no Plinko, vantagem da casa no Crash), você (ou qualquer pessoa) pode recalcular exatamente o mesmo multiplicador, layout de minas ou caminho do Plinko mostrado acima — é isso que esta ferramenta faz, inteiramente no seu navegador. As seeds podem ser digitadas direto ou passadas pelo fragmento da URL (a parte depois do #), que o navegador nunca envia a um servidor — nada é transmitido a lugar nenhum.

O que a verificação prova — e o que não prova

Um hash que confere só mostra que a seed informada gera o hash de compromisso informado — e o exemplo padrão calcula esse hash na hora, então ele demonstra consistência, não um compromisso histórico. Esta ferramenta recalcula, separadamente, um resultado do esquema de referência a partir das mesmas seeds e do mesmo nonce; comparar esse resultado recalculado com o resultado que o seu jogo realmente mostrou é algo que você faz por conta própria, contra entradas e um hash de compromisso registrados antes da rodada acontecer. Fazer essa comparação descarta a possibilidade de o servidor trocar silenciosamente a seed do servidor por uma mais favorável à casa depois de já saber a sua aposta — desde que o hash do compromisso tenha sido de fato registrado em algum lugar antes da rodada (não apenas alegado depois). Isso sozinho não garante a consistência total do resultado: também é preciso conferir a seed do cliente, o nonce e os parâmetros efetivamente usados naquela rodada contra o que foi registrado. Uma checagem que falha é uma divergência, não prova de manipulação por si só — uma entrada errada, um nonce digitado errado ou a conferência de uma rodada de terceiro contra o esquema errado podem produzir o mesmo resultado de "não confere" que uma fraude de verdade produziria. Isso não remove a vantagem da casa, não significa que a tabela de pagamento é generosa, e não é garantia de ganhar — um jogo pode ser perfeitamente provably fair e ainda devolver menos do que arrecada, por design. Se a pergunta é se um jogo de marca específica está "manipulado", a checagem provably fair (quando um provedor a implementa corretamente, e quando você a confere contra o esquema do próprio provedor) responde à pergunta estreita de consistência entre resultado e seed, não à pergunta mais ampla de retorno esperado — que você pode estimar com a nossa calculadora de perda esperada ou o simulador de crash.

Teste a rodada exibida por padrão — seed do servidor cashoutodds-demo-v1, seed do cliente hero, nonce 0 — é o primeiro nonce (0) da mesma sequência de seeds usada na demonstração da página inicial. O hash acima é conferido ao vivo contra a seed revelada, e o multiplicador, o layout de minas ou o caminho do Plinko é recalculado do zero no seu navegador.

Vetores de teste

Três entradas fixas e suas saídas do motor, para você conferir uma implementação independente contra a nossa:

ChecagemFunçãoEntradasSaída
Multiplicador de crashcrashResultseed do servidor "cashoutodds-demo-v1", seed do cliente "hero", nonce 0, vantagem 3%multiplicador 4,26× — h = c5bb1831a70b8
Posição das minasminesResultmesmas seeds, casas 25, minas 3minas em 2, 11, 22 · ordem 2→11→22 · 3 u32 extraídos
Queda do PlinkoplinkoResultmesmas seeds, linhas 16casa 11 · caminho DDEDDEDEDDDDDEDE

Mais ferramentas: simulador de crash · calculadora de chances do Mines · distribuição do Plinko · calculadora de risco de ruína · metodologia.

Perguntas frequentes

O que o "provably fair" realmente prova?

Prova que um resultado publicado é consistente com uma seed que o operador se comprometeu a usar antes da rodada começar — não prova que o jogo é justo no sentido de ter boas chances de retorno. No nosso esquema de referência, o operador revela a seed do servidor "cashoutodds-demo-v1", que bate com um hash mostrado antes (confere: sim aqui), e qualquer pessoa pode recalcular os blocos HMAC-SHA256(seedDoServidor, seedDoCliente:nonce:contador) usados pelo esquema, a partir do contador 0, para conferir o multiplicador de crash, a posição das minas ou o caminho do Plinko. Isso não diz nada sobre a vantagem da casa embutida na tabela de pagamento.

O Aviator é manipulado?

Não dá para testar o Aviator nem nenhum outro jogo de marca específica aqui — cada provedor publica (ou esconde) o próprio esquema de seeds, e esta ferramenta só recalcula resultados do esquema de referência cashoutodds v1, documentado abaixo; ver os mesmos nomes de campo (seed do servidor, seed do cliente, nonce) num site com dinheiro real não é prova de que ele usa o mesmo layout de bytes ou a mesma fórmula — você precisaria do verificador publicado pelo próprio provedor para conferir uma rodada real. O que a checagem provably fair consegue mostrar, em qualquer jogo que a implemente corretamente, é que o hash do compromisso impede a troca da seed do servidor depois que você já apostou; confirmar a consistência total do resultado também exige conferir a seed do cliente, o nonce e os parâmetros efetivamente registrados para aquela rodada. Ela não mostra que a tabela de pagamento é generosa, que a vantagem da casa é pequena, nem que o jogo é "batível". Um jogo pode ser perfeitamente provably fair e ainda ter uma vantagem da casa alta; as duas perguntas são independentes.

O que são seed do servidor, seed do cliente e nonce?

A seed do servidor é um valor secreto que o operador se compromete a usar (geralmente publicando o hash SHA-256 dela) antes de você jogar, e depois revela — normalmente quando você troca de seed. A seed do cliente é um valor que você pode definir, ou que o site gera para você — mas uma seed "gerada para você" sozinha não garante nada contra um servidor que escolhe uma seed favorável: isso só vale se a seed do cliente for escolhida de forma independente do operador e fixada depois que o hash do compromisso já estiver público, e se esse compromisso tiver sido de fato registrado em algum lugar conferível com antecedência. O nonce é um contador que sobe de um em um a cada rodada, alimentando uma mensagem diferente na fórmula HMAC a cada vez — isso muda o resultado em geral, mas os resultados não são garantidamente distintos, e reutilizar as mesmas seeds com o mesmo nonce sempre reproduz o mesmo resultado.

O que o HMAC-SHA256 faz aqui?

Ele combina a seed secreta do servidor com a mensagem pública seedDoCliente:nonce:contador num bloco de 32 bytes que parece aleatório mas é totalmente determinado pelas entradas. No Crash, os primeiros 13 caracteres hexadecimais do bloco 0 são lidos como um inteiro de 52 bits; no Mines e no Plinko, o bloco (e mais blocos, se precisar) é lido como inteiros de 32 bits big-endian — cada jogo alimenta esses números na própria fórmula. Mudar a seed do servidor, a seed do cliente ou o nonce costuma mudar o bloco HMAC e o resultado, mas entradas diferentes ainda podem produzir a mesma saída do HMAC ou o mesmo resultado de jogo — isso não é garantidamente distinto — e o compromisso de hash só trava a seed do servidor. Trocar a seed do servidor depois de o compromisso já ter sido publicado é detectável (ela deixa de bater com o hash divulgado), mas a seed do cliente sozinha não impede quem a controla de direcionar o resultado, a menos que tenha sido escolhida de forma independente do operador e fixada depois do compromisso — e a menos que as entradas realmente usadas numa rodada fiquem registradas para poderem ser conferidas contra o que você jogou.

Os jogos reais de crash, Mines ou Plinko usam exatamente essa fórmula?

Não. Cada provedor desenha o próprio layout de bytes, as próprias regras de amostragem por rejeição e a própria curva de multiplicador, e a maioria não publica a especificação completa. Este verificador documenta e recalcula um esquema aberto e específico — o "esquema de referência cashoutodds v1" — para que a matemática fique totalmente auditável. Ver os mesmos nomes de campo (seed do servidor, seed do cliente, nonce) num site com dinheiro real não significa que esse site usa este esquema — a ordem real dos bytes, as etapas de hash e a fórmula podem ser diferentes mesmo quando as entradas parecem iguais. Ele não consegue conferir uma rodada de um jogo que usa outro esquema; use-o para entender o mecanismo, não para reverificar a rodada de um provedor específico, a menos que esse provedor publique exatamente este esquema.

+18 · Apenas educação, com dinheiro fictício. O cashoutodds não é um cassino, não aceita apostas e não recomenda apostar. Se o jogo deixou de ser diversão, procure ajuda.