Spinvolta

Adillik nasıl sağlanır

Önce şans. Sonra animasyon. Önemli olduğunda doğrulanabilir.

1. Her sonuç kriptografik bir rastgele üreteçten gelir

Spinvolta sonuçları crypto.getRandomValues() ile çeker: her modern tarayıcı ve işletim sisteminde bulunan, şifreleme anahtarları oluşturmak için kullanılan kriptografik olarak güvenli rastgele sayı üreteci. Hiçbir karar için Math.random() kullanmayız. (Bir konfeti parçasının nereye uçacağı gibi tamamen süs amaçlı şeyler kullanabilir.)

2. Mod sapması yok

32 bitlik rastgele bir sayı, örneğin 7 seçeneğe her zaman eşit bölünemez: 4.294.967.296 sayısı 7'nin katı değildir, bu yüzden basit sayı % 7 bazı seçenekleri azıcık daha olası yapar. Spinvolta reddetmeli örnekleme kullanır: sayı aralığın tepesindeki eşit olmayan artığa düşerse atılır ve yenisi çekilir. Böylece seçenek sayısı ne olursa olsun her seçeneğin şansı tam olarak eşittir.

3. Ağırlıklar kesindir

Ağırlıklı modda 1, 2,5 veya 0,125 gibi ağırlıklar ortak bir ölçekte tam sayılara çevrilir ve kesin olarak toplanır. Toplam üzerinden tek bir düzgün çekiliş kazananı seçer; ağırlığı 2 olan bir seçeneğin şansı, ağırlığı 1 olanın tam iki katıdır — ve çarktaki dilim boyutları bu kesin olasılıkları gösterir.

4. Tekrarsız çoklu kazanan

Çoklu kazanan, takımlar, rastgele sıralama, kart karıştırma ve çekilişler yansız Fisher–Yates karıştırması kullanır (aynı reddetmeli örneklemeyle); olası her sıralama veya kazanan grubu eşit olasılıklıdır.

5. Önce sonuç, sonra animasyon

Çevir'e bastığında kazanan, çark hareket etmeden önce belirlenir. Ardından bir çözücü, kazanan dilimin içinde, kenarlardan uzak rastgele bir noktada duracak bir hareket hesaplar — hız alma, hız, tur sayısı, sondaki hafif sallanma. Daha sert fırlatmak, daha uzun dönüş seçmek veya elle durdurmak yalnızca görünümü değiştirir. Otomatik testlerimiz binlerce rastgele dönüşü kontrol ederek animasyonun her zaman önceden çekilen sonuçta durduğundan ve komşu dilime kaymadığından emin olur.

6. Çekilişler ve odalar için kanıtlanabilir adil çekilişler

Çekilişlerde (ve güvenin önemli olduğu her çekilişte) Spinvolta daha da ileri gider; böylece ne bize ne de düzenleyene güvenmen gerekir:

  1. Çekilişten önce tarayıcın tam katılımcı listesini ve ayarları sabitler ve bir parmak izi yayımlar: listenin, ayarların ve gizli bir tohumun SHA-256 özeti. Sunucumuz onu ne zaman aldığını kaydeder.
  2. Parmak izi, drand League of Entropy rastgelelik kaynağının gelecekteki bir turunu belirtir — dünyanın dört bir yanındaki bağımsız kuruluşlarca 3 saniyede bir üretilen, kimsenin tahmin edemeyeceği veya seçemeyeceği herkese açık bir değer.
  3. O tur yayımlandığında kazananlar parmak izi, kaynak değeri ve tohumdan hesaplanır.
  4. Kanıt sayfası her şeyi gösterir. Herkes Doğrula'ya basarak kaynağın kriptografik imzası dahil her şeyi kendi tarayıcısında yeniden hesaplayabilir.

Düzenleyen kazananı seçemez, çünkü liste sabitlendiğinde kaynak değeri henüz yoktu. Biz de seçemeyiz, çünkü parmak izi sabitlenmeden tohumu asla görmeyiz ve drand'ı kontrol etmeyiz. Kaynağa ulaşılamazsa çekiliş, açıkça belirtilen bir taahhüt-açıklama yöntemine geçer.

7. İstatistiksel olarak test edildi

Test paketimiz her değişiklikte yüz binlerce simüle çekiliş üzerinde ki-kare uyum testleri çalıştırır; tam pakette bir milyonun üzerinde: düzgün seçimler, ağırlıklı seçimler, karıştırmalar ve çoklu kazanan konumları. Kendi sürümünü adillik testi sayfasında çalıştırabilirsin.

Kanıtlayamadığımız şey

Gündelik bir çevirişte, tarayıcında çalışan kodun anlattığımız kod olduğuna güvenirsin. Kod tamamen cihazında çalışır ve tarayıcının geliştirici araçlarıyla inceleyebilirsin. İş ciddileştiğinde — ödüller, herkese açık çekilişler — kimseye güvenmeyi gerektirmeyen kanıtlanabilir adil bir çekiliş kullan.

Sık sorulan sorular

Çarka hile karıştırılabilir mi?

Animasyonla değil: sonuç önce adilce çekilir ve hareket onu göstermek için hesaplanır. Olasılıkları değiştirmenin tek yolu ağırlıklı moddur; o da “Ağırlıklı çark” etiketi gösterir ve dilimleri orantılı çizer.

Neden aynı isim art arda iki kez çıktı?

Çünkü gerçek rastgelelikte seriler vardır. 10 seçenekte aynı seçeneğin art arda iki kez çıkma olasılığı %10'dur. Her seçeneğin yalnızca bir kez çıkmasını istiyorsan eleme modunu kullan.

drand nedir?

drand, bağımsız üniversiteler, şirketler ve kuruluşlardan oluşan League of Entropy tarafından işletilen dağıtık bir rastgelelik kaynağıdır. Birkaç saniyede bir yeni ve doğrulanabilir bir rastgele değer yayımlar.