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

# Visão geral do provably fair

> O commit-reveal explicado em palavras simples, o que a entropia da blockchain acrescenta e o que você mesmo pode conferir.

<Frame>
  <img src="https://mintcdn.com/cyberiantechnology/AuuF3KYTE6qxTgZL/images/illustrations/banner-provably-fair.webp?fit=max&auto=format&n=AuuF3KYTE6qxTgZL&q=85&s=63cf96dd8fc1c2c3a2efba7008fcad44" alt="Banner do provably fair" width="1376" height="516" data-path="images/illustrations/banner-provably-fair.webp" />
</Frame>

Todo resultado de jogo no My Crypto Casino é produzido por um **esquema commit-reveal combinado com a entropia da blockchain Solana**, executado pelo programa on-chain. É isso que torna os jogos provably fair (comprovadamente justos), e para você, como jogador, isso significa duas coisas:

1. **O resultado não pode ser alterado depois.** O operador trava a contribuição dele (um valor secreto) *antes* do jogo, publicando on-chain uma impressão digital criptográfica desse valor. Depois, o programa se recusa a liquidar a rodada se o segredo revelado não corresponder exatamente a essa impressão digital.
2. **Você mesmo pode conferir tudo.** Todas as entradas e a fórmula exata são públicas. Depois de qualquer rodada ou aposta, você pode recalcular o resultado a partir dos dados on-chain e comparar com o que o jogo pagou.

Esta página explica o esquema em palavras simples. As páginas de cada jogo trazem as fórmulas exatas, e [Verificar uma rodada](/pt-BR/docs/provably-fair/verify-a-round) mostra, passo a passo, como conferir uma rodada real.

<img src="https://mintcdn.com/cyberiantechnology/-ySqsND5p03qeamx/diagrams/pt-BR/commit-reveal-timeline.svg?fit=max&auto=format&n=-ySqsND5p03qeamx&q=85&s=7d377dfd286c1182a27318cf37429f3d" alt="Commit, jogo, revelação, verificação: o segredo é selado on-chain antes do jogo, conferido pelo programa na revelação, e qualquer pessoa pode recalcular cada resultado depois" width="920" height="310" data-path="diagrams/pt-BR/commit-reveal-timeline.svg" />

<h2 id="the-three-building-blocks">
  Do que é feito o provably fair?
</h2>

**Um segredo registrado (commit).** Quando um resultado precisa ficar oculto durante o jogo (Crash, Mines), o backend gera um segredo aleatório de 32 bytes e publica on-chain o hash SHA-256 dele (o *commit*) antes de o jogo começar. Um hash funciona como um envelope lacrado: não revela nada sobre o segredo, mas, depois de publicado, só aquele segredo exato pode corresponder a ele. Quando o segredo é revelado no final, o próprio programa calcula o hash dele e rejeita a transação se não corresponder ao commit.

**Entropia da blockchain Solana.** O resultado nunca depende só do segredo. Ele também mistura um **hash de slot**: o hash de um slot recente da Solana, lido pelo programa na sysvar `SlotHashes` da Solana em um momento definido. Esse valor é produzido pela rede Solana, não pelo cassino, e ainda não existe quando o commit é feito.

**Uma fórmula pública e determinística.** O resultado é uma função matemática fixa dessas entradas. A mesma função roda dentro do programa on-chain (o backend não consegue informar um resultado falso; quem calcula é o programa), e ela está publicada nestas páginas para você mesmo executá-la.

<h2 id="the-flow">
  Como funciona uma rodada, passo a passo?
</h2>

```mermaid theme={null}
sequenceDiagram
    participant MCC as Backend do MCC (operador)
    participant SOL as Programa Solana
    participant You as Jogador

    Note over MCC,SOL: 1. Commit
    MCC->>SOL: Publica commit = sha256(segredo)
    Note over You,SOL: 2. Jogo
    You->>SOL: As apostas são feitas on-chain
    Note over SOL: 3. Entropia da blockchain
    SOL->>SOL: Captura o hash de slot mais recente da Solana
    Note over MCC,SOL: 4. Revelação
    MCC->>SOL: Envia o segredo
    SOL->>SOL: Verifica se sha256(segredo) corresponde ao commit
    SOL->>SOL: Calcula o resultado com a fórmula pública
    Note over You: 5. Verificação (a qualquer momento depois)
    You->>SOL: Lê na blockchain o commit, o hash de slot e o segredo
    You->>You: Recalcula o resultado e compara
```

O Dice condensa esse fluxo em uma única transação: ele não tem nenhum estado oculto a proteger, então não existe segredo do operador. O resultado do dado é derivado do hash de slot, da sua conta e do seu contador de apostas, e liquidado na mesma instrução que o sorteia.

## O que cada jogo registra, e quando

| Jogo | Segredo do operador | Entropia da blockchain | Resultado fixado em | Garantido on-chain |
| - | - | - | - | - |
| [Crash](/pt-BR/docs/provably-fair/crash) | Segredo de 32 bytes, registrado **antes de as apostas abrirem** | Hash de slot capturado quando a rodada começa | Início da rodada | Checagem do commit + ponto de crash calculado pelo programa na revelação |
| [Dice](/pt-BR/docs/provably-fair/dice) | Nenhum | Hash de slot no momento em que sua transação de aposta entra | Inclusão da transação de aposta | Resultado derivado e liquidado pelo programa em uma única instrução |
| [Mines](/pt-BR/docs/provably-fair/mines) | Seed de 32 bytes, registrada **na transação que inicia o seu jogo** | Hash de slot capturado nessa mesma transação de início | Início do jogo, antes da sua primeira escolha | Checagem da seed + tabuleiro inteiro derivado de novo pelo programa na liquidação |

## O que isso garante, e o que isso pressupõe

Aqui, honestidade importa mais que marketing, então vamos ser precisos. Este esquema é **commit-reveal com entropia pública da blockchain, não um VRF** (função aleatória verificável). Veja a fronteira exata entre o que é *garantido pelo código* e o que *depende do bom comportamento do operador*.

### Garantido pelo programa on-chain

* **Nada de trocar o resultado depois do commit.** O programa calcula o hash do segredo revelado e rejeita qualquer liquidação em que ele não corresponda ao commit publicado. O operador não pode escolher outro segredo depois de ver como a rodada está indo.
* **Entropia que o operador não produz.** O hash de slot vem da rede Solana. Ele é desconhecido quando o commit é publicado, e o cassino não o cria.
* **Resultados calculados on-chain.** O ponto de crash, o resultado do dado e o tabuleiro do Mines são calculados (ou derivados de novo e conferidos) pelo próprio programa. O backend não consegue informar um resultado que a fórmula não produz.
* **Auditoria pública completa.** Cada rodada e cada aposta emitem eventos on-chain com todas as entradas da derivação e o resultado. Qualquer pessoa, não só o jogador envolvido, pode recalcular todos os resultados históricos.

### Pressupostos: as ressalvas honestas

* **Influência sobre o momento.** O backend do operador escolhe *quando* enviar certas transações, o que dá a ele uma influência parcial sobre *qual* hash de slot é capturado. Cada página de jogo explica exatamente o que isso poderia e não poderia conseguir naquele jogo.
* **Cancelamentos são possíveis, mas só com reembolso.** O operador pode anular uma rodada de Crash ou um jogo de Mines. Uma anulação sempre devolve integralmente todo valor apostado (o programa não tem como confiscar nada por meio de um cancelamento), e toda anulação fica registrada publicamente, então qualquer pessoa pode auditar a frequência de cancelamentos. Cancelamentos frequentes seriam a assinatura visível, on-chain, de um operador agindo de má-fé.
* **O operador conhece o tabuleiro do Mines durante o jogo.** Isso é estrutural: as casas são reveladas instantaneamente off-chain, e quem as revela precisa conhecer o tabuleiro. O commit garante que o tabuleiro foi fixado antes da sua primeira escolha e não pode ser reescrito depois. Veja em [Justiça no Mines](/pt-BR/docs/provably-fair/mines) exatamente como isso é garantido.

### Por que aceitar essas concessões?

Porque elas são o preço de um jogo instantâneo e contínuo, não atalhos. Cada jogo fica exatamente onde precisa ficar nesse espectro:

* **Mines**: revelar uma casa em milissegundos exige, estruturalmente, alguém que já conheça o tabuleiro. As alternativas (uma transação on-chain por clique, ou uma consulta a um oráculo a cada revelação) transformariam cada casa em uma taxa e uma espera. Um operador que conhece o tabuleiro é indispensável para um Mines que pareça instantâneo e ainda seja liquidado on-chain; o esquema de commit existe para limitar o que esse conhecimento permite fazer.
* **Crash**: uma rodada ao vivo compartilhada precisa de alguém que a conduza para todos os jogadores ao mesmo tempo. Essa é uma escolha pragmática, não uma necessidade estrutural, e é por isso que o programa já vem com um caminho de migração embutido para aleatoriedade baseada em oráculo (VRF), uma fase futura que eliminaria as ressalvas sobre o momento onde a economia permitir.
* **Dice**: a outra ponta do espectro. Não há nada a esconder durante o jogo, então não existe segredo do operador. Onde eliminar a confiança no operador não custa nada, o design elimina.

Em resumo: o operador roda os jogos, e a blockchain torna a trapaça **impossível** (qualquer coisa depois do commit) ou **publicamente detectável** (padrões de timing, frequência de cancelamentos, estatísticas de taxa de vitória).

<Info>
  **Justiça do resultado vs. custódia dos fundos**

  Esta seção trata de como os *resultados* são gerados. Como depósitos, saldos e saques são mantidos on-chain é outro assunto; veja [Arquitetura on-chain](/pt-BR/docs/security/on-chain-architecture).
</Info>

## Verifique você mesmo

* No app, toda rodada de Crash encerrada mostra seus dados de verificação (o segredo revelado, o hash do bloco e links para as transações on-chain) nos detalhes da rodada, junto com uma ferramenta de verificação de um clique.
* Dice e Mines publicam todas as entradas da derivação no evento de liquidação da própria transação da aposta.

[Verificar uma rodada](/pt-BR/docs/provably-fair/verify-a-round) mostra o processo completo, dos dados no app até recalcular o resultado com poucas linhas de código.
