Weryfikacja

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

  1. 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.
  2. 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ć.
  3. 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.
  4. 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ńcuch 52db9ba70e0cc0f6…, 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==

Przeprowadź własne zweryfikowane losowanie →