Spinvolta

Paano gumagana ang pagkapatas

Random muna. Animation pagkatapos. Mave-verify kapag mahalaga.

1. Galing sa cryptographic random generator ang bawat resulta

Bumubunot ang Spinvolta ng resulta gamit ang crypto.getRandomValues(), ang cryptographically secure na random number generator na nasa bawat modernong browser at operating system — ang parehong pinagmumulan ng encryption keys. Hindi kami kailanman gumagamit ng Math.random() para magpasya. (Ang mga pandekorasyon lang, tulad ng kung saan lilipad ang confetti, ang puwedeng gumamit nito.)

2. Walang modulo bias

Hindi palaging pantay na mahahati ang 32-bit na random na numero sa, halimbawa, 7 pagpipilian: hindi multiple ng 7 ang 4,294,967,296, kaya ang simpleng number % 7 ay nagbibigay ng bahagyang mas malaking tsansa sa ilang pagpipilian. Gumagamit ang Spinvolta ng rejection sampling: kapag bumagsak ang numero sa hindi pantay na sobra sa dulo ng range, itinatapon ito at bumubunot ng bago. Kaya eksaktong pantay ang tsansa ng bawat pagpipilian, kahit ilan pa ang entry.

3. Eksakto ang weights

Sa weighted mode, ginagawang buong numero sa iisang scale ang weights tulad ng 1, 2.5 o 0.125 at eksaktong pinagsasama. Isang uniform na bunot sa kabuuan ang pumipili ng panalo, kaya eksaktong doble ang tsansa ng entry na may weight 2 kumpara sa weight 1 — at ipinapakita ng laki ng bahagi sa gulong ang eksaktong tsansang iyon.

4. Maraming panalo nang walang ulit

Gumagamit ang multi-pick, team, random order, card shuffle at giveaway ng walang-kiling na Fisher–Yates shuffle (na may parehong rejection sampling), kaya pantay ang tsansa ng bawat posibleng pagkakasunod o grupo ng panalo.

5. Resulta muna, animation pagkatapos

Kapag pinindot mo ang Paikutin, napagpapasyahan ang panalo bago gumalaw ang gulong. Tapos kinakalkula ng solver ang galaw — pag-atras, bilis, ilang ikot, ang bahagyang pag-uga sa dulo — na eksaktong hihinto sa loob ng panalong bahagi, sa random na puwesto na malayo sa gilid. Ang mas malakas na flick, mas mahabang ikot o manual stop ay itsura lang ang binabago. Sinusuri ng automated tests namin ang libu-libong random na ikot para siguraduhing laging humihinto ang animation sa nabunot nang resulta at hindi lumilihis sa katabi.

6. Mapapatunayang patas na bunutan para sa giveaway at room

Para sa giveaway (at kahit anong bunutang mahalaga ang tiwala), may dagdag na hakbang ang Spinvolta para hindi mo na kailangang magtiwala sa amin o sa host:

  1. Bago ang bunutan, ini-lock ng browser mo ang eksaktong listahan at settings at naglalathala ng fingerprint — SHA-256 hash ng listahan, settings at isang lihim na seed. Itinatala ng server namin kung kailan ito natanggap.
  2. Pinapangalanan ng fingerprint ang isang darating na round ng drand League of Entropy randomness beacon — pampublikong halaga na ginagawa kada 3 segundo ng mga independiyenteng organisasyon sa buong mundo, na walang makakahula o makakapili.
  3. Kapag nailathala ang round na iyon, kinakalkula ang mga panalo mula sa fingerprint, beacon value at seed.
  4. Nasa proof page ang lahat. Kahit sino ay puwedeng pindutin ang I-verify para kalkulahin ulit sa sarili nilang browser, kasama ang pag-check sa cryptographic signature ng beacon.

Hindi mapipili ng host ang panalo dahil wala pa ang beacon value noong ma-lock ang listahan. Hindi rin namin kaya, dahil hindi namin nakikita ang seed bago ma-lock ang fingerprint at hindi namin kontrolado ang drand. Kapag hindi maabot ang beacon, lilipat ang bunutan sa malinaw na may-label na commit-reveal na bunutan.

7. Sinubok sa estadistika

Nagpapatakbo ang test suite namin ng chi-square goodness-of-fit tests sa daan-daang libong simulated na bunutan sa bawat pagbabago, at higit sa isang milyon sa buong suite: uniform na pagpili, weighted na pagpili, shuffles at posisyon sa multi-pick. Puwede mong patakbuhin ang sarili mong bersyon sa fairness audit page.

Ang hindi namin mapapatunayan

Sa karaniwang ikot, nagtitiwala ka na ang code na tumatakbo sa browser mo ay ang code na inilalarawan namin. Buo itong tumatakbo sa device mo, at puwede mo itong suriin gamit ang developer tools ng browser. Kapag mas mataas ang taya — premyo, pampublikong bunutan — gumamit ng mapapatunayang patas na bunutan, na hindi nangangailangan ng tiwala sa kahit sino.

Mga madalas itanong

Puwede bang dayain ang gulong?

Hindi sa animation: patas na binubunot muna ang resulta at kinakalkula ang galaw para ipakita ito. Ang weighted mode lang ang paraan para baguhin ang tsansa, at may “Weighted na gulong” badge ito at iginuguhit ang laki ng bahagi nang tugma.

Bakit lumabas nang dalawang beses nang sunod ang iisang pangalan?

Kasi may sunod-sunod talaga ang tunay na randomness. Sa 10 entry, 10% ng pagkakataon na magkasunod na lalabas ang iisang entry. Gamitin ang elimination mode kung gusto mong isang beses lang bawat entry.

Ano ang drand?

Ang drand ay distributed na randomness beacon na pinapatakbo ng League of Entropy, grupo ng mga independiyenteng unibersidad, kumpanya at organisasyon. Naglalathala ito ng bagong mave-verify na random na halaga kada ilang segundo.