El fondo de apps
Los juegos en solitario de ZooBC se juegan contra la casa, y la casa es el fondo de apps: una cuenta integrada en el protocolo de la que nadie tiene clave. Recibe cada apuesta en solitario, paga cada premio en solitario y recauda el rake de las partidas multijugador. Solo las reglas de las apps mueven su dinero.
Una cuenta sin clave
La dirección del fondo es un nombre fijo, no una clave pública: 00000000 ‖ "ZBCAPPS" ‖ 25 zero bytes. Sin clave, ninguna firma puede gastar nunca desde él, tampoco la de la ZooBC Foundation. Todos los nodos calculan el mismo resultado de cada partida y hacen el mismo pago, así que nadie aprueba un pago a mano. El fondo de longevidad y el fondo de almacenamiento son cuentas del protocolo del mismo tipo (fondos).
El fondo se financia en el bloque génesis; cuánto contiene en ZBC y en las monedas génesis lo fija la configuración del génesis de cada cadena. Cualquiera puede leer sus saldos en cualquier momento con GET /api/v1/apps/pool, que devuelve zbc, tokens[] y channels.
Dinero que entra, dinero que sale
- Entra: cada apuesta en solitario, en el momento en que se ejecuta la apuesta, y el rake del 1 % de cada partida multijugador o de canal que no termina en empate.
- Sale: cada premio en solitario.
- Cuando se pierde no se mueve nada: la apuesta ya está en el fondo.
Cada activo se lleva por separado. Una apuesta hecha en un token se paga con el saldo del fondo en ese token, y los límites del fondo se calculan por activo.
Cada tabla de pagos en solitario devuelve, de media, un poco menos que lo apostado: en el cara o cruz se queda en el fondo alrededor del 1 %, y en las tragamonedas alrededor del 10.7 % (apuestas en solitario). Junto con el rake, este margen es lo que permite al fondo seguir pagando a los ganadores con el tiempo.
Dos límites que lo protegen
Un fondo que paga todos los premios no debe poder vaciarse con un solo resultado afortunado, ni por alguien que pudiera influir en una semilla de bloque. Dos reglas lo protegen.
El tope de apuesta. Antes de aceptar una apuesta en solitario, el nodo calcula el mayor pago que podría llegar a producir la apuesta y lo compara con el 5 % del saldo del fondo en el activo de la apuesta. Una apuesta por encima del tope se rechaza. Con 100 000 ZBC en el fondo, ninguna apuesta puede ganar más de 5000 ZBC; apuestas en solitario da la apuesta más grande por juego.
El cupo por bloque. A partir de la versión 0.5.8, un bloque solo puede pagar premios en solitario hasta el ingreso reciente del fondo: el total de apuestas en solitario hechas en ese activo durante los últimos 5760 bloques, un día. El exceso queda anotado en la app terminada como un pago pendiente. En cada bloque siguiente, los pagos pendientes se pagan primero, por orden de sus ids de app, con cargo al cupo de ese bloque, hasta saldar la deuda.
Una apuesta se resuelve exactamente una vez. No se vuelve a sortear nada, nada se pierde a favor del fondo y la apuesta nunca se reembolsa: el cupo retrasa un premio grande, no lo reduce. Atar los pagos de cada bloque a lo que los jugadores han apostado recientemente limita cuánto de los fondos del génesis puede entregar un solo bloque.