Skip to main content
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: 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; ahí se explica el esquema de compromiso y revelación en palabras simples.

¿Qué pasa on-chain durante una ronda de Crash?

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.

¿Cuál es la fórmula exacta del punto de crash?

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

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

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.

¿Cómo verificas una ronda de Crash?

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. Para saber cómo se juega (cobro, ventanas de apuesta, límites), consulta la guía del juego Crash.