Provably Fair

Sistema de verificação de honestidade. Você pode reproduzir e conferir o resultado de qualquer batalha — provando que nada foi manipulado.

Como funciona

antes do jogo

Compromisso

Publicamos só o hash do server seed — impossível mudar depois.

durante

Jogo

Cada rodada combina server seed + client seed + nonce num roll.

depois

Revelação

O server seed é revelado — você recalcula e confere tudo.

O resultado de cada rodada é calculado com base em três valores:

roll = HMAC‑SHA256(serverSeed, "clientSeed:nonce") → primeiros 8 hex ÷ 0xffffffff → número [0,1)

Depois que a batalha termina, o server seed é revelado — aí você recalcula e confirma que bate com o hash publicado.

Código de verificação

console
// Verificação (JavaScript) — cole no console do navegador
async function roll(serverSeed, clientSeed, nonce) {
  const enc = new TextEncoder();
  const key = await crypto.subtle.importKey("raw", enc.encode(serverSeed),
    { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
  const sig = await crypto.subtle.sign("HMAC", key, enc.encode(clientSeed + ":" + nonce));
  const hex = [...new Uint8Array(sig)].map(b => b.toString(16).padStart(2,"0")).join("");
  return parseInt(hex.slice(0,8), 16) / 0xffffffff;
}
// ex.: roll(serverSeed, battleId + ":" + slot, rodada).then(console.log)

Verifique uma batalha

Cole o ID (ou o link) de uma batalha finalizada.