Controllo dell'esito del gioco crash: algoritmo, sicurezza
1) Scopo di verifica: esattamente cosa stai confermando
Insopportabile: l'operatore non ha potuto modificare il risultato dopo la puntata (grazie all'hashtag del server side).
Riproduzione: con i dati di input, si ottiene lo stesso moltiplicatore che il gioco ha mostrato.
Integrità della procedura: formato di messaggio, ingrandimento «nonce», regola di arrotondamento e «house edge» applicati in base alle specifiche.
2) Dati senza i quali non è possibile verificare
1. Server Seed Hash (commit) - Viene pubblicato prima di utilizzare Server Seed appropriato.
2. Server Seed (visualizzato dopo/al termine del periodo).
3. Client Seed (side; lo specificate da soli o la piattaforma genera).
4. Nonce (il contatore delle tue scommesse all'interno dell'attuale «Server Seed»).
5. Algoritmo di hashtag (solitamente "HMAC-SHA256" o'SHA-256 ").
6. Formato messaggio (esempio: «
7. La formula di mapping dell'hashtag → il moltiplicatore (e la regola di arrotondamento/minimo).
3) Algoritmo di convalida (7 passi)
1. Contate «SHA-256 (ServerSeed)» e confrontate con «ServerSeedHash» pubblicato.
2. Raccogli un messaggio rigorosamente in formato piattaforma (ad esempio, «msg = ClientSeed +»: «+ Nonce»).
3. Contate l'hash di round:- при `HMAC-SHA256`: `RoundHash = HMAC_SHA256(key=ServerSeed, msg=message)`;
- "SHA-256": "RoundHash = SHA256 (ServerSeed | | messagge'o come specificato nella specifica.
- 4. Estrai la casualità: prendi i primi «k» bit (spesso 52) «r», poi «u = r/2 ^ k».
- 5. Applica la formula del mapping: converti «u» in un moltiplicatore (house edge/valigette speciali conteggiate dalla documentazione del gioco).
- 6. Arrotondare secondo le regole del gioco (ad esempio, a 2 caratteri, almeno 1. 00 x, ecc.).
- 7. Paragonate il risultato del giro della storia. Coincidenza = corretta onestà.
4) Pseudocode (adattabile a Python/JS)
python
Inserisci qui la formula esatta del mapping dalla tua piattaforma invece di stub _ mapping ()
import hmac, hashlib, math
def round_hash(server_seed: bytes, client_seed: str, nonce: int) -> bytes:
messaggistica = f «{client _ seed}: {nonce}» .code («utf-8») vedere le specifiche
return hmac. new(server_seed, message, hashlib. sha256). digest () o haslib. sha256(...)
def take_u_from_hash(h: bytes, k_bits=52) -> float:
Prendiamo k bit senior come un intero r
r = int. from_bytes(h, "big") >> (256 - k_bits)
return r / (1 << k_bits) u в [0, 1)
def stub_mapping(u: float) -> float:
ZAGLUSKA! Sostituisci con la formula della documentazione del gioco
Ad esempio, a volte si utilizza la conversione di una vista: crash = floor ((es/( r + 1) 100 )/100
e/o «house edge» come rara forzatura 1. 00×. Non usare questa stub in un vero controllo.
return max(1. 00, round(1. 0 / max(1e-12, 1. 0 - u), 2))
def verify(server_seed_hex, server_seed_hash_hex, client_seed, nonce, shown_multiplier):
server_seed = bytes. fromhex(server_seed_hex)
1) Commit
assert hashlib. sha256(server_seed). hexdigest() == server_seed_hash_hex. lower()
2-3) Hash round
h = round_hash(server_seed, client_seed, nonce)
4) u
u = take_u_from_hash(h)
5-6) mapping + arrotondamento
calc_mult = stub_mapping(u)
7) confronto
return abs(calc_mult - shown_multiplier) < 1e-9
L'importante è che invece di «stub _ mapping», applichi la formula esatta dalla sezione Fairness della tua piattaforma; Altrimenti il controllo non sarà corretto.
5) Casi privati e pietre subacquee
Due puntate nello stesso round: molte piattaforme «nonce» aumentano per ogni puntata, anche se effettuate nello stesso round (esempio: A «nonce = 42», B «nonce = 43»). Controllate la storia.
Cambia Client Seed - Quando si cambia il side noncè, di solito viene reimpostato (o inizia un nuovo flusso). Controlla le regole della piattaforma.
Batch'Server Seed ': un Server Seed è valido per una serie di round, quindi viene pubblicato un nuovo commit. non confondere i semi di periodi diversi.
Arrotondamento/minimo: non corrispondenza secondo carattere - Nel 90% dei casi si è verificato un errore nelle regole di arrotondamento/minimo (ad esempio, fisso 1. 00 x a condizione speciale).
Codifica/spazi: spazio/traduzione di riga in eccesso, maiuscole non corrette, non UTF-8 interrompono il controllo.
6) Assegno foglio di controllo rapido del round
1. «SHA-256 (ServerSeed)» corrisponde a «ServerSeedHash»?
2. Il formato "messagge'e" nonce "è corretto?
3. L'algoritmo ('HMAC-SHA256 '/' SHA-256') e la chiave/ordine dei campi sono applicati in base alle specifiche?
4. Mupping e arrotondamento sono identici alla documentazione?
5. Se i casi particolari sono considerati («crash istantaneo» raro, minimo 1. 00 x, caps)?
6. Il risultato corrisponde alla storia del gioco fino a un centesimo?
7) Automazione del controllo (pratica)
Loghi: conserva «client _ seed», sequenza «nonce», etichetta temporale, moltiplicatore finale.
Sampling: Dopo aver girato «Server Seed», passate allo script 20-50 round casuali; fissa la percentuale di corrispondenze (deve essere 100%).
Regressione: se cambi versione del gioco/provider, esegui lo stesso set.
Esporta: memorizza CSV/JSON con i sorgenti è la tua traccia di controllo.
8) Sicurezza: come non sbagliare e non lasciarsi ingannare
Controlla localmente/offline: Non fare affidamento solo sul validatore Web dell'operatore; tenete il vostro script.
Non fidarsi dei round senza un pacchetto completo di dati: nessuna formula/formato - nessuna verifica.
Forte «Client Seed»: imposta casuale, cambia periodicamente (non aumenta la RTP, ma esclude le domande di riproduzione).
TLS/sessione: accesso solo HTTPS, 2FA, monitoraggio degli ingressi e dei download cronologici.
Non trasmettere «Server Seed» a nessuno: viene pubblicato dall'operatore dopo il periodo; Il vostro compito è quello di incrociarlo, di non recuperarlo in anticipo.
9) Tipici «errori dei principianti»
Ordine dei campi confuso («Nonce:ClientSeed» invece di «ClientSeed:Nonce»).
Conto «nonce» da zero invece di una (o viceversa).
È stato utilizzato l'hash di tutto il round di piattaforma (global nonce) e hai bisogno del tuo personale'nonce '.
Ignora le regole di arrotondamento (banker's rounding vs floor/ceil).
Comprimere con Server Seed attivo e non con Server Seed già aperto.
10) Bandiere rosse nell'operatore
Nessun server pubblico Seed Hash prima dell'inizio del periodo.
Non è possibile impostare il Client Seed o visualizzare nonce.
Non esiste una formula pubblica di mapping per l'hashtag nel moltiplicatore.
La cronologia dei giri non fornisce un minimo di dati da analizzare.
Il formato e l'algoritmo sono stati modificati senza la notifica o l'archivio delle specifiche.
11) Contesto australiano (AU)
Valuta: tenere conto delle vincite/scommesse in AUD, conservare i download delle storie (supporto, controversie).
Gioco responsabile (RG) - limiti di deposito/tempo, pause e auto-esclusione - disponibili in applicazioni in buona fede; Usateli.
Prassi di piattaforma: per gli operatori in buona fede, Fairness/Provably Fair contiene una descrizione completa e esempi di verifica; la mancanza di dettagli è il motivo per scegliere un altro servizio.
12) Totale
Controllare l'esito di Crash è una procedura chiara:- compressione della committente'Server Seed Hash ',
- ripristino dì RoundHash "per Server Seed, Client Seed, nonce e algoritmo,
- applicazione della formula di mapping e delle regole di arrotondamento pubblicate,
- un moltiplicatore identico nella tua prova e nella storia del gioco.
Tenete il vostro script, regolate i dati di input e controllate periodicamente i round casuali. Quindi lei conferma l'onestà, non a parole, ma matematicamente.