Skip to main content
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: 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; ela explica o commit-reveal em palavras simples.

O que acontece on-chain durante uma rodada de Crash?

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.

Qual é a fórmula exata do ponto de crash?

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):
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):

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

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.

Como verificar uma rodada de Crash?

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. Para saber como o jogo em si funciona (cash out, janelas de aposta, limites), veja o guia do Crash.