Skip to main content
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. Dice es el caso más simple del esquema provably fair: 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.

¿Por qué Dice no tiene paso de compromiso?

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.

¿Cuál es la fórmula exacta de la tirada de Dice?

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

La probabilidad de ganar que elijas tiene que estar entre 2% y 98%. Con la ventaja actual de 1.5% (edge_bps = 150): 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.

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.

¿Cómo verificas una tirada de Dice?

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