Le pool des apps
Les jeux en solo de ZooBC se jouent contre la banque, et la banque, c’est le pool des apps : un compte intégré au protocole dont personne ne détient la clé. Il reçoit chaque mise en solo, paie chaque gain en solo et perçoit la commission des jeux multijoueurs. Seules les règles des applis déplacent son argent.
Un compte sans clé
L’adresse du pool est un nom fixe, et non une clé publique : 00000000 ‖ "ZBCAPPS" ‖ 25 zero bytes. Sans clé, aucune signature ne peut jamais en dépenser les fonds, pas même celle de la ZooBC Foundation. Chaque nœud calcule le même résultat pour chaque partie et effectue le même paiement, si bien que personne n’approuve un gain à la main. Le fonds de longévité et le fonds de stockage sont des comptes du protocole du même type (les fonds).
Le pool est approvisionné dans le bloc de genèse ; ce qu’il détient en ZBC et en pièces de genèse est fixé par la configuration de genèse de chaque chaîne. N’importe qui peut consulter ses soldes à tout moment avec GET /api/v1/apps/pool, qui renvoie zbc, tokens[] et channels.
Entrées et sorties
- Entrées : chaque mise en solo, au moment où le pari s’exécute, et la commission de 1 % de chaque partie multijoueur ou à canal qui ne se termine pas par une partie nulle.
- Sorties : chaque gain en solo.
- En cas de perte, rien ne bouge : la mise est déjà dans le pool.
Chaque actif est tenu à part. Un pari misé en jeton est payé sur le solde du pool dans ce jeton, et les limites du pool sont calculées actif par actif.
Chaque table de gains en solo rend en moyenne un peu moins que la mise : environ 1 % reste au pool sur un pile ou face, environ 10,7 % sur la machine à sous (paris en solo). Avec la commission, cette marge est ce qui permet au pool de continuer à payer les gagnants au fil du temps.
Deux limites qui le protègent
Un pool qui paie chaque gain ne doit pas pouvoir être vidé par un seul résultat chanceux, ni par quelqu’un qui pourrait influencer une graine de bloc. Deux règles le protègent.
Le plafond de mise. Avant qu’un pari en solo soit accepté, le nœud calcule le plus gros gain que ce pari pourrait jamais produire et le compare à 5 % du solde du pool dans l’actif de la mise. Un pari au-dessus du plafond est refusé. Avec 100 000 ZBC dans le pool, aucun pari ne peut gagner plus de 5 000 ZBC ; la mise maximale de chaque jeu figure dans l’article sur les paris en solo.
L’enveloppe par bloc. À partir de la version 0.5.8, un bloc ne peut payer de gains en solo qu’à hauteur des entrées récentes du pool : le total des mises en solo placées dans cet actif au cours des 5 760 derniers blocs, soit un jour. L’excédent est inscrit sur l’appli terminée comme paiement dû. À chaque bloc suivant, les paiements dus sont réglés en premier, dans l’ordre de leurs identifiants d’appli, à partir de l’enveloppe de ce bloc, jusqu’à ce que la dette soit soldée.
Un pari est résolu exactement une fois. Rien n’est tiré de nouveau, rien n’est perdu au profit du pool, et la mise n’est jamais remboursée : l’enveloppe retarde un gros gain, elle ne le réduit pas. Lier les paiements de chaque bloc à ce que les joueurs ont misé récemment limite la part des fonds de genèse qu’un seul bloc peut distribuer.