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

# Equidad en Crash

> Qué se fija, cuándo queda fijado el resultado, la fórmula y los límites del esquema.

El multiplicador de una ronda de Crash se decide antes de que se cierren las apuestas y no se puede cambiar después. El backend publica on-chain el hash SHA-256 de un secreto aleatorio antes de que se abran las apuestas, el programa incorpora un hash de slot de Solana cuando empieza la ronda, y el secreto se revela al liquidar para que cualquiera pueda recalcular el punto de crash y comprobarlo.

Esta página explica el mecanismo exacto detrás de cada ronda de [Crash](/es/docs/games/crash): qué se fija, cuándo queda fijado el resultado, la fórmula precisa y los límites honestos del esquema. Si todavía no lo hiciste, lee primero el [Resumen de provably fair](/es/docs/provably-fair/overview); ahí se explica el esquema de compromiso y revelación en palabras simples.

<h2 id="the-life-of-a-round">
  ¿Qué pasa on-chain durante una ronda de Crash?
</h2>

Cada ronda de Crash se construye con tres transacciones on-chain, en este orden:

1. **Compromiso**: antes de que se abran las apuestas, el backend genera un secreto aleatorio de 32 bytes y publica on-chain su hash SHA-256 (la instrucción `start_new_round`). Este es el compromiso: a partir de ese momento, solo ese secreto exacto puede liquidar la ronda. El compromiso es público en el evento `CrashRoundPrepared` de la transacción.
2. **Apuestas**: los jugadores hacen sus apuestas. El secreto sigue oculto; el compromiso garantiza que no se puede cambiar.
3. **Inicio de la ronda / captura de entropía**: cuando empieza la ronda (la instrucción `start_game`), el programa lee el **hash de slot más reciente** del sysvar `SlotHashes` de Solana y lo guarda en la ronda. La app llama a este valor el *hash de bloque* de la ronda. **El punto de crash ya está completamente determinado** (es una función pura del hash de slot guardado y del secreto fijado), pero nadie que no conozca el secreto puede calcularlo todavía. El valor es público en el evento `CrashGameStarted`.
4. **La ronda se desarrolla**: el multiplicador sube y los jugadores cobran.
5. **Revelación**: el backend envía el secreto (la instrucción `crash`). El programa **verifica on-chain** que `sha256(secret)` es igual al compromiso (si no coincide, la transacción falla), luego calcula él mismo el punto de crash y finaliza la ronda. El evento `CrashRoundFinalized` publica el secreto, el hash de slot y el punto de crash final.

<h2 id="the-exact-formula">
  ¿Cuál es la fórmula exacta del punto de crash?
</h2>

El punto de crash se deriva exactamente así (esta es la aritmética que ejecuta el programa on-chain: matemática entera, sin sorpresas de redondeo):

```text theme={null}
entradas
  blockhash   32 bytes   el hash de slot de Solana guardado al inicio de la ronda
  secret      32 bytes   el secreto del operador revelado al final (fijado como sha256(secret))
  edge_bps    entero     ventaja de la casa en puntos básicos (ver Comisiones y límites; 150 = 1.5%)

derivación
  hash  = sha256( blockhash ‖ secret )        // entrada de 64 bytes: primero blockhash, luego el secreto
  X     = u32_be( hash[0..4] )                // primeros 4 bytes del hash, entero sin signo de 32 bits big-endian
  X'    = min( X, 2^32 − 1000 )               // tope de seguridad: el denominador de abajo nunca es menor que 1000

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

resultado
  multiplicador de crash = crash_bps / 10000  // p. ej. 29948 → 2.9948x
```

Detalles que importan cuando lo recalculas:

* El orden de concatenación es **primero blockhash, luego secret**.
* `X` se lee en **big-endian** a partir de los **primeros 4 bytes** de la salida de SHA-256.
* Las divisiones son divisiones **floor** (enteras, redondeando hacia abajo).
* El piso `max(10000, …)` significa que el multiplicador nunca es menor que 1.00x, y el tope sobre `X` evita denominadores astronómicamente pequeños.

### Ejemplo resuelto

Con `X = 0xABCD1234` (2,882,343,476) y la ventaja actual del 1.5% (`edge_bps = 150`):

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

### Cómo se ve la distribución

La fórmula convierte un `X` uniforme en la clásica curva de crash. La probabilidad de que una ronda llegue al menos a un multiplicador `m` es aproximadamente:

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

Con la ventaja actual del 1.5%: alrededor del 49.25% de las rondas llega a 2.00x, alrededor del 9.85% llega a 10x, y alrededor del 1.5% de las rondas hace crash al instante en 1.00x (ahí es donde está la ventaja de la casa). La ventaja que se aplica a cada ronda es el valor configurado on-chain en el momento de la revelación; el valor actual figura en [Comisiones y límites](/es/docs/fees-and-limits).

## Qué está garantizado, y qué no

**Aplicado por el programa:**

* Una vez que el compromiso está on-chain, el operador no puede cambiar el secreto de la ronda: la transacción de revelación falla con cualquier secreto cuyo hash no coincida.
* Una vez que la ronda empezó (hash de slot guardado), **el punto de crash queda fijado**. Cobrar pronto, tarde o en masa no cambia nada: el resultado quedó determinado antes de que el multiplicador empezara a subir.
* El punto de crash lo calcula el programa, no lo informa el backend. No se puede escribir un valor incorrecto on-chain.
* Todo lo necesario para verificar (compromiso, hash de slot, secreto, punto de crash final) se publica en eventos on-chain, de forma permanente.

**Las advertencias honestas** (esto es compromiso y revelación, no un VRF):

* **Momento del inicio.** El operador conoce el secreto antes de que empiece la ronda, y su backend decide cuándo enviar la transacción de inicio de ronda. Como los hashes de slot recientes son públicos, en principio podría precalcular el multiplicador que saldría con distintos slots candidatos y elegir el momento del inicio para influir en qué hash de slot se captura. El esquema no lo impide; lo hace observable: el momento de inicio de cada ronda es público, y cualquier sesgo sistemático aparecería en las estadísticas de los puntos de crash publicados, que cualquiera puede recalcular en masa.
* **Cancelaciones.** Una vez que la ronda empezó, el operador conoce el resultado antes que los jugadores, y podría cancelar una ronda desfavorable en lugar de revelarla. Se aplican dos límites estrictos: una cancelación **reembolsa todo lo apostado** (el programa no tiene ninguna vía de confiscación), y cada cancelación emite un evento público; la frecuencia de cancelaciones es la señal on-chain. La cancelación existe como vía de recuperación ante un secreto perdido (por ejemplo, una caída del backend entre el compromiso y la revelación), y se espera que prácticamente nunca se use.

<h2 id="verify-a-round">
  ¿Cómo verificas una ronda de Crash?
</h2>

Los detalles de cada ronda terminada en la app muestran el secreto revelado y el hash de bloque, y enlazan a las tres transacciones, además de una herramienta de equidad que recalcula el multiplicador por ti. Para el paso a paso completo, con un pequeño script para recalcular tú mismo el punto de crash, consulta [Verificar una ronda](/es/docs/provably-fair/verify-a-round).

Para saber cómo se juega (cobro, ventanas de apuesta, límites), consulta la [guía del juego Crash](/es/docs/games/crash).
