Ελέγξτε το αποτέλεσμα του παιχνιδιού Crash: αλγόριθμος, ασφάλεια

1) Σκοπός της επαλήθευσης: τι ακριβώς επιβεβαιώνετε

Αναποτελεσματικότητα: ο χειριστής δεν μπορούσε να αλλάξει το αποτέλεσμα μετά το στοίχημα (λόγω της δέσμευσης του σπόρου του εξυπηρετητή hash).
Αναπαραγωγιμότητα: Έχοντας είσοδο, παίρνετε τον ίδιο πολλαπλασιαστή που έδειξε το παιχνίδι.
Η ακεραιότητα της διαδικασίας: μορφή μηνύματος, προσαύξηση 'nonce', κανόνας στρογγυλοποίησης και «άκρη σπιτιού» εφαρμόζονται αυστηρά σύμφωνα με τις προδιαγραφές.

2) Στοιχεία χωρίς τα οποία είναι αδύνατη η επαλήθευση

1. Εξυπηρετητής Seed Hash (commit) - δημοσιευμένο πριν από τη χρήση του αντίστοιχου 'Server Seed'.
2. Σπέρμα εξυπηρετητή (γνωστοποιήθηκε αργότερα/στο τέλος της περιόδου).
3. Σπέρμα πελάτη (ο σπόρος σας; μπορείτε να το ρυθμίσετε μόνοι σας ή η πλατφόρμα δημιουργεί).
4. Nonce (ο μετρητής των στοιχημάτων σας στο τρέχον 'Server Seed').
5. Αλγόριθμος Hash (συνήθως 'HMAC-SHA256' ή 'SHA-256').
6. Μορφή μηνύματος (παράδειγμα: '' : "'), ακριβείς οριοθετητές/περίπτωση/κωδικοποίηση.
7. Ο τύπος χαρτογράφησης hash → ένας πολλαπλασιαστής (και ένας κανόνας στρογγυλοποίησης/ελάχιστου).

💡Ολόκληρη η προδιαγραφή θα πρέπει να βρίσκεται στο δίκαιο/δίκαιο τμήμα του φορέα εκμετάλλευσης. Αν κάτι δεν υπάρχει, αυτή είναι μια κόκκινη σημαία (βλ. § 10).

3) Αλγόριθμος επαλήθευσης (7 στάδια)

1. Συγκρίνετε τη δέσμευση: μετρήστε το 'SHA-256 (ServerSeed)' και συγκρίνετε με το δημοσιευμένο 'ServerSeedHash'.
2. Συλλέξτε το μήνυμα: αυστηρά σε μορφή πλατφόρμας (για παράδειγμα, 'msg = ClientSeed + «:» + Nonce').
3. Μετρήστε το στρογγυλό hash:
  • 'HMAC-SHA256': 'RoundHash = (κλειδί = ServerSeed, msg = μήνυμα)',
  • όταν 'SHA-256': 'RoundHash = SHA256 (ServerSeed
  • 4. Απόσπασμα τυχαιότητας: πάρτε τα πρώτα 'k' bits (συχνά 52) τον ακέραιο 'r', στη συνέχεια 'u = r/2 k'.
  • 5. Εφαρμόστε τον τύπο χαρτογράφησης: μετατρέψτε το 'u' σε πολλαπλασιαστή (η άκρη του σπιτιού/ειδικές περιπτώσεις λαμβάνονται υπόψη σύμφωνα με την τεκμηρίωση του παιχνιδιού).
  • 6. Γύρος σύμφωνα με τους κανόνες του παιχνιδιού (για παράδειγμα, μέχρι 2 χαρακτήρες, τουλάχιστον 1. 00 × κ.λπ.).
  • 7. Συγκρίνετε με το σύνολο της ιστορίας. Σύμπτωση = σωστή ειλικρίνεια.

4) Ψευδοκώδικας (μπορεί να προσαρμοστεί για Python/JS)

"'python
Εισάγετε εδώ τον ακριβή τύπο χαρτογράφησης από την πλατφόρμα σας αντί για stub_mapping ()

εισαγωγή hmac, hashlib, μαθηματικά

def round_hash (server_seed: bytes, client_seed: str, nonce: int) -> bytes:
  • Μήνυμα = f "{client _ seed}: {nonce}
  • επιστροφή hmac. νέο (server_seed, μήνυμα, hashlib. sha256). πέψη () ή hashlib. sha256 (...)

