Come funziona l'API jackpot
Testo completo dell'articolo
1) Cos'è il sistema jackpot e dove si trova nell'ecosistema
Il sistema jackpot è un servizio separato (a volte un cluster di servizi) che raccoglie i contributi dalle scommesse, gestisce pool e trigger delle vincite, calcola la distribuzione dei premi e avvia i pagamenti attraverso il circuito di pagamento dell'operatore. Si integra:- con RGS (rapporti su tassi/risultati e qualifiche), piattaforma/portafoglio (prelievo contributivo e crediti), aggregatore (routing da molti studi/marchi), BI/regolatore (telemetria e rendicontazione).
2) Tipi di jackpot (e cosa cambia nell'API)
1. Fisso (Fixed) - Somma del premio preesistente. L'API non contiene pool, solo verifica dei termini e crediti.
2. Progressive - Il pool cresce dai contributi delle aliquote. Ci servono gli endpoint e la pubblicazione della quota attuale.
3. Multi-tier (Mini/Major/Grand) - Più pool paralleli con diverse possibilità e cappe.
4. Locale vs di rete: pool locale - singolo operatore/marchio Rete: riepilogo su più operatori/marchi/regioni (multi-titolarità e replica sono critiche).
5. Temporaneo/iwent: pool con deadline o pianificato (sono necessari timer e scherzi di auto).
3) Invarianti in denaro
La fonte di verità sul bilanciamento è il portafoglio/piattaforma ledger. JP conserva solo lo stato dei pool e l'obbligo.
Tutte le transazioni sono idimpotenti (chiavi «jp _ contib _ id», «jp _ trigger _ id», «jp _ payout _ id»).
«Pagamenti persi/duplicati» = 0. I compensi sono solo eventi (saghe), non modifiche manuali del database.
Separare il contributo (contribute), il trigger (trigger) e il pagamento (payout) come transazioni indipendenti con la propria telemetria.
4) Contratti API di riferimento
4. 1 RGS/aggregatore JP (contributi e trigger)
«POST/v1/jp/contributions» - Conteggio del contributo al pool
json
{
"jp_contrib_id": "uuid-1",  "tenant_id": "brand-42",  "pool_id": "grand-eu-01",  "player_id": "p_abc",  "game_id": "studio:slot_777",  "round_id": "r_123",  "bet": {"amount": 2. 00, "currency": "EUR"},  "contrib": {"amount": 0. 02, "currency": "EUR"},  "occurred_at": "2025-10-23T15:12:05Z",  "idempotency_key": "round_r_123"
}«POST/v1/jp/candidates» - Richiesta di partecipazione/verifica dei termini (opzionale)
La risposta è «eligibile: true/false», peso o possibilità, regole.
«POST/v1/jp/triggers» - Fissa l'attivazione
json
{
"jp_trigger_id": "uuid-2",  "pool_id": "grand-eu-01",  "reason": "random_hit",  "selector": {"player_id": "p_abc", "round_id": "r_123"},  "occurred_at": "2025-10-23T15:12:06Z",  "idempotency_key": "jp_t_grand_r_123"
}4. Piattaforma JP 2 (pagamenti/riserve)
«POST/v1/wallet/reserve» - (opzionale) riserva per il pagamento futuro
«POST/v1/wallet/credit» - Prestito al giocatore
json
{
"jp_payout_id": "uuid-3",  "tenant_id": "brand-42",  "player_id": "p_abc",  "pool_id": "grand-eu-01",  "amount": {"amount": 500000. 00, "currency": "EUR"},  "meta": {"tax": "withheld=false", "tier": "grand"},  "idempotency_key": "jp_p_grand_r_123"
}4. 3 Pubblicazione dello stato del pool (per fronti/widget)
«GET/v1/jp/pools/{ pool _ id}» → le dimensioni correnti, seed, cap, numero di partecipanti, ETA, ecc.
«GET/v1/jp/pools» elenca i pool per marca/regione con filtri.
5) Modello evento (Kafka/Pulsar) e diagrammi
Topic base:- `jp. contribution. recorded`
- `jp. pool. updated '(dimensioni, aggiornamenti competitivi)
- `jp. triggered`
Contratti: Avro/JSON School + School Registry, chiavi di partizione'tenant _ id ',' pool _ id ',' player _ id '. Versioning - backward-compatibile.
6) Algoritmi di trigger (ad alto livello)
Probabile (p-persistente): per ogni round qualificato generiamo hit con probabilità di «p» (dipendente da un pool/tipo di livello).
Intervallo (must-drop) - Il pool deve cadere fino alla somma cap o alla deadline - teniamo il random interno nell'intervallo [min, max], e pubblichiamo cap/ETA.
Gestione sit e entropy: seed + per-round salt server; abbandono i sedili dei clienti per i jackpot. Tutte le modifiche al seed sono sotto l'udienza WORM.
Onestà: il trigger non deve dipendere dall'identità specifica del giocatore (eccetto le regole geo/licenza/qualifica). Qualsiasi targatura personale è un tabù.
7) SLO e prestazioni
p95 'contribution' <120 ms, p99 <250 ms.
p95 'trigger→credit' <500 ms (senza hop di pagamento esterni).
«Pagamenti persi/duplicati» = 0 (convalidato dai test contrattuali).
Consegna eventi in BI da 5 minuti
Disponibilità dell'API JP per i percorsi critici 99. 95%.
8) Sicurezza e compliance
mTLS + firma (HMAC/EdDSA) su tutte le chiamate S2S; token a breve vita.
Zero-trust: regole di rete/mesh, privilegi minimi, segmentazione per regione.
Controllo WORM delle modifiche a limiti, formule, seed/entropy, configurazioni di pool.
GDPR/Data residency/PCI: PII e loghi - nella regione; Tornizzazione dei campi sensibili Divieto di lettura crociata-regionale.
RG/AML: segnali sincronizzati di stop al pagamento; Scaricamenti SAR/START automatizzati.
9) Coerenza e saghe
Contributo ('contribute') - Registriamo in JP, pubblichiamo'jp. contribution. recorded`.
Triggered - crea un impegno; JP avvia la saga'payout '.
Pagamento ('payout. requested → wallet. credit. ok ') - Termina la saga. per i feel - retrai deduplicati.
Outbox/CDC è l'unico modo per pubblicare eventi; Non c'è nessun logger «scortese».
10) Telemetria e dashboard
Business:- `pool_size`, `contrib_rate`, `avg_contrib_per_bet`, `time_to_drop`, `payouts_count/sum`, `tier_distribution`.
- p50/p95/p99 по `contribution`, `trigger`, `payout`;
- error rate с типами (5xx/4xx/business), retry storms, queue lag;
- `wallet. credit` latency/ok-rate; la conflittualità dell'aggiornamento del pool.
- Altezza «payout». failed '> X% per marchio/regione,' pool _ size '> cap - Y% di tempo (errore di configurazione), drivt tra' pool _ size 'e l'importo dei contributi per la compressione> Z ppm.
11) Multiforme e isolamento
Tutte le richieste ed eventi sono contrassegnati con «tenant _ id/brand _ id/license/region».
I pool locali/di rete sono separati fisicamente (DB/cluster) in licenze/regioni diverse.
Row-level security (RLS) e maschera nelle vetrine BI.
Singole chiavi/segreti e spazi schematici per il marchio/regione.
12) Integrazione con bonus/tornei
I contributi non aumentano direttamente il wager; Il bonus viene da una scommessa, non da una quota.
I tornei possono assegnare punti per «partecipazione a JP» o «iscrizione ai migliori depositi». Sorgente - eventi 'jp. contribution. recorded` и `jp. triggered`.
Regola obbligatoria: la meccanica jackpot non cambia il gioco RTP di base; Altrimenti serve una certificazione separata.
13) Test e pratiche di caos
I test di contrattazione sono: ripresa-consegna, ritardi, out-of-order, rollback.
Test di carico: tempesta di scommesse e trigger, scalabilità dei worker del pool.
Attività di caos: caduta della regione JP, portafoglio offline, risincronizzazione del tempo; Controllo di outbox e degrado (pausa triggers/no new contributions).
14) Assegno fogli
Per studio/RGS
- Idempotent «content» e corretti «round _ id »/« bet _ id».
- Nessuna pubblicazione oltre le transazioni (solo outbox/CDC).
- Test di ripresa/ripetuti trigger/compensi.
- I limiti max bet/qualifica vengono trasferiti a JP.
Per operatore/piattaforma
- Ledger è la fonte della verità, 'wallet. credit'con deduplicazione.
- I piedi RG/AML vengono trattati al pagamento; rapporti SAR/TR.
- Dashboard p95 'trigger→credit', error rate, compressione dei pool.
Per il proprietario di JP
- Controllo WORM delle modifiche alle formule/seed/limiti.
- Diagrammi di eventi in Registry e versioning.
- DR: RPO 5 min, RTO 30 min; esercitazioni regolari.
- RLS/isolamento per marchi/licenze; chiavi/segreti per region.
15) Bandiere rosse (anti-pattern)
Modifica manuale delle dimensioni dei pool e dei pagamenti del database.
La mancanza di idepotenza ha → i crediti.
Pubblicare la telemetria senza outbox/CDC → i contributi/i trigger persi.
Combinazione di PII e dati monetari di diverse regioni.
Jackpot che influisce sul gioco di base RTP senza nuova certificazione.
Niente portafogli e pool; I rapporti sono basati su OLTP da guerra.
L'API di sistemi jackpot è un contratto monetario tra studio, piattaforma e operatore. Le sue fondamenta sono idemotia e saghe, isolamento del denaro, schemi di eventi chiari, sicurezza e controllo WORM, osservabilità e SLO. Con questo design, i pool progressivi e di rete sono scalabili in modo prevedibile, i pagamenti rimangono corretti e i rapporti regolatori e aziendali sono trasparenti e affidabili.
