Wiki di ZooBC
App e sviluppo su ZooBC

Il pool delle app

I giochi in solitaria su ZooBC si giocano contro il banco, e il banco è il pool delle app: un account integrato nel protocollo di cui nessuno detiene una chiave. Riceve ogni puntata in solitaria, paga ogni vincita in solitaria e raccoglie il rake dei giochi multigiocatore. Solo le regole delle app muovono il suo denaro.

Un account senza chiave

L'indirizzo del pool è un nome fisso, non una chiave pubblica: 00000000 ‖ "ZBCAPPS" ‖ 25 zero bytes. Senza chiave, nessuna firma può mai spendere da esso, nemmeno quella della ZooBC Foundation. Ogni nodo calcola lo stesso esito di ogni partita ed effettua lo stesso pagamento, quindi nessuno approva una vincita a mano. Il pool di longevità e il pool di archiviazione sono account del protocollo dello stesso tipo (pool).

Il pool viene finanziato nel blocco genesi; quanto contiene in ZBC e nelle monete genesi lo stabilisce la configurazione genesi di ciascuna catena. Chiunque può leggerne i saldi in qualsiasi momento con GET /api/v1/apps/pool, che restituisce zbc, tokens[] e channels.

Denaro in entrata, denaro in uscita

  • In entrata: ogni puntata in solitaria, nel momento in cui la scommessa viene eseguita, e il rake dell'1 % di ogni partita multigiocatore o channel che non finisce in pareggio.
  • In uscita: ogni vincita in solitaria.
  • In caso di perdita non si muove nulla: la puntata è già nel pool.

Ogni asset viene tenuto separato. Una scommessa puntata in un token viene pagata dal saldo del pool in quel token, e i limiti del pool vengono calcolati per asset.

Ogni tabella delle vincite in solitaria restituisce in media un po' meno della puntata: circa l'1 % resta al pool a testa o croce, circa il 10,7 % alle slot (scommesse in solitaria). Insieme al rake, questo margine è ciò che permette al pool di continuare a pagare i vincitori nel tempo.

Il pool delle app: le puntate entrano, le vincite escono, e solo le regole delle app possono muoverlo.
Il pool delle app: le puntate entrano, le vincite escono, e solo le regole delle app possono muoverlo.

Due limiti che lo proteggono

Un pool che paga ogni vincita non deve poter essere svuotato da un solo risultato fortunato, o da qualcuno in grado di influenzare il seed di un blocco. Due regole lo proteggono.

Il tetto per scommessa. Prima che una scommessa in solitaria venga accettata, il nodo calcola la vincita più grande che la scommessa potrebbe mai produrre e la confronta con il 5 % del saldo del pool nell'asset della puntata. Una scommessa oltre il tetto viene rifiutata. Con 100.000 ZBC nel pool, nessuna singola scommessa può vincere più di 5.000 ZBC; scommesse in solitaria indica la puntata massima per ogni gioco.

Il limite per blocco. Dalla versione 0.5.8, un blocco può pagare vincite in solitaria solo fino all'afflusso recente del pool: il totale delle puntate in solitaria piazzate in quell'asset negli ultimi 5.760 blocchi, un giorno. L'eccedenza viene registrata sull'app conclusa come vincita dovuta. A ogni blocco successivo, le vincite dovute vengono pagate per prime, nell'ordine dei loro id di app, con il limite di quel blocco, finché il debito non è saldato.

Una scommessa viene risolta esattamente una volta. Nulla viene estratto di nuovo, nulla viene incamerato dal pool e la puntata non viene mai rimborsata: il limite ritarda una grande vincita, non la riduce. Legare i pagamenti di ogni blocco a ciò che i giocatori hanno puntato di recente limita quanto dei fondi della genesi un singolo blocco possa distribuire.

Una vincita di 40.000 ZBC con un limite di 10.000 ZBC: 10.000 pagati subito, 30.000 dovuti e pagati per primi dai blocchi successivi.
Una vincita di 40.000 ZBC con un limite di 10.000 ZBC: 10.000 pagati subito, 30.000 dovuti e pagati per primi dai blocchi successivi.

Vedi anche