ΤάβλιPearl

Ζάρια που επαληθεύεις

Επαλήθευσε τα ζάρια μιας παρτίδας

Όταν τελειώσει η παρτίδα ή το ματς, πάτα τη σφραγίδα στην κάρτα του αποτελέσματος και μετά «Επαλήθευσε αυτά τα ζάρια». Αυτή η σελίδα ανοίγει με όλα συμπληρωμένα, και το πρόγραμμα περιήγησής σου υπολογίζει ξανά τη σφραγίδα και κάθε ζαριά, χωρίς να στείλει πουθενά τα στοιχεία της παρτίδας.

Η καρτέλα των ζαριών στην εφαρμογή τον δείχνει όταν τελειώσει η παρτίδα ή, σε ματς, όταν τελειώσει το ματς. Πάτα τον εκεί για να τον αντιγράψεις. Ως τότε μένει κλειστός, επίτηδες.
Αν το αφήσεις κενό, η σελίδα δείχνει τη σφραγίδα του παραπάνω σπόρου.
Με τη σειρά που τους δείχνει η καρτέλα των ζαριών. Όταν παίζεις με τον υπολογιστή χωρίς ίντερνετ, υπάρχει μόνο ο δικός σου.
Οι ζαριές αριθμούνται από το 1 σε όλο το ματς. Μετράνε και οι πρώτες ζαριές, και σε ένα ματς η αρίθμηση συνεχίζει από παρτίδα σε παρτίδα.
Οι ζαριές όπως τις δείχνει η καρτέλα των ζαριών, με ή χωρίς τον αριθμό τους. Αν τις επικολλήσεις, κάθε ζαριά συγκρίνεται και δεν εμφανίζεται απλώς.

Πώς υπολογίζεται μια ζαριά

Ο ίδιος κώδικας τρέχει στην εφαρμογή και στον διακομιστή, και αυτή η σελίδα είναι αντίγραφό του. Κάθε ζαριά ενός ματς βγαίνει από ένα HMAC:

mac   = HMAC-SHA256(κλειδί = τα bytes του σπόρου του διακομιστή,
                    μήνυμα = σπόροςΚινητού1 ":" σπόροςΚινητού2 ":" αριθμόςΖαριάς)
byte  = το πρώτο byte του mac που είναι κάτω από 252
v     = byte mod 36
ζάρια = (floor(v / 6) + 1,  v mod 6 + 1)

Το 252 είναι 7 × 36, οπότε καθεμία από τις 36 διατεταγμένες ζαριές έχει την ίδια πιθανότητα. Τα bytes από 252 έως 255 παραλείπονται, γιατί αν τα κρατούσαμε θα ευνοούσαν λίγο τις τέσσερις πρώτες από τις 36 ζαριές. Αν κανένα από τα 32 bytes δεν είναι κάτω από 252 (πιθανότητα περίπου 2-192, πολύ μικρή για να το περιμένει κανείς), προστίθεται ένα + μετά τους σπόρους των κινητών και το MAC υπολογίζεται ξανά: σπόροςΚινητού1:σπόροςΚινητού2+:αριθμόςΖαριάς, μετά ++, και ούτω καθεξής.

Η σφραγίδα που φαίνεται πριν από την πρώτη ζαριά είναι το SHA-256(τα bytes του σπόρου του διακομιστή) σε δεκαεξαδική μορφή. Ο σπόρος του διακομιστή έχει 16 έως 64 bytes, και το παιχνίδι χρησιμοποιεί 32. Ο σπόρος ενός κινητού έχει 1 έως 128 χαρακτήρες από γράμματα, ψηφία, _ και -, και η εφαρμογή φτιάχνει 32 δεκαεξαδικούς χαρακτήρες.

Γιατί δουλεύει

Η σφραγίδα είναι στο τραπέζι πριν από την πρώτη ζαριά, οπότε ο διακομιστής δεν μπορεί να αλλάξει τον σπόρο του αφού δει πώς πάει η παρτίδα: θα άλλαζε και η σφραγίδα. Το κινητό σου βγάζει τον δικό του σπόρο αφού φανεί η σφραγίδα, οπότε ο διακομιστής δεν μπορεί να διαλέξει σπόρο που να τον βολεύει. Κάθε ζαριά εξαρτάται και από τους δύο, και εσύ έχεις όλα όσα χρειάζονται για να τις υπολογίσεις ξανά.

Αν η σελίδα δείξει ζαριά διαφορετική από αυτή που είδες στο ταμπλό, ή σφραγίδα που δεν ταιριάζει, κράτα τον σύνδεσμο και γράψε μας στο [email protected]. Θέλουμε να το μάθουμε.

Σύνδεσμος σε αυτή τη σελίδα

Το κουμπί «Επαλήθευσε αυτά τα ζάρια» στην εφαρμογή ανοίγει αυτή τη σελίδα με όλα όσα υπάρχουν μετά το # του συνδέσμου, το κομμάτι που το πρόγραμμα περιήγησής σου δεν στέλνει ποτέ σε διακομιστή: /el/check/#v=1&s=…&c=…&p=a,b&r=6344…&g=52,48. Το s είναι ο σπόρος του διακομιστή, το c η σφραγίδα, το p οι σπόροι των κινητών με τη σειρά των παικτών, το r κάθε ζαριά ως δύο ψηφία με τη σειρά που ρίχτηκαν, και το g, για ματς με περισσότερες παρτίδες, πόσες ζαριές είχε κάθε παρτίδα.