Skip to main content
Um resultado do Dice não usa nenhum segredo do operador. Ele é derivado on-chain a partir de um hash de slot da Solana capturado quando a sua aposta é executada, do endereço da sua conta e do seu contador pessoal de apostas, e depois liquidado na mesma transação que fez a aposta. Não existe seed que o operador possa escolher, nem nada a revelar depois. Esta página mostra o mecanismo exato por trás de cada resultado do Dice. O Dice é o caso mais simples do esquema provably fair (comprovadamente justo): não há nenhum segredo do operador. O resultado é derivado de dados públicos e liquidado on-chain na mesma transação que faz a aposta.

Por que o Dice não tem etapa de commit?

O Crash precisa de um segredo registrado (commit) porque o resultado dele tem que ficar definido, mas oculto enquanto a rodada acontece. Um lance de dado não tem essa fase: o resultado é consumido na mesma instrução que o sorteia. Então, em vez de fazer commit de um segredo, a derivação simplesmente não usa nenhum dado do operador: não há nada a registrar, nada a revelar e nenhuma seed que o operador possa escolher a seu favor. A entropia vem da própria rede Solana, misturada com valores que identificam a sua aposta:
  • slothash: a entrada mais recente do sysvar SlotHashes da Solana no momento em que a transação da sua aposta é executada. É uma entropia produzida pela rede, desconhecida quando a transação é montada (quem envia não tem como saber exatamente em qual slot uma transação vai entrar).
  • user: o endereço de 32 bytes da sua conta de usuário on-chain (uma conta que o programa deriva da sua carteira). Isso torna os resultados independentes entre jogadores: duas apostas que entram no mesmo slot recebem resultados diferentes.
  • nonce: o seu contador pessoal de apostas, guardado on-chain e incrementado a cada jogada. Isso torna as suas próprias apostas consecutivas independentes, mesmo dentro do mesmo slot, e ainda serve de proteção contra envio duplicado.

Qual é a fórmula exata do resultado do Dice?

Detalhes que importam na hora de recalcular:
  • A entrada do hash é a concatenação, exatamente nesta ordem: a tag ASCII "dice", o hash do slot, o endereço da conta de usuário e, por fim, o nonce codificado em 8 bytes little-endian.
  • A amostra são os primeiros 16 bytes da saída SHA-256, lidos como um inteiro sem sinal de 128 bits big-endian e reduzidos módulo 10,000.
  • Reduzir uma amostra de 128 bits módulo 10,000 tem um viés teórico abaixo de 2⁻¹¹⁴, dezenas de ordens de grandeza menor que a vantagem da casa, e por isso ele é documentado em vez de corrigido.

Condição de vitória e pagamento

A chance de vitória que você escolhe precisa ficar entre 2% e 98%. Com a vantagem atual de 1.5% (edge_bps = 150): O retorno esperado é o mesmo para qualquer alvo: chance × multiplier ≈ 98.5% do valor apostado (o arredondamento para baixo favorece a casa em no máximo um ponto-base). A vantagem e os limites atuais estão em Taxas e limites.

O que é garantido e o que não é

Garantido pelo programa:
  • O resultado é derivado e liquidado dentro de uma única instrução on-chain, a partir de dados que o próprio programa lê. O backend não fornece o resultado e não tem como informá-lo errado.
  • O operador não contribui com nenhum dado para a derivação: não existe seed do servidor para ficar testando até achar um resultado favorável.
  • O seu nonce tem que ser repetido exatamente, então a mesma aposta não pode ser jogada duas vezes, nem por acidente, nem de má-fé.
  • Cada jogada publica todos os dados de entrada da derivação e o resultado, então qualquer pessoa pode recalcular qualquer resultado da história.
A ressalva honesta: o momento do envio. As apostas no Dice não cobram taxas de transação de você: o backend do MCC assina e envia a transação por você, então o operador controla quando ela é enviada. O hash do slot N−1 se torna público no início do slot N, então um operador com latência muito baixa poderia estimar o resultado que uma aposta teria se entrasse no slot atual e atrasar o envio para sortear de novo. O esquema aceita isso em vez de fingir que não existe (eliminar essa brecha exigiria um oráculo VRF cujo custo por aposta supera o valor esperado da casa em apostas pequenas). O que limita isso:
  • A inclusão não é totalmente controlável: é a rede, e não quem envia, que decide o slot exato em que uma transação entra.
  • Todos os dados de entrada são publicados, então padrões de atraso no envio e qualquer desvio das taxas de vitória agregadas em relação às chances anunciadas são mensuráveis por qualquer pessoa a partir de dados públicos. Um abuso sistemático não tem como ficar escondido.

Como verificar um resultado do Dice?

Cada jogada emite um evento DiceBetSettled na própria transação da aposta, com tudo o que você precisa: slothash, user, nonce, target_bps, direction, win_chance_bps, roll, multiplier_bps e is_win, além do detalhamento completo da liquidação. Para verificar:
  1. Abra a transação da aposta em um explorador da Solana e leia os campos do evento (a tela do Dice no app mostra os dados de verificação da sua sessão, e o seu histórico de apostas leva à transação).
  2. Recalcule sha256("dice" ‖ slothash ‖ user ‖ nonce), pegue os primeiros 16 bytes em big-endian módulo 10,000 e compare com o roll do evento.
  3. Confira se deu vitória ou derrota (roll < target para Abaixo, roll > target para Acima) e o multiplicador de acordo com a fórmula acima.
Veja Verificar uma rodada para dicas gerais sobre como ler os dados de eventos em um explorador. Para saber como o jogo em si funciona, veja o guia do Dice.