ZooBC wiki
Apps and building on ZooBC

The apps pool

You are looking at an old version of this page: revision #11 by zoobc.how, 2026-10-26 20:39 UTC. See the current version

The solo games on ZooBC are played against the house, and the house is the apps pool: an account built into the protocol that nobody holds a key for. It takes every solo stake, pays every solo win and collects the rake of multiplayer games. Only the app rules move its money.

A keyless account

The pool's address is a fixed name, not a public key: 00000000 ‖ "ZBCAPPS" ‖ 25 zero bytes. With no key, no signature can ever spend from it, the ZooBC Foundation's included. Every node computes the same outcome of every game and makes the same payment, so nobody approves a payout by hand. The longevity pool and the storage pool are protocol accounts of the same kind (pools).

The pool was funded in the genesis block, in ZBC and in the genesis coins, so solo play works from the first block. Anyone can read its balances at any time with GET /api/v1/apps/pool, which returns zbc, tokens[] and channels.

Money in, money out

  • In: every solo stake, at the moment the bet executes, and the 1 % rake of every multiplayer or channel game that does not end in a draw.
  • Out: every solo win.
  • On a loss nothing moves: the stake is already in the pool.

Each asset is kept apart. A bet staked in a token is paid from the pool's balance in that token, and the pool's limits are computed per asset.

Every solo payout table returns a little less than the stake on average: about 1 % stays with the pool on a coin flip, about 10.7 % on slots (solo bets). Together with the rake, this margin is what keeps the pool able to pay winners over time.

The apps pool: stakes come in, wins go out, and only the app rules can move it.
The apps pool: stakes come in, wins go out, and only the app rules can move it.

Two limits that protect it

A pool that pays every win must not be emptied by one lucky result, or by someone who could influence a block seed. Two rules guard it.

The bet cap. Before a solo bet is accepted, the node computes the largest payout the bet could ever produce and compares it with 5 % of the pool's balance in the stake's asset. A bet over the cap is refused. With 100,000 ZBC in the pool, no single bet may win more than 5,000 ZBC; solo bets gives the largest stake per game.

The per-block allowance. From version 0.5.8, a block may pay solo wins only up to the pool's recent inflow: the total of solo stakes placed in that asset during the last 5,760 blocks, one day. The excess is recorded on the finished app as an owed payout. At every following block, owed payouts are paid first, in the order of their app ids, out of that block's allowance, until the debt is cleared.

A bet is resolved exactly once. Nothing is drawn again, nothing is forfeited to the pool, and the stake is never refunded: the allowance delays a large win, it does not shrink it. Tying each block's payouts to what players staked recently limits how much of the genesis funds any single block can hand out.

A 40,000 ZBC win with a 10,000 ZBC allowance: 10,000 paid at once, 30,000 owed and paid first by later blocks.
A 40,000 ZBC win with a 10,000 ZBC allowance: 10,000 paid at once, 30,000 owed and paid first by later blocks.

See also