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

> Por qué no hace falta ningún secreto del operador, y la derivación completa a partir de entradas públicas.

Una tirada de Dice no usa ningún secreto del operador. Se deriva on-chain a partir de un hash de slot de Solana capturado cuando se ejecuta tu apuesta, la dirección de tu cuenta y tu contador personal de apuestas, y se liquida en la misma transacción que realizó la apuesta. No hay ninguna semilla que el operador pueda elegir, ni nada que revelar después.

Esta página explica el mecanismo exacto detrás de cada tirada de [Dice](/es/docs/games/dice). Dice es el caso más simple del [esquema provably fair](/es/docs/provably-fair/overview): **no hay ningún secreto del operador**. La tirada se deriva de entradas públicas y se liquida on-chain en la misma transacción que realiza la apuesta.

<h2 id="why-there-is-no-commit-step">
  ¿Por qué Dice no tiene paso de compromiso?
</h2>

Crash necesita un secreto fijado porque su resultado debe estar *fijado pero oculto* mientras se juega la ronda. Una tirada de dados no tiene esa fase: el resultado se usa en la misma instrucción que lo genera. Así que, en lugar de fijar un secreto de antemano, la derivación simplemente **no usa ninguna entrada del operador**: no hay nada que fijar, nada que revelar y ninguna semilla que el operador pueda elegir a su favor.

La entropía viene de la propia red de Solana, mezclada con valores que identifican tu apuesta:

* **`slothash`**: la entrada más reciente del sysvar `SlotHashes` de Solana en el momento en que se ejecuta la transacción de tu apuesta. Es entropía producida por la red, desconocida cuando se arma la transacción (quien la envía no puede saber exactamente en qué slot va a entrar).
* **`user`**: la dirección de 32 bytes de tu cuenta de usuario on-chain (una cuenta que el programa deriva de tu billetera). Esto hace que las tiradas sean independientes entre jugadores: dos apuestas que entran en el mismo slot obtienen tiradas distintas.
* **`nonce`**: tu contador personal de apuestas, guardado on-chain e incrementado con cada jugada. Esto hace que tus propias apuestas consecutivas sean independientes, incluso dentro del mismo slot, y además sirve como protección contra el doble envío.

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

```text theme={null}
entradas
  slothash   32 bytes   último hash de slot de Solana cuando se ejecuta la transacción de la apuesta
  user       32 bytes   la dirección de tu cuenta de usuario on-chain
  nonce      8 bytes    tu contador de apuestas, little-endian

derivación
  hash = sha256( "dice" ‖ slothash ‖ user ‖ nonce )   // "dice" = los 4 bytes ASCII 0x64 0x69 0x63 0x65
  roll = u128_be( hash[0..16] ) mod 10000              // primeros 16 bytes, entero sin signo de 128 bits big-endian

resultado
  roll es un entero en 0..9999, con dos decimales sobre 0.00–99.99
```

Detalles que importan cuando la recalculas:

* La entrada del hash es la concatenación, en este orden exacto: la etiqueta ASCII `"dice"`, el hash de slot, la dirección de la cuenta de usuario y luego el nonce codificado en **8 bytes little-endian**.
* La muestra son los **primeros 16 bytes** de la salida SHA-256, leídos como un entero sin signo de 128 bits **big-endian**, reducido módulo 10,000.
* Reducir una muestra de 128 bits módulo 10,000 tiene un sesgo teórico inferior a 2⁻¹¹⁴, decenas de órdenes de magnitud menor que la ventaja de la casa, por eso se documenta en lugar de corregirse.

## Condición de victoria y pago

```text theme={null}
Menor que el objetivo : ganas cuando roll < target      probabilidad de ganar = target resultados de 10000
Mayor que el objetivo : ganas cuando roll > target      probabilidad de ganar = 9999 − target resultados de 10000

multiplier_bps = floor( (10000 − edge_bps) × 10000 / win_chance_bps )
```

La probabilidad de ganar que elijas tiene que estar entre 2% y 98%. Con la ventaja actual de 1.5% (`edge_bps = 150`):

| Apuesta | Probabilidad de ganar | Multiplicador |
| - | - | - |
| Menor a 5000 | 50% | 1.97x |
| Menor a 200 | 2% | 49.25x |
| Menor a 9800 | 98% | 1.0051x |

El retorno esperado es el mismo para cualquier objetivo: `probabilidad × multiplicador ≈ 98.5%` del monto apostado (el redondeo hacia abajo favorece a la casa en, como mucho, un punto básico). La ventaja y los límites actuales están en [Comisiones y límites](/es/docs/fees-and-limits).

## Qué está garantizado y qué no

**Lo que impone el programa:**

* La tirada se deriva **y** se liquida dentro de una sola instrucción on-chain, a partir de entradas que el programa lee por sí mismo. El backend no aporta la tirada y no puede informarla mal.
* El operador no aporta **ninguna entrada** a la derivación: no hay semilla del servidor que probar una y otra vez hasta dar con un resultado favorable.
* Tu nonce tiene que repetirse exactamente, así que la misma apuesta no puede jugarse dos veces, ni por accidente ni a propósito.
* Cada jugada publica todas las entradas de la derivación y el resultado, así que cualquiera puede recalcular cualquier tirada del historial.

**La advertencia honesta: el momento del envío.** Las apuestas de Dice no pagan gas: el backend de MCC firma y envía la transacción por ti, así que el operador controla *cuándo* se envía. El hash del slot `N−1` se hace público al comienzo del slot `N`, así que un operador con muy baja latencia podría estimar la tirada que obtendría una apuesta *si* entrara en el slot actual, y retrasar el envío para volver a sortear. El esquema lo acepta en lugar de fingir lo contrario (eliminarlo requeriría un oráculo VRF cuyo costo por apuesta supera el valor esperado de la casa en apuestas pequeñas). Lo que lo limita:

* La inclusión no es totalmente controlable: es la red, no quien envía, la que decide el slot exacto en el que entra una transacción.
* Todas las entradas se publican, así que los patrones de retraso en el envío y cualquier desviación de las tasas de victoria agregadas respecto de las probabilidades anunciadas son **medibles por cualquiera** a partir de datos públicos. Un abuso sistemático no puede quedar oculto.

<h2 id="verify-a-roll">
  ¿Cómo verificas una tirada de Dice?
</h2>

Cada jugada emite un evento `DiceBetSettled` en la propia transacción de la apuesta, con todo lo que necesitas: `slothash`, `user`, `nonce`, `target_bps`, `direction`, `win_chance_bps`, `roll`, `multiplier_bps` e `is_win`, más el desglose completo de la liquidación. Para verificar:

1. Abre la transacción de la apuesta en un explorador de Solana y lee los campos del evento (la pantalla de Dice en la app muestra las entradas de equidad de tu sesión, y tu historial de apuestas enlaza a la transacción).
2. Recalcula `sha256("dice" ‖ slothash ‖ user ‖ nonce)`, toma los primeros 16 bytes big-endian módulo 10,000 y compáralo con el `roll` del evento.
3. Comprueba si se ganó o se perdió (`roll < target` para Menor, `roll > target` para Mayor) y el multiplicador con la fórmula de arriba.

Consulta [Verificar una ronda](/es/docs/provably-fair/verify-a-round) para ver consejos generales sobre cómo leer los datos de eventos en un explorador.

Para saber cómo se juega, consulta la [guía del juego Dice](/es/docs/games/dice).
