Jak można sprawdzić każde losowanie
Losowanie jest uczciwe tylko wtedy, gdy nikt — ani organizator, ani my — nie może wybrać ani przewidzieć zwycięzcy. Oto dokładnie, jak GetSocialExport losuje zwycięzców i jak każdy może sprawdzić losowanie na podstawie jego certyfikatu.
Cztery kroki losowania
- Lista uczestników zostaje zamknięta. Rozszerzenie organizatora zbiera komentarze, stosuje reguły giveawaya i wysyła listę uprawnionych uczestników na nasz serwer. Lista zostaje ułożona w ustalonej kolejności, a jej odcisk SHA-256 zapisany wraz z czasem. Od tej chwili zmiana choćby jednego nazwiska zmieniłaby odcisk.
- Wybierana jest przyszła liczba losowa. W tym momencie serwer wybiera rundę drand, która zostanie opublikowana dopiero około 30 sekund później. drand to publiczny generator losowości prowadzony przez League of Entropy (Cloudflare, Protocol Labs, uczelnie i inni): jego liczb nie da się przewidzieć ani na nie wpłynąć, a każda z nich nosi podpis, który każdy może sprawdzić.
- Zwycięzcy są obliczani. Gdy runda zostanie opublikowana, z kodu giveawaya, numeru losowania, odcisku listy i liczby losowej tworzony jest seed. Zwycięzcy są wybierani z tego seeda za pomocą SHA-256, bez stronniczości, nadając dodatkową wagę jedynie uczestnikom z losami bonusowymi określonymi w regułach.
- Wszystko zostaje opublikowane. Certyfikat pokazuje zwycięzców, odcisk, rundę, seed, czas zamknięcia listy, każde ponowne losowanie wraz z jego powodem oraz (o ile organizator nie ustawił jej jako prywatnej) pełną listę uczestników.
Co możesz sprawdzić w certyfikacie
Otwórz dowolny certyfikat (zeskanuj jego kod QR), a Twoja przeglądarka sprawdzi go sama, bez potrzeby zaufania nam:
- opublikowana lista uczestników zgadza się z odciskiem zapisanym przed losowaniem;
- liczba losowa pochodzi z drand, z ważnym podpisem BLS od League of Entropy;
- lista została zamknięta, zanim ta liczba losowa zaistniała;
- ponowne przeliczenie losowania daje dokładnie tych samych zwycięzców.
Możesz też wpisać swoje imię w polu Czy brałeś udział?, aby potwierdzić, że byłeś w losowaniu, nawet gdy organizator trzyma listę prywatnie.
Czego certyfikat nie dowodzi
Samo losowanie jest uczciwe w sposób, który można udowodnić. Certyfikat nie może udowodnić, że organizator zastosował rozsądne reguły ani że wręczył nagrodę. Lista uczestników pochodzi z własnego rozszerzenia organizatora — dlatego jest publikowana, by uczestnicy mogli ją sprawdzić, i dlatego każde ponowne losowanie jest pokazywane wraz z powodem.
Szczegóły techniczne
- Algorytm:
socialexport-draw-v1. Lista kanoniczna: jedna linia na uczestnika,id⇥nazwa⇥losy, posortowana według id, połączona znakami nowej linii; odcisk = SHA-256 tego tekstu. - Losowość: sieć drand
quicknet, łańcuch52db9ba70e0cc0f6…, jedna runda co 3 s, podpisy BLS na G1 (RFC 9380). - Seed: SHA-256 z nazwy algorytmu, kodu giveawaya, numeru losowania, odcisku listy, rundy i wartości losowej, połączonych znakami nowej linii.
- Wybór: SHA-256(seed ‖ licznik) daje liczby 64-bitowe; wartości powyżej największej wielokrotności zakresu są odrzucane (brak błędu modulo); każdy wybór usuwa zwycięzcę i jego losy.
- Certyfikaty są podpisywane przez nasz serwer (ECDSA P-256), aby potwierdzić, kiedy zapisano każdą listę. Klucz publiczny:
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQdshCP/QsGG2k29W80CHSmWbwYpBNgrrIjTf0qPyQuB8cXXLxsCRaty97SO44XaM3aYr6PMwI4dYc/MnSQ3/aw==