def take_u_from_hash (h: ψηφιολέξεις, k_bits=52) -> επίπλευση:
  • Παίρνουμε k πιο σημαντικά κομμάτια στο σύνολό τους r
  • r = int. from_bytes (h, «μεγάλο»)> (256 - k_bits)
  • απόδοση r/( 1 <

def stub_mapping (u: επίπλευση) -> επίπλευση:
  • STUB! Αντικατάσταση με φόρμουλα από την τεκμηρίωση του παιχνιδιού σας
  • Για παράδειγμα, μερικές φορές χρησιμοποιείται ένας μετασχηματισμός της μορφής: συντριβή = δάπεδο ((const/( r + 1)) 100 )/100
  • και/ή «οικιακή άκρη» ως μια σπάνια αναγκαστική 1. 00 ×. Μην χρησιμοποιήσετε αυτό το απόκομμα σε πραγματικό έλεγχο.
  • μέγιστη επιστροφή (1. 00, γύρος (1. 0/max (1e-12, 1. 0 - u), 2))

def επαλήθευση (server_seed_hex, server_seed_hash_hex, client_seed, nonce, shown_multiplier):
  • = ψηφιολέξεις. fromhex (server_seed_hex)
  • 1) Δεσμεύσεις
  • ισχυρίζονται hashlib. sha256 (server_seed). hexdigest () = server_seed_hash_hex. κάτω ()
  • 2-3) Στρογγυλό χασίς
  • h = round_hash (server_seed, client_seed, nonce)
  • 4) u
  • u = take_u_from_hash (h)
  • 5-6) χαρτογράφηση + στρογγυλοποίηση
  • = (u)
  • 7) σύγκριση
  • return abs (calc_mult - shown_multiplier) <1e-9
  • ```

Σημαντικό: αντί για 'stub _ mapping', εφαρμόστε την ακριβή φόρμουλα από το τμήμα Fairness της πλατφόρμας σας? διαφορετικά, ο έλεγχος θα είναι εσφαλμένος.

5) Ειδικές περιπτώσεις και παγίδες

Δύο στοιχήματα σε έναν γύρο: πολλές πλατφόρμες έχουν 'nonce' προσαυξήσεις για κάθε ένα από τα στοιχήματά σας, ακόμη και αν τοποθετούνται στον ίδιο γύρο (παράδειγμα: στοίχημα A → 'nonce = 42', στοίχημα B → 'nonce = 43'). Ελέγξτε από το ιστορικό.
Αλλαγή 'σπόρου πελάτη': Κατά την αλλαγή του σπόρου, το 'nonce' συνήθως επαναφέρεται (ή αρχίζει ένα νέο ρεύμα). Συγκρίνετε τους κανόνες της πλατφόρμας σας.
Batchy 'Server Seed': Ένα 'Server Seed' ενεργεί σε μια σειρά γύρων και στη συνέχεια δημοσιεύεται μια νέα δέσμευση. δεν προκαλούν σύγχυση στους σπόρους από διαφορετικές περιόδους.
Στρογγυλοποίηση/ελάχιστο: αναντιστοιχία στο δεύτερο σύμβολο - στο 90% των περιπτώσεων, σφάλμα στους κανόνες στρογγυλοποίησης/ελάχιστου επιπέδου (για παράδειγμα, σταθερό 1. 00 × υπό ειδικούς όρους).
Κωδικοποίηση/χώροι: πρόσθετος χώρος/τροφοδοσία γραμμής, λάθος περίπτωση, έλεγχος διαλείμματος non-UTF-8.

6) Κατάλογος γρήγορου στρογγυλού ελέγχου

1. Το 'SHA-256 (ServerSeed)' ταιριάζει με το δημοσιευμένο 'ServerSeedHash'
2. Σχηματίζεται σωστά η μορφή 'message' και 'nonce'
3. Αλγόριθμος ('HMAC-SHA256 '/' SHA-256') και σειρά κλειδιών/πεδίων που εφαρμόζεται αυστηρά σύμφωνα με τις προδιαγραφές
4. Η χαρτογράφηση και η στρογγυλοποίηση είναι πανομοιότυπες με την τεκμηρίωση
5. Εάν υπάρχουν ειδικές περιπτώσεις (σπάνιες «στιγμιαίες συγκρούσεις», τουλάχιστον 1. 00 ×, στοματοφύλακες)
6. Το αποτέλεσμα συμπίπτει με την ιστορία του παιχνιδιού στην δεκάρα

7) Αυτοματοποίηση του ελέγχου (πρακτική)

Αρχεία καταγραφής: διατήρηση 'client _ seed', ακολουθία 'nonce', χρονοσφραγίδα, τελικός πολλαπλασιαστής.
Δειγματοληψία: μετά το «βρυχηθμό» του 'Server Seed', εκτελέστε το σενάριο με τυχαίους γύρους 20-50. Ορισμός του ποσοστού αγώνα (πρέπει να είναι 100%).
Παλινδρόμηση: κατά την αλλαγή της έκδοσης του παιχνιδιού/παρόχου, εκτελέστε το ίδιο σύνολο.
Εξαγωγή: αποθήκευση CSV/JSON με πηγές - αυτή είναι η «γραμμή ελέγχου» σας.

8) Ασφάλεια: Πώς να μην κάνετε λάθη και αφήστε τον εαυτό σας να ξεγελαστεί

Ελέγξτε τοπικά/εκτός σύνδεσης: μην βασίζεστε μόνο στον επικυρωτή ιστού του φορέα εκμετάλλευσης. κρατήσει το δικό σας σενάριο.
Μην εμπιστεύεστε τους γύρους χωρίς πλήρες πακέτο δεδομένων: χωρίς τύπο/μορφότυπο - χωρίς επαλήθευση.
Ισχυρό 'σπόρο πελάτη': Ρωτήστε τυχαία, αλλάξτε περιοδικά (αυτό δεν αυξάνει το RTP, αλλά αποκλείει ερωτήσεις σχετικά με την αναπαραγωγιμότητα).
TLS/sessions: Σύνδεση μόνο HTTPS, 2FA, παρακολούθηση καταγραφών ιστορικού και uploads.
Μη δίνετε το 'Server Seed' σε κανέναν: δημοσιεύεται από τον χειριστή μετά την περίοδο. καθήκον σας είναι να επαληθεύσετε, όχι να το «πάρετε» εκ των προτέρων.

9) Τυπικά «λάθη νεοσύλλεκτων»

Αναμειγνύεται η σειρά πεδίου ('Nonce: ClientSeed' αντί του 'ClientSeed: Nonce').
Κόμης 'nonce' από το μηδέν αντί για ένα (ή αντίστροφα).
Χρησιμοποιήθηκε το χασίς ολόκληρου του γύρου της πλατφόρμας (global nonce), αλλά χρειάζεστε το προσωπικό σας «nonce».
Στρογγυλοποίηση τραπεζίτη έναντι δαπέδου/ceil.
Ενεργοποιήστε και μη εκτεθειμένο 'Server Seed'.

10) «Κόκκινες σημαίες» στον χειριστή

Δεν υπάρχει δημόσιος εξυπηρετητής Seed Hash πριν από την έναρξη της περιόδου.
Δεν μπορείτε να ορίσετε τον πελάτη σας σπόρο ή προβολή nonce.
Δεν υπάρχει τύπος χαρτογράφησης του δημόσιου πολλαπλασιαστή hash.
Το ιστορικό των γύρων δεν παρέχει ελάχιστα στοιχεία για τη συμφιλίωση.
Η μορφή και ο αλγόριθμος άλλαξαν χωρίς αρχείο ειδοποίησης/προδιαγραφών.

11) Αυστραλιανό πλαίσιο (ΑΕ)

Νόμισμα: τηρεί αρχεία των κερδών/στοιχημάτων σε AUD, διατηρεί αναρτήσεις ιστοριών (υποστήριξη, αμφιλεγόμενα ζητήματα).
Υπεύθυνο παιχνίδι (RG): Καταθέσεις/προθεσμίες, παύσεις και αυτοαποκλεισμός - διαθέσιμα σε καλόπιστες εφαρμογές. να τα χρησιµοποιείτε.
Πρακτικές πλατφόρμας: για τους καλόπιστους φορείς εκμετάλλευσης, το δίκαιο/δίκαιο μπλοκ περιέχει πλήρη περιγραφή και παραδείγματα επαλήθευσης. η έλλειψη λεπτομερειών αποτελεί λόγο επιλογής άλλης υπηρεσίας.

12) Η τελική γραμμή

Ο έλεγχος της έκβασης ενός παιχνιδιού Crash είναι μια σαφής διαδικασία:
  • επαλήθευση της δέσμευσης 'Server Seed Hash',
  • αποκατάσταση του 'RoundHash' από 'Server Seed', 'Client Seed', 'nonce' και αλγόριθμος,
  • Εφαρμογή του δημοσιευμένου τύπου χαρτογράφησης και των κανόνων στρογγυλοποίησης
  • πανομοιότυπος πολλαπλασιαστής στην κριτική σας και στην ιστορία του παιχνιδιού.

Κρατήστε το δικό σας σενάριο, εισάγετε καταχωρήσεις και ελέγχετε περιοδικά τυχαίους γύρους. Έτσι επιβεβαιώνετε την ειλικρίνεια όχι με λόγια, αλλά μαθηματικά.