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

> O que é registrado, quando o resultado fica fixado, a fórmula e os limites do esquema.

O multiplicador de uma rodada de Crash é decidido antes de as apostas fecharem e não pode ser alterado depois. O backend publica on-chain o hash SHA-256 de um segredo aleatório antes de as apostas abrirem, o programa mistura um hash de slot da Solana quando a rodada começa, e o segredo é revelado na liquidação para que qualquer pessoa possa recalcular o ponto de crash e conferi-lo.

Esta página mostra o mecanismo exato por trás de cada rodada de [Crash](/pt-BR/docs/games/crash): o que é registrado, quando o resultado fica fixado, a fórmula precisa e os limites honestos do esquema. Se ainda não leu, comece pela [Visão geral do provably fair](/pt-BR/docs/provably-fair/overview); ela explica o commit-reveal em palavras simples.

<h2 id="the-life-of-a-round">
  O que acontece on-chain durante uma rodada de Crash?
</h2>

Toda rodada de Crash é construída a partir de três transações on-chain, nesta ordem:

1. **Commit**: antes de as apostas abrirem, o backend gera um segredo aleatório de 32 bytes e publica on-chain o hash SHA-256 dele (a instrução `start_new_round`). Esse é o commit: a partir desse momento, só aquele segredo exato pode liquidar a rodada. O commit é público no evento `CrashRoundPrepared` da transação.
2. **Apostas**: os jogadores fazem suas apostas. O segredo continua oculto; o commit garante que ele não pode ser trocado.
3. **Início da rodada / captura de entropia**: quando a rodada começa (a instrução `start_game`), o programa lê o **hash de slot mais recente** na sysvar `SlotHashes` da Solana e o armazena na rodada. O app chama esse valor de *hash do bloco* da rodada. **O ponto de crash agora está totalmente determinado** (é uma função pura do hash de slot armazenado e do segredo registrado), mas ninguém que não conheça o segredo consegue calculá-lo ainda. O valor é público no evento `CrashGameStarted`.
4. **A rodada acontece**: o multiplicador sobe e os jogadores fazem cash out.
5. **Revelação**: o backend envia o segredo (a instrução `crash`). O programa **verifica on-chain** se `sha256(secret)` é igual ao commit (se não for, a transação falha), depois calcula ele mesmo o ponto de crash e finaliza a rodada. O evento `CrashRoundFinalized` publica o segredo, o hash de slot e o ponto de crash final.

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

O ponto de crash é derivado exatamente assim (esta é a aritmética que o programa on-chain executa: matemática de inteiros, sem surpresas de arredondamento):

```text theme={null}
entradas
  blockhash   32 bytes   o hash de slot da Solana armazenado no início da rodada
  secret      32 bytes   o segredo do operador revelado no final (registrado como sha256(secret))
  edge_bps    inteiro    vantagem da casa em pontos-base (veja Taxas e limites; 150 = 1.5%)

derivação
  hash  = sha256( blockhash ‖ secret )        // entrada de 64 bytes: primeiro blockhash, depois o segredo
  X     = u32_be( hash[0..4] )                // primeiros 4 bytes do hash, big-endian, inteiro sem sinal de 32 bits
  X'    = min( X, 2^32 − 1000 )               // teto de segurança: o denominador abaixo nunca fica abaixo de 1000

  crash_bps = max( 10000, floor( (10000 − edge_bps) × 2^32 / (2^32 − X') ) )

resultado
  multiplicador de crash = crash_bps / 10000  // ex.: 29948 → 2.9948x
```

Detalhes que importam quando você for recalcular:

* A ordem de concatenação é **primeiro blockhash, depois secret**.
* `X` é lido em **big-endian** a partir dos **primeiros 4 bytes** da saída do SHA-256.
* As divisões são divisões inteiras com **floor** (arredondamento para baixo).
* O piso `max(10000, …)` significa que o multiplicador nunca fica abaixo de 1.00x, e o teto em `X` evita denominadores absurdamente pequenos.

### Exemplo prático

Com `X = 0xABCD1234` (2,882,343,476) e a vantagem atual de 1.5% (`edge_bps = 150`):

```text theme={null}
denominador = 2^32 − 2882343476 = 1412623820
crash_bps   = floor( 9850 × 2^32 / 1412623820 ) = 29948
crash       = 2.9948x
```

### Como é a distribuição

A fórmula transforma um `X` uniforme na clássica curva de crash. A probabilidade de uma rodada chegar a pelo menos um multiplicador `m` é aproximadamente:

```text theme={null}
P(crash ≥ m) ≈ (1 − vantagem) / m
```

Com a vantagem atual de 1.5%: cerca de 49.25% das rodadas chegam a 2.00x, cerca de 9.85% chegam a 10x, e cerca de 1.5% das rodadas dão crash instantâneo em 1.00x (é aí que está a vantagem da casa). A vantagem que se aplica a cada rodada é o valor configurado on-chain no momento da revelação; o valor atual está em [Taxas e limites](/pt-BR/docs/fees-and-limits).

## O que é garantido, e o que não é

**Garantido pelo programa:**

* Depois que o commit está on-chain, o operador não pode mudar o segredo da rodada: a transação de revelação falha com qualquer segredo cujo hash não corresponda.
* Assim que a rodada começa (hash de slot armazenado), **o ponto de crash está fixado**. Fazer cash out cedo, tarde ou em massa não muda nada: o resultado foi determinado antes de o multiplicador começar a subir.
* O ponto de crash é calculado pelo programa, não informado pelo backend. Um valor errado não pode ser gravado on-chain.
* Tudo o que é preciso para verificar (commit, hash de slot, segredo, ponto de crash final) é publicado em eventos on-chain, para sempre.

**As ressalvas honestas** (isto é commit-reveal, não um VRF):

* **Momento do início.** O operador conhece o segredo antes de a rodada começar, e o backend dele decide quando enviar a transação de início da rodada. Como os hashes de slot recentes são públicos, em princípio ele poderia pré-calcular o multiplicador que sairia para slots candidatos e escolher o momento do início para influenciar qual hash de slot é capturado. O esquema não impede isso; ele torna isso observável: o momento de início das rodadas é público, e qualquer viés sistemático apareceria nas estatísticas dos pontos de crash publicados, que qualquer pessoa pode recalcular em massa.
* **Cancelamentos.** Depois que a rodada começa, o operador conhece o resultado antes dos jogadores e poderia cancelar uma rodada desfavorável em vez de revelá-la. Há dois limites rígidos: um cancelamento **devolve integralmente todo valor apostado** (o programa não tem nenhum caminho de confisco), e todo cancelamento emite um evento público; a frequência de cancelamentos é o sinal on-chain. O cancelamento existe como caminho de recuperação caso um segredo seja perdido (por exemplo, uma queda do backend entre o commit e a revelação), e a expectativa é que praticamente nunca seja usado.

<h2 id="verify-a-round">
  Como verificar uma rodada de Crash?
</h2>

Os detalhes de cada rodada encerrada no app mostram o segredo revelado e o hash do bloco, com links para as três transações e uma ferramenta de verificação que recalcula o multiplicador para você. Para o passo a passo completo, incluindo um pequeno script para você mesmo recalcular o ponto de crash, veja [Verificar uma rodada](/pt-BR/docs/provably-fair/verify-a-round).

Para saber como o jogo em si funciona (cash out, janelas de aposta, limites), veja o [guia do Crash](/pt-BR/docs/games/crash).
