Provably Fair CS2
Todo resultado é criptograficamente verificável. Nem jogadores nem a casa podem manipular o sorteio — e você mesmo pode provar.
Como funciona
Compromisso
Antes de jogar, geramos um server seed aleatório e mostramos o SHA-256 hash. Isso trava nosso compromisso — não dá mais para alterá-lo.
SHA256(server_seed) → a3f8c1d…Jogar
Seu client seed e um nonce crescente se combinam com o server seed via HMAC-SHA256 para produzir o resultado.
HMAC(server, client:nonce:0) → resultVerificar
Quando você rotaciona seeds, o server seed anterior é revelado. Confira se o hash bate com o compromisso original e reproduza o resultado você mesmo.
✓ Hash matches → outcome is authenticVerificação de jogos
Cada abertura de caixa usa HMAC-SHA256 para derivar um float aleatório do server seed (chave) e da mensagem .
Esse float vira um ticket entre 1 e 100.000. Cada item da caixa tem um intervalo contínuo de tickets — todos somam exatamente 100.000. O item cujo intervalo contém seu ticket é o resultado.
1const crypto = require('crypto');
2
3function verifyCaseRoll(serverSeed, clientSeed, nonce) {
4 const hmac = crypto.createHmac('sha256', serverSeed);
5 hmac.update(`${clientSeed}:${nonce}:0`);
6 const buf = hmac.digest();
7
8 const float =
9 buf[0] / 256 +
10 buf[1] / 65536 +
11 buf[2] / 16777216 +
12 buf[3] / 4294967296;
13
14 const ticket = Math.floor(float * 100000) + 1;
15 return { ticket, float };
16}
17
18// Verify the server seed commitment
19function verifyHash(serverSeed, expectedHash) {
20 const hash = crypto.createHash('sha256')
21 .update(serverSeed).digest('hex');
22 return hash === expectedHash;
23}
24
25// Each case item owns a ticket range.
26// All ranges sum to 100,000.
27// The item whose range contains your ticket wins.
Verificar um roll de caixa
Seus seeds
Veja seu par de seeds ativo, altere o client seed ou rotacione para revelar o server seed atual.
Histórico de seeds
Pares de seeds anteriores com server seeds revelados. Use-os para verificar qualquer jogo passado.
About this page
A casa pode manipular resultados?
Não. Antes de qualquer rodada publicamos um hash SHA-256 do server seed ativo. O seed real fica secreto enquanto você joga, mas o hash é fixo — se trocássemos o seed para forçar um resultado diferente, o novo seed produziria um hash diferente e você pegaria no momento em que rotacionasse. Combinado com o seu próprio client seed e o nonce por jogo, isso significa que cada roll é comprometido com antecedência e reproduzível depois, sem espaço para o servidor "rodar de novo" um resultado de que não gostou.
O que é um server seed, um client seed e um nonce?
O server seed é um valor aleatório longo escolhido pelo nosso backend e mantido secreto enquanto estiver em uso; só o hash SHA-256 dele é mostrado publicamente. O client seed é o seu valor aleatório — gerado para você por padrão, ou um que você escolhe em Configurações. O nonce é um contador que sobe um a um para cada jogo jogado no par de seeds ativo. Os três juntos alimentam uma função HMAC-SHA256: as mesmas entradas sempre produzem o mesmo resultado, então qualquer giro pode ser reproduzido byte a byte.
Por que preciso rotacionar seeds para verificar?
A verificação exige o server seed em texto puro, mas revelá-lo durante o jogo permitiria a qualquer um prever os próximos resultados — derrotando o propósito inteiro. A rotação resolve isso: quando você rotaciona, o server seed atual é aposentado e revelado a você, um novo (com um novo hash) é comprometido para o jogo futuro, e o nonce reinicia. A partir daí você pode verificar todo jogo jogado no seed aposentado, e os próximos jogos ficam comprometidos sob o novo.
Posso definir meu próprio client seed, e deveria?
Sim. Abra Configurações → Provably Fair (ou role até "Seus Seeds" nesta página), digite qualquer client seed que quiser — uma palavra, um número, qualquer coisa — e aperte Rotacionar. A partir daí cada resultado é misturado com o seu seed, então a casa não pode tê-lo previsto com antecedência. Deixe o campo em branco e geramos um aleatório forte para você. Os dois são Provably Fair; definir um seed customizado principalmente dá mais tranquilidade e uma história de auditoria mais clara ao explicar resultados para amigos.
Como rotaciono meus seeds?
Vá em Configurações → Provably Fair (ou o painel "Seus Seeds" nesta página) e clique em "Rotacionar seeds". A rotação revela imediatamente o server seed atual para você verificar todo jogo passado nele, gera um novo server seed e publica o hash dele, aplica o client seed que você escolheu (ou um aleatório fresco se estiver em branco) e reinicia o nonce para zero na próxima rodada. Não há cooldown — você pode rotacionar sempre que quiser, inclusive logo antes de uma sessão que queira auditar limpa.
O que é o nonce e por que importa?
O nonce é um contador por jogo que avança um a um para cada rodada jogada no par atual server-seed/client-seed. É o que torna jogos consecutivos únicos mesmo com o mesmo par de seeds — cada nonce produz uma saída HMAC diferente e, portanto, um resultado diferente. Ao verificar uma rodada você precisa informar o nonce exato que foi usado; caso contrário o verificador reproduz um resultado diferente (e errado).
Como a equidade é tratada de forma diferente em batalhas de caixas?
batalhas de caixas compartilham um único server seed comprometido entre todos os assentos do lobby, mas cada assento precisa de um roll independente na mesma case compartilhada. Para isso funcionar sem um client seed pessoal por assento, a entrada HMAC mistura o server seed compartilhado, o nonce da rodada e o user ID do jogador. Os rolls de cada assento são únicos e verificáveis, e o server seed compartilhado é revelado quando a battle termina para qualquer um reexecutar qualquer giro da battle.
Como verifico uma rodada de roleta, mines, blackjack ou case?
Abra o verificador nesta página e escolha o jogo correspondente. Cada verificador precisa do server seed revelado (rotacione primeiro se precisar), do seu client seed no momento da rodada e do nonce da rodada — mais uma entrada específica do jogo, como a contagem de minas para Mines, o ID da case para Caixas ou o user ID do assento para Battles. O verificador reproduz o resultado exato que o servidor gerou. Se o resultado diferir do que o jogo mostrou na tela, salve seus seeds e fale com o suporte imediatamente.
E se eu perder meu client seed ou não salvar meus nonces?
Seu par de seeds ativo e o nonce de cada rodada liquidada ficam armazenados na sua conta para você recuperá-los depois em Configurações → Provably Fair e no histórico no jogo (aberturas de case, histórico de mãos, histórico de mines etc.). Se rotacionar seeds sem anotar os valores, não importa — o par de seeds anterior fica arquivado e visível para você verificar qualquer uma das rodadas dele a qualquer momento.
Provably Fair é a mesma coisa que uma auditoria regulatória?
Não, e isso é importante. Provably Fair garante que cada rodada individual foi gerada a partir de entradas que o servidor comprometeu com antecedência, então a casa não pode escolher resultados depois do fato. Sozinho, não certifica a margem da casa no longo prazo de cada jogo, a integridade dos pagamentos nem a conformidade com uma jurisdição específica. A CSRAGE combina Provably Fair com controles internos e, onde exigido, escrutínio de terceiros — mas você deve tratar os dois como complementares, não intercambiáveis.
Posso programar meu próprio verificador em vez de usar o de vocês?
Sim. O algoritmo exato de cada jogo está documentado nesta página em JavaScript claro. As primitivas criptográficas (SHA-256 para o hash de compromisso, HMAC-SHA256 para o sorteio por rodada) são funções de biblioteca padrão em qualquer linguagem importante, então você pode portar os snippets para Python, Go, Rust ou qualquer outra. Verificadores independentes ajudam a comunidade inteira: se seu script discordar alguma vez do resultado na tela, salve as entradas e fale conosco para compararmos as implementações de referência.
Jogar mais muda as odds a meu favor ou contra mim?
Não. O resultado de cada rodada depende só do par de seeds e do nonce daquela rodada; nada do seu histórico, nível, sequência de vitórias ou saldo entra no RNG. Sessões longas parecem diferentes porque a variância se suaviza em muitas rodadas, não porque as probabilidades subjacentes mudem. O verificador prova isso: você pode reexecutar uma única rodada isolada, e o resultado não depende de nada fora das entradas daquela rodada.
