Πώς μπορεί να ελεγχθεί κάθε κλήρωση
Μια κλήρωση είναι δίκαιη μόνο αν κανείς, ούτε ο διοργανωτής ούτε εμείς, δεν μπορεί να επιλέξει ή να προβλέψει τον νικητή. Δες ακριβώς πώς το GetSocialExport αναδεικνύει τους νικητές και πώς ο καθένας μπορεί να ελέγξει μια κλήρωση από το πιστοποιητικό της.
Τα τέσσερα βήματα μιας κλήρωσης
- Η λίστα των συμμετεχόντων κλειδώνει. Η επέκταση του διοργανωτή συλλέγει τα σχόλια, εφαρμόζει τους κανόνες της κλήρωσης και στέλνει τη λίστα των έγκυρων συμμετεχόντων στον διακομιστή μας. Η λίστα μπαίνει σε σταθερή σειρά και το αποτύπωμά της SHA-256 καταγράφεται μαζί με την ώρα. Από εκεί και πέρα, η αλλαγή έστω και ενός ονόματος θα άλλαζε το αποτύπωμα.
- Επιλέγεται ένας μελλοντικός τυχαίος αριθμός. Εκείνη τη στιγμή ο διακομιστής επιλέγει έναν γύρο drand που θα δημοσιευτεί μόνο περίπου 30 δευτερόλεπτα αργότερα. Το drand είναι μια δημόσια πηγή τυχαιότητας που λειτουργεί το League of Entropy (Cloudflare, Protocol Labs, πανεπιστήμια και άλλοι): οι αριθμοί του δεν μπορούν ούτε να προβλεφθούν ούτε να επηρεαστούν, και ο καθένας φέρει μια υπογραφή που μπορεί να ελέγξει οποιοσδήποτε.
- Υπολογίζονται οι νικητές. Μόλις δημοσιευτεί ο γύρος, δημιουργείται ένας σπόρος από τον κωδικό της κλήρωσης, τον αριθμό της κλήρωσης, το αποτύπωμα της λίστας και τον τυχαίο αριθμό. Οι νικητές επιλέγονται από αυτόν τον σπόρο με SHA-256, χωρίς μεροληψία, δίνοντας επιπλέον βάρος μόνο στους συμμετέχοντες με επιπλέον συμμετοχές που ορίζουν οι κανόνες.
- Όλα δημοσιεύονται. Το πιστοποιητικό δείχνει τους νικητές, το αποτύπωμα, τον γύρο, τον σπόρο, την ώρα που κλείδωσε η λίστα, κάθε επανακλήρωση με τον λόγο της και (εκτός αν ο διοργανωτής την έκανε ιδιωτική) την πλήρη λίστα των συμμετεχόντων.
Τι μπορείς να ελέγξεις σε ένα πιστοποιητικό
Άνοιξε οποιοδήποτε πιστοποιητικό (σάρωσε τον κωδικό QR του) και το πρόγραμμα περιήγησής σου το ελέγχει μόνο του, χωρίς να χρειάζεται να μας εμπιστευτείς:
- η δημοσιευμένη λίστα συμμετεχόντων ταιριάζει με το αποτύπωμα που καταγράφηκε πριν από την κλήρωση·
- ο τυχαίος αριθμός προέρχεται από το drand, με έγκυρη υπογραφή BLS του League of Entropy·
- η λίστα κλείδωσε πριν υπάρξει αυτός ο τυχαίος αριθμός·
- ο επανυπολογισμός της κλήρωσης δίνει ακριβώς τους ίδιους νικητές.
Μπορείς επίσης να πληκτρολογήσεις το όνομά σου στο Συμμετείχες; για να επιβεβαιώσεις ότι ήσουν στην κλήρωση, ακόμα κι αν ο διοργανωτής κρατά τη λίστα ιδιωτική.
Τι δεν αποδεικνύει ένα πιστοποιητικό
Η ίδια η κλήρωση είναι αποδεδειγμένα δίκαιη. Το πιστοποιητικό δεν μπορεί να αποδείξει ότι ο διοργανωτής εφάρμοσε λογικούς κανόνες ή ότι παρέδωσε το έπαθλο. Η λίστα των συμμετεχόντων προέρχεται από την επέκταση του ίδιου του διοργανωτή· γι’ αυτό δημοσιεύεται ώστε να μπορούν να την ελέγξουν οι συμμετέχοντες, και γι’ αυτό κάθε επανακλήρωση εμφανίζεται με τον λόγο της.
Τεχνικές λεπτομέρειες
- Αλγόριθμος:
socialexport-draw-v1. Κανονική λίστα: μία γραμμή ανά συμμετέχοντα,id⇥name⇥tickets, ταξινομημένη κατά id, με αλλαγές γραμμής ανάμεσα· αποτύπωμα = SHA-256 αυτού του κειμένου. - Τυχαιότητα: δίκτυο drand
quicknet, αλυσίδα52db9ba70e0cc0f6…, ένας γύρος κάθε 3 s, υπογραφές BLS στο G1 (RFC 9380). - Σπόρος: SHA-256 του ονόματος του αλγορίθμου, του κωδικού της κλήρωσης, του αριθμού της κλήρωσης, του αποτυπώματος της λίστας, του γύρου και της τυχαιότητας, με αλλαγές γραμμής ανάμεσα.
- Επιλογή: το SHA-256(σπόρος ‖ μετρητής) δίνει αριθμούς 64 bit· οι τιμές πάνω από το μεγαλύτερο πολλαπλάσιο του εύρους απορρίπτονται (χωρίς μεροληψία modulo)· κάθε επιλογή αφαιρεί τον νικητή και τις συμμετοχές του.
- Τα πιστοποιητικά υπογράφονται από τον διακομιστή μας (ECDSA P-256) για να αποδεικνύεται πότε καταγράφηκε κάθε λίστα. Δημόσιο κλειδί:
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQdshCP/QsGG2k29W80CHSmWbwYpBNgrrIjTf0qPyQuB8cXXLxsCRaty97SO44XaM3aYr6PMwI4dYc/MnSQ3/aw==
