> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mycryptocasino.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Justiça no Dice

> Por que nenhum segredo do operador é necessário, e a derivação completa a partir de dados públicos.

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](/pt-BR/docs/games/dice). O Dice é o caso mais simples do [esquema provably fair (comprovadamente justo)](/pt-BR/docs/provably-fair/overview): **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.

<h2 id="why-there-is-no-commit-step">
  Por que o Dice não tem etapa de commit?
</h2>

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.

<h2 id="the-exact-formula">
  Qual é a fórmula exata do resultado do Dice?
</h2>

```text theme={null}
entradas
  slothash   32 bytes   hash de slot mais recente da Solana quando a transação da aposta é executada
  user       32 bytes   o endereço da sua conta de usuário on-chain
  nonce      8 bytes    o seu contador de apostas, little-endian

derivação
  hash = sha256( "dice" ‖ slothash ‖ user ‖ nonce )   // "dice" = os 4 bytes ASCII 0x64 0x69 0x63 0x65
  roll = u128_be( hash[0..16] ) mod 10000              // primeiros 16 bytes, inteiro sem sinal de 128 bits big-endian

resultado
  roll é um inteiro em 0..9999, com duas casas decimais sobre 0.00–99.99
```

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

```text theme={null}
Abaixo do alvo : você ganha quando roll < target      chance de vitória = target resultados em 10000
Acima do alvo  : você ganha quando roll > target      chance de vitória = 9999 − target resultados em 10000

multiplier_bps = floor( (10000 − edge_bps) × 10000 / win_chance_bps )
```

A chance de vitória que você escolhe precisa ficar entre 2% e 98%. Com a vantagem atual de 1.5% (`edge_bps = 150`):

| Aposta | Chance de vitória | Multiplicador |
| - | - | - |
| Abaixo de 5000 | 50% | 1.97x |
| Abaixo de 200 | 2% | 49.25x |
| Abaixo de 9800 | 98% | 1.0051x |

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](/pt-BR/docs/fees-and-limits).

## 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.

<h2 id="verify-a-roll">
  Como verificar um resultado do Dice?
</h2>

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](/pt-BR/docs/provably-fair/verify-a-round) 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](/pt-BR/docs/games/dice).
