O problema com o RNG comum
Em um slot online típico, o gerador de números aleatórios (RNG) fica no servidor do operador. O jogador só vê o resultado. Nem mesmo um operador honesto consegue provar a um jogador específico que aquele giro em particular não foi manipulado — você precisa confiar em certificados e reputação.
O provably-fair fecha essa lacuna: o operador "trava" seu segredo antecipadamente, e após o jogo o revela, para que qualquer um possa recalcular o resultado de forma independente.
esquema commit-reveal
Antes de uma série de giros, o servidor gera um serverSeed e publica apenas seu hash — SHA-256(serverSeed). Isso é um "commit": o servidor se comprometeu, mas a seed em si ainda não foi revelada, então não pode ser alterada retroativamente.
O jogador adiciona seu próprio clientSeed — ele pode ser alterado a qualquer momento. Cada giro é numerado com um contador nonce. O resultado é calculado de forma determinística a partir de três valores: serverSeed + clientSeed + nonce.
Quando o serverSeed muda (rotação), o serverSeed antigo é revelado — "reveal". O jogador verifica que SHA-256(seed revelado) corresponde ao hash publicado anteriormente e recalcula todos os seus giros passados.
Por que exatamente HMAC-SHA256
A partir de três seeds, um fluxo de bytes aleatórios é gerado via HMAC-SHA256 — uma função criptograficamente segura: conhecendo o resultado, é impossível calcular reversamente o serverSeed, e alterar qualquer bit da seed muda completamente o resultado.
Um detalhe importante é a ausência de "viés de módulo". Se você simplesmente pega o resto da divisão de um número aleatório pelo tamanho do rolo, os símbolos frequentes ganham um pouco mais de peso. Uma implementação correta usa amostragem por rejeição: valores da "cauda irregular" do intervalo são descartados, e a distribuição permanece estritamente uniforme.
Como verificar seu giro
Em nosso motor, cada giro tem um painel de justiça: nonce, clientSeed, hash(serverSeed) antes do jogo e o serverSeed revelado após a rodada. O endpoint /api/fair/verify recalcula o resultado de forma independente a partir desses valores — você obtém o mesmo resultado que viu no jogo.
É isso que "provably-fair" significa: você não acredita por fé — você verifica. O mesmo mecanismo funciona no modo Megaways e em temas de cascata.