Wiki de ZooBC
Apps y desarrollo sobre ZooBC

Apuestas en solitario

Seis juegos se juegan a solas contra la casa: dos dados, cara o cruz, ruleta, tragamonedas, lotería y crash. Una apuesta es una transacción CreateApp con un solo asiento. Su resultado proviene de una aleatoriedad que no existía cuando se hizo la apuesta, y el fondo de apps paga los premios.

Hacer una apuesta

El apostante envía CreateApp con el tipo del juego (de 16 a 21), la apuesta y lo apostado, en ZBC o en un token. Lo apostado pasa al fondo de apps cuando se ejecuta la apuesta. Cualquier cuenta puede apostar, incluidas las cuentas con claves al estilo de Ethereum o de Bitcoin, que no pueden ocupar un asiento en una partida multijugador (apps multijugador).

Un byte final N, de 1 a 100, juega la misma apuesta N veces con una sola semilla, con lo apostado repartido a partes iguales entre las jugadas.

Cuándo y cómo se sortea el resultado

Una apuesta incluida en el bloque N se resuelve en el bloque N + 2, con la semilla de ese bloque, unos 30 segundos después. La semilla de cada bloque la calcula su productor a partir de la semilla anterior con una función aleatoria verificable (semilla del bloque (VRF)), así que mientras la apuesta está entrando en el bloque N, la semilla del bloque N + 2 todavía no existe. Nadie puede predecir el resultado, y el productor que incluyó la apuesta no puede verlo antes. Si el bloque N + 2 lo produce el propio nodo del apostante (se comparan las cuentas de propietario), la apuesta espera a un bloque posterior producido por otro.

El sorteo es un hash de esa semilla y del id de la app, bajo una etiqueta propia:

r = LE64(first 8 bytes of SHA3-256("zbc-apps" ‖ seed ‖ LE64(app id) ‖ LE64(0)))

La primera jugada de una apuesta múltiple usa r; las siguientes usan las salidas de un generador splitmix64 sembrado con r. Cualquiera puede recalcular el resultado a partir de datos públicos y comprobar el pago. No hay ningún secreto que revelar ni ningún lote diario: cada apuesta se liquida por sí sola.

La apuesta entra en el bloque N y la decide la semilla del bloque N + 2, que nadie podía ver cuando se hizo la apuesta.
La apuesta entra en el bloque N y la decide la semilla del bloque N + 2, que nadie podía ver cuando se hizo la apuesta.

Tablas de pagos

JuegoApuestaUn premio pagaVentaja de la casa
Cara o cruz (17)cara o cruz1.98×1 %
Dos dados (16)menos de 7, o más de 72.28×5 %
el 7 de la suerte5.70×5 %
un total exacto34.20 ÷ combinaciones (2 o 12: 34.2×)5 %
Ruleta (18)un solo número36×1/37, alrededor del 2.7 %
rojo o negro2×alrededor del 2.7 %
Tragamonedas (19)triple 7, otro triple, cualquier pareja50×, 15×, 1.8×alrededor del 10.7 %
Lotería (20)un número del 0 al 9990×10 %
Crash (21)un objetivo T de 1.01× a 10.00×T, cuando el punto de crash alcanza Talrededor del 1 %

Para un total exacto con los dados, las combinaciones son el número de maneras en que dos dados pueden sumarlo: 6 − |7 − total|. La ruleta tiene 37 casillas, la 0 verde, y sus colores siguen la rueda europea real. Las tragamonedas tienen tres rodillos de ocho símbolos, con un retorno esperado de 457.4/512. En el crash el objetivo se fija al hacer la apuesta; no hay ningún movimiento para retirarse antes.

La ventaja de la casa está incorporada en cada tabla. En el cara o cruz ganas la mitad de las veces y un premio devuelve 1.98 veces lo apostado, así que de media cada ZBC apostado vuelve como 0.5 × 1.98 = 0.99 ZBC, y el 1 % restante se queda en el fondo de apps. Una pérdida no mueve nada, ya que lo apostado ya está en el fondo.

La ventaja de la casa en cada juego en solitario, desde el 1 % del cara o cruz hasta alrededor del 10.7 % de las tragamonedas.
La ventaja de la casa en cada juego en solitario, desde el 1 % del cara o cruz hasta alrededor del 10.7 % de las tragamonedas.

El tope de apuesta

Antes de aceptar una apuesta, el nodo calcula el mayor pago que podría llegar a producir, no su media, y lo compara con un tope del 5 % del saldo del fondo en el activo de la apuesta:

largest payout ≤ floor(pool balance × 500 ÷ 10,000)

El mayor pago es el propio multiplicador de la apuesta en los dados, 1.98× en el cara o cruz, 36× en la ruleta, 50× en las tragamonedas, 90× en la lotería y T en el crash. Una apuesta por encima del tope se rechaza al enviarla («bet too large for the apps pool»), y una que llegue de todos modos a un bloque es una operación nula pagada.

El tope significa que ningún resultado afortunado puede vaciar el fondo por sí solo. Un segundo límite, el cupo por bloque, puede repartir un premio muy grande entre varios bloques (fondo de apps).

Véase también