fairnessprovably fairdice
Ναι, μπορεί. Τα online ζάρια ρίχνονται σε έναν server που δεν βλέπεις, και τίποτα δεν εμποδίζει φυσικά έναν διαχειριστή να αλλάξει έναν αριθμό πριν φτάσει στο ταμπλό σου. Τα αποτελέσματα από μόνα τους δεν θα το αποδείξουν ποτέ, προς καμία κατεύθυνση. Άρα το τίμιο ερώτημα δεν είναι αν το στήσιμο είναι δυνατό, αλλά αν ένα παιχνίδι μπορεί να αποδείξει ότι δεν συνέβη.
Φτιάχνουμε ένα παιχνίδι ταβλιού, οπότε δεν είμαστε ουδέτεροι εδώ. Ακριβώς γι' αυτό θέλουμε να απαντήσουμε σωστά, μαζί με τα άβολα κομμάτια.
Γιατί τα ζάρια μοιάζουν στημένα σε κάθε site;
Επειδή η διακύμανση του ταβλιού είναι σκληρή και η ανθρώπινη μνήμη μεροληπτική. Υπάρχουν τριάντα έξι τρόποι να πέσουν δύο ζάρια, τα σερί δεν είναι σφάλμα αλλά εγγύηση, και κάπου απόψε ένας τίμιος server θα φέρει τέσσερις διπλές στη σειρά σε κάποιον που έπαιξε κάθε πούλι σωστά. Θυμάσαι το 5-5 που χτύπησε το ανοιχτό σου πούλι. Δεν θυμάσαι τη ζαριά θαύμα που σε έσωσε την περασμένη Τρίτη. Οι ήττες κολλάνε, οι διασώσεις εξατμίζονται, και μετά από τρία κακά παιχνίδια στη σειρά τα ζάρια γίνονται προσωπικό θέμα. Γίνονται προσωπικό θέμα και σε αληθινό ταμπλό, σε αληθινό καφενείο. Ρώτα οποιονδήποτε σπρώχνει ξύλινα πούλια σαράντα χρόνια.
Και εδώ είναι η παγίδα. Ένα στημένο παιχνίδι θα έδινε ακριβώς την ίδια αίσθηση. Τα σερί δεν αποδεικνύουν τίποτα προς καμία κατεύθυνση. Αν η απόδειξή σου είναι το πώς ένιωσες τα ζάρια, δεν μπορείς να ξεχωρίσεις έναν τίμιο server από έναν ανέντιμο. Ούτε εμείς μπορούμε. Αυτό δεν είναι υπεράσπιση των online ζαριών. Αυτό είναι το πρόβλημά τους.
Θα μπορούσε όντως ένα site να στήσει τα ζάρια του;
Τεχνικά ναι, και δεν θα ήταν καν δύσκολο. Ο server βλέπει όλο το ταμπλό πριν ρίξει. Ένας διαχειριστής που ήθελε να κλέψει θα μπορούσε:
- Να γείρει λίγες ζαριές στις εκατό στις στιγμές που μετράνε περισσότερο: τη ζαριά που χτυπά, την είσοδο που αποτυγχάνει, τη διπλή που γυρίζει ένα χαμένο παιχνίδι.
- Να κρατά τα παιχνίδια τεχνητά κοντά, ώστε οι συνεδρίες να κρατούν περισσότερο και οι ήττες να μοιάζουν με παρ' ολίγον νίκες.
- Να ευνοεί αθόρυβα μια πλευρά σε παιχνίδι όπου ο διαχειριστής έχει συμφέρον.
- Να το κάνει τόσο σπάνια ώστε τα ζάρια να περνούν ακόμα κάθε στατιστικό τεστ που θα μπορούσε ποτέ να τρέξει ένας παίκτης.
Δεν ισχυριζόμαστε ότι κάποιο συγκεκριμένο site το κάνει. Λέμε ότι η αρχιτεκτονική το επιτρέπει. Ένας κλειστός server είναι ένα κλειδωμένο δωμάτιο: ο διαχειριστής ρίχνει ιδιωτικά, αναφέρει έναν αριθμό και σου ζητά να τον πάρεις τοις μετρητοίς. Έξω από την πόρτα, τίμιοι και ανέντιμοι διαχειριστές φαίνονται πανομοιότυποι.
Το πιστοποιημένο RNG δεν αποδεικνύει ότι τα ζάρια είναι δίκαια;
Διάβασε τι καλύπτει πραγματικά το πιστοποιητικό. Ένα εργαστήριο δοκιμάζει μια γεννήτρια: έναν αλγόριθμο σε πάγκο, που παράγει εκατομμύρια αριθμούς οι οποίοι περνούν στατιστικούς ελέγχους. Αυτό πιστοποιεί το εξάρτημα. Δεν λέει τίποτα για την παράδοση, δηλαδή για το αν ο αριθμός που έφτασε στο ταμπλό σου βγήκε από εκείνη τη γεννήτρια, εκείνη τη στιγμή, χωρίς καμία τροποποίηση στη διαδρομή. Μια πιστοποιημένη ζυγαριά στην αποθήκη δεν αποδεικνύει ότι το ψωμί σου ζυγίστηκε σε αυτήν.
Η πιστοποίηση είναι επίσης ένα στιγμιότυπο. Οι ζωντανοί servers ξαναβγαίνουν σε παραγωγή συνεχώς, και η διαδρομή του κώδικα ανάμεσα στη γεννήτρια και το παιχνίδι σου συνεχίζει να αλλάζει πολύ αφού το εργαστήριο έχει φύγει. Άρα το πιστοποιημένο RNG απαντά σε μια ερώτηση που κανείς δεν έκανε πραγματικά. Η ερώτηση που μετράει δεν είναι αν υπάρχουν καλά ζάρια κάπου στο κτίριο. Είναι αν το δικό σου παιχνίδι τα πήρε, σε κάθε ζαριά, απόψε.
Τι αλλάζει στην πράξη το commit-reveal;
Μετατρέπει τη δικαιοσύνη από υπόσχεση σε απόδειξη. Πριν ξεκινήσει ένα παιχνίδι, ο server τραβά έναν μυστικό σπόρο και δημοσιεύει το αποτύπωμά του, ένα hash SHA-256 που λέγεται δέσμευση. Κάθε ζαριά του παιχνιδιού παράγεται μετά από αυτόν τον σπόρο, ένας υπολογισμός HMAC-SHA256 ανά ζαριά, με τη σειρά. Όταν το παιχνίδι τελειώσει, ο server αποκαλύπτει τον σπόρο.
Τώρα οποιοσδήποτε μπορεί να ελέγξει δύο πράγματα. Κάνε hash τον αποκαλυμμένο σπόρο: πρέπει να ταιριάζει με τη δέσμευση που δημοσιεύτηκε πριν από την πρώτη κίνηση. Ξαναϋπολόγισε τις ζαριές: πρέπει να ταιριάζουν με κάθε αριθμό που εμφανίστηκε στο ταμπλό. Αν ο server είχε πειράξει έστω ένα ζάρι αφού είδε τη θέση σου, τα μαθηματικά δεν θα έβγαιναν. Το στήσιμο παύει να είναι μια υποψία που δεν ελέγχεται και γίνεται ένα ψέμα που πιάνεται.
Ζάρια που κλειδώθηκαν πριν το παιχνίδι δεν μπορούν να αντιδράσουν σε αυτό.
Εδώ είναι η καρδιά του θέματος. Το χρήσιμο στήσιμο είναι αντιδραστικό: βλέπεις το ανοιχτό πούλι, φέρνεις τη ζαριά που χτυπά. Το commit-reveal παίρνει από τον server τα μάτια του, γιατί ολόκληρη η ακολουθία είχε οριστεί πριν από την πρώτη κίνηση και κάθε παρέμβαση μετά τη δέσμευση είναι μαθηματικά ανιχνεύσιμη. Αυτό που δεν κάνει είναι να κάνει τα ζάρια ευγενικά. Η ακολουθία ήταν τίμια, όχι φιλεύσπλαχνη. Θα ξανακαθίσεις στη μπάρα την χειρότερη δυνατή στιγμή, και τώρα θα μπορείς να αποδείξεις ότι ήταν δίκαιο.
Πώς επαληθεύεις ένα παιχνίδι στην πράξη;
Έτσι το χτίσαμε στο Orion. Κάθε παιχνίδι στους servers μας κουβαλά μια δέσμευση που δημιουργήθηκε πριν από την πρώτη ζαριά, ο server επικυρώνει κάθε ζωντανή κίνηση στην πηγή, και ο έλεγχος ενός τελειωμένου παιχνιδιού παίρνει περίπου ένα λεπτό:
Άνοιξε τον επαληθευτή. Πήγαινε στο orion.arthea.ai/verify από οποιονδήποτε browser. Τίποτα για εγκατάσταση, κανένας λογαριασμός.
Βάλε το ID του παιχνιδιού. Κάθε παιχνίδι server στο Orion έχει ένα. Επικόλλησέ το.
Άσε τον browser σου να κάνει τα μαθηματικά. Η σελίδα ξαναϋπολογίζει τη δέσμευση και κάθε ζαριά με Web Crypto, τοπικά, στον browser σου. Ο λόγος μας δεν είναι μέρος του ελέγχου. Αν είχε αλλάξει έστω ένας αριθμός, ο επανυπολογισμός θα το έλεγε.
Ο επαληθευτής είναι ήδη ζωντανός. Το ίδιο το παιχνίδι είναι έτοιμο. Η πόρτα στο orion.arthea.ai/go κουβαλά τους συνδέσμους για App Store και Google Play και δείχνει πάντα τι είναι διαθέσιμο αυτή τη στιγμή. Έτσι κι αλλιώς, η τίμια απάντηση ισχύει. Ναι, το online τάβλι μπορεί να είναι στημένο. Η λύση δεν είναι μια ωραιότερη υπόσχεση. Είναι ζάρια που δείχνουν τους λογαριασμούς τους.