Nasıl çalışır?
Algoritmaları, yöntemlerin sınırlarını ve verilerinizin nasıl işlendiğini sade Türkçeyle anlatıyoruz.
Bir kura aracına güvenebilmek için iki şeyi bilmek gerekir: sonuç nereden geliyor ve doğru geldiğini nereden bileceğim. Bu sayfa iki soruyu da sitede kullanılan yöntemlerin adını vererek cevaplıyor. Okumak için matematik bilgisi gerekmiyor; teknik terimleri ilk geçtikleri yerde açıkladık, merak edenler için formülleri de ekledik.
Kısaca: Sitedeki bütün rastgelelik tarayıcınızın kriptografik üretecinden gelir, hesaplar sizin cihazınızda yapılır ve listeleriniz sunucuya gönderilmez. Doğrulanabilir modda sonuç iki şeyin birleşiminden çıkar: organizatörün önceden mühürleyip ilan ettiği gizli bir sayı ve ilan anında henüz var olmayan, herkese açık bir değer. Bu mod, sonucun önceden seçilmesini engelleyecek şekilde tasarlandı ve herkes tarafından doğrulanabilir.
Rastgelelik nereden geliyor?
Sitedeki her çark, kura, zar ve yazı tura rastgeleliği tek bir kaynaktan alır: tarayıcınızın crypto.getRandomValues işlevinden. Bu işlev, işletim sisteminin kriptografik rastgele sayı üretecine bağlıdır. Kriptografik üreteç, şifreleme anahtarı üretmek için tasarlanmış bir kaynaktır; ürettiği sayıları ne kadar uzun izlerseniz izleyin bir sonrakini tahmin edemezsiniz. İşletim sistemi bu üreteci donanımdan ve sistemdeki öngörülemez olaylardan toplanan gürültüyle besler.
JavaScript’te daha yaygın bilinen bir yol daha var: Math.random. Sitede hiç kullanılmaz. Math.random hızlıdır ve basit oyunlar için çoğu zaman yeterlidir, ama güvenlik amacıyla tasarlanmamıştır. Yaygın tarayıcılarda iç durumu yalnızca 128 bitten ibarettir ve yeterince çıktı gözlemleyen biri sonraki değerleri hesaplayabilir; hangi algoritmanın kullanılacağı da tarayıcıdan tarayıcıya değişebilir. Sonucu tartışılabilecek bir kurada “sıradaki sonuç tahmin edilebilir mi?” sorusunun cevabı açıkça hayır olmalıdır.
Bu kural kodda tek bir rastgelelik modülüyle uygulanır. Araçların hiçbiri kendi başına rastgele sayı üretmez; hepsi aynı modülden 32 bitlik sayılar ister. Aşağıda anlatılan algoritmaların tamamı bu sayılarla çalışır.
Modulo sapması ve reddetme örneklemesi
Üretecin verdiği ham sayıyı istediğiniz aralığa çevirmek, göründüğünden daha incelikli bir iştir. En kestirme yol kalan almaktır (mod işlemi): 0 ile 9 arasında bir rakam istiyorsanız rastgele bir sayıyı 10’a bölüp kalana bakarsınız. Sorun şurada: ham sayının alabileceği değer adedi 10’a tam bölünmüyorsa bazı kalanlar ötekilerden daha sık gelir. Buna modulo sapması denir.
Somut bir örnek: bir bayt 0 ile 255 arasında 256 farklı değer alabilir. 256’yı 10’a bölünce 25 tam tur ve 6 artık değer kalır. 0’dan 249’a kadarki 250 değer, 0–9 rakamlarının her birine tam 25’er kez karşılık gelir. Ama geriye kalan 250, 251, 252, 253, 254 ve 255 de mod işleminden sonra 0, 1, 2, 3, 4 ve 5 olur. Sonuçta 0–5 rakamlarının her biri 26 değerle, 6–9 rakamlarının her biri 25 değerle temsil edilir. İlk gruptaki bir rakamın gelme olasılığı 26/256, yani yaklaşık yüzde 10,16; ikinci gruptakinin 25/256, yani yaklaşık yüzde 9,77 olur. Fark küçük görünür, ama binlerce katılımcılı bir kurada bazı sıra numaralarının ötekilerden sistematik olarak daha şanslı olması demektir.
Çözüm, artık değerleri atmaktır. Reddetme örneklemesi denen bu yöntemde üretilen bayt 250 ya da daha büyükse kullanılmaz, yerine yeni bir bayt çekilir. Geriye kalan 250 değer rakamlara tam eşit dağıldığı için her rakamın olasılığı tam olarak yüzde 10 olur. Bu örnekte çekilen değerlerin yalnızca yüzde 2,3 kadarı atılır, yani yöntem pratikte bir yavaşlık yaratmaz.
Sitede bayt yerine 32 bitlik sayılar kullanılır; bunlar yaklaşık 4,3 milyar farklı değer alabilir. Mantık aynıdır: istenen aralıkta n farklı sonuç varsa, 2³² değerin içinde n’nin tam katına sığmayan en üstteki artık değerler reddedilir, kabul edilen sayının n’ye bölümünden kalan sonuç olur. Böylece iki sonuçlu yazı turadan binlerce satırlık bir listeye kadar her aralıkta her sonuç tam olarak eşit olasılıklıdır.
Karıştırma: Fisher–Yates
Sıra kurası, asil-yedek listesi ve takım dağıtımı gibi işlerin temelinde bir listeyi karıştırmak yatar. Sitede bunun için adını yöntemi 1938’de tarif eden iki istatistikçiden, Ronald Fisher ile Frank Yates’ten alan Fisher–Yates algoritması kullanılır. Yöntem, bir torbadan tek tek isim çekip sıraya dizmenin bilgisayardaki karşılığıdır.
Algoritma listenin son sırasından başlar. Baştan bu sıraya kadar olan elemanlar arasından, sıradaki eleman da dahil olmak üzere, tarafsız biçimde biri seçilir ve son sıraya konur; orada duran eleman da seçilenin boşalan yerine geçer. Sonra bir önceki sıraya geçilir ve aynı işlem, yeri henüz kesinleşmemiş elemanlarla tekrarlanır. Listenin başına gelindiğinde her eleman yerini almıştır.
Her adımdaki seçim bir önceki bölümde anlatılan tarafsız tamsayı yöntemiyle yapılır. Bu sayede listenin olası bütün dizilişleri tam olarak eşit olasılıklıdır: 5 kişilik bir listede 120 farklı sıralama vardır ve her biri 120’de bir ihtimalle çıkar. Sık yapılan hatalı yöntemler bu eşitliği bozar; sıralama işlevine rastgele karşılaştırma vermek ya da her adımda listenin tamamından seçim yapmak bazı dizilişleri ötekilerden daha sık üretir.
İsim kurasında karıştırılmış listenin ilk kişileri asil, onları izleyenler yedek olur. Böylece birinci kazanan, ikinci kazanan ve birinci yedek aynı adil sıralamanın ardışık halkalarıdır.
Ağırlıklı seçim: hak sayısı
Bazen herkesin şansı eşit olmamalıdır. Dernek etkinliğinde gönüllü çalışan üyeye çekilişte iki hak verilebilir, halı saha kadrosunu belirlerken maçlara düzenli gelen oyuncunun hakkı artırılabilir. İsim çarkında bir satırın sonuna yıldız ve sayı ekleyerek bunu belirtirsiniz: “Ayşe *3” yazılan satır üç hak demektir.
Hesap şöyle yapılır: hak sayıları uç uca eklenir. Ayşe’nin 3, Burak’ın 1, Cem’in 2 hakkı varsa toplam 6 hak vardır; 0, 1 ve 2 numaralı haklar Ayşe’ye, 3 numaralı hak Burak’a, 4 ve 5 numaralı haklar Cem’e ayrılır. Ardından 0 ile 5 arasında tarafsız bir tamsayı çekilir ve kimin payına düştüğüne bakılır. Böylece Ayşe’nin kazanma olasılığı tam olarak 3/6, Burak’ın 1/6, Cem’in 2/6 olur. Bu yönteme kümülatif (birikimli) ağırlık denir; tamsayı yine reddetme örneklemesiyle çekildiği için hiçbir hakta sapma oluşmaz.
Çarkta ağırlıklı bir dilim, hak sayısı oranında geniş çizilir. Ekranda gördüğünüz dilim genişliği, o dilimin gerçek çıkma olasılığıyla birebir örtüşür.
Çarkta sonuç ne zaman belirlenir?
Çarkın yavaşlarken sonucu “ortaya çıkardığını” düşünmek doğaldır, ama gerçekte sıra tersinedir. ÇEK düğmesine bastığınız anda kazanan dilim, yukarıdaki ağırlıklı seçimle kriptografik üreteçten belirlenir. Ardından çarkın bu dilimin içinde, kenarlara çok yakın olmayan rastgele bir noktada duracağı bir dönüş hesaplanır ve animasyon yalnızca bu hesabı oynatır.
Bu yüzden dönüş süresi, çarkı kaç kez çevirdiğiniz, düğmeye hangi an bastığınız ya da çarkın o sırada nerede durduğu sonucu etkilemez. Tarayıcınızda “hareketi azalt” ayarı açıksa çark dönmeden doğrudan sonuca gelir; sonuç yine aynı yöntemle seçilmiştir, değişen yalnızca gösterimdir.
Göstergenin dilim kenarına yakın durmaması bilinçli bir tercihtir: iki dilimin sınırında duran bir çark “hangisi çıktı” tartışması başlatır. Sonuç ayrıca ekranda yazıyla gösterilir ve ekran okuyuculara duyurulur.
Doğrulanabilir kura adım adım
Normal modda sonuca güvenmek, aracın dürüst çalıştığına ve organizatörün ekranında gördüğünüzün gerçek olduğuna güvenmek demektir. Doğrulanabilir kura bu güveni hesaba çevirir. Organizatör sonucu önceden seçemez, çünkü sonuç ilan anında henüz var olmayan bir değere bağlıdır; herkes de sonucu kendi tarayıcısında baştan hesaplayabilir.
Süreçte iki kavram sık geçer. SHA-256, girdisi ne olursa olsun 64 haneli bir “parmak izi” üreten bir özet fonksiyonudur: verideki tek bir harf değişse parmak izi tamamen değişir, parmak izinden verinin kendisini geri elde etmek ise pratikte mümkün değildir. Tohum ise bir sayı üretecinin başlangıç değeridir; aynı tohumdan her zaman aynı sayı dizisi çıkar. Adımlar şöyle:
- Hazırlık. Liste standart bir biçime getirilir: her satır Unicode NFC biçimine çevrilir (ekranda aynı görünen harflerin bilgisayarda da tek bir biçimde yazılması), baştaki ve sondaki boşluklar silinir, boş satırlar atılır, satır sırası korunur. Bu metnin SHA-256 özeti liste özeti olur.
- Taahhüt. Organizatörün tarayıcısı 32 baytlık (256 bitlik) gizli bir tohum üretir. Tohumun SHA-256 özeti taahhüt olarak ilanda yayımlanır; tohumun kendisi çekime kadar yalnızca organizatörün tarayıcısında kalır. Bunu, sonucu belirleyecek sayıyı zarfa koyup mühürlemek gibi düşünebilirsiniz: zarfın içini kimse göremez, ama zarf sonradan değiştirilirse herkes fark eder.
- İlan. İlan; liste özetini, taahhüdü, kura türünü ve ayarlarını, çekimin ne zaman yapılacağını ve hangi numaralı drand turunun kullanılacağını içerir. Bu bilgilerin kısa özeti olan ilan kodu, katılımcıların not alabilmesi için tireyle ayrılmış dört karakterlik üç grup hâlinde ayrıca gösterilir.
- Herkese açık rastgelelik. drand, dünyanın farklı yerlerindeki bağımsız kuruluşların oluşturduğu League of Entropy tarafından işletilen bir rastgelelik ağıdır. Sitede kullanılan quicknet ağı 3 saniyede bir yeni tur yayımlar ve turlar sırayla numaralanır. Her turun bir imzası vardır ve turun rastgelelik değeri bu imzanın SHA-256 özetidir. İlanda, planlanan çekim zamanından sonra yayımlanacak ilk turun numarası yazar; ilan anında bu turun değerini kimse bilemez.
- Son tohum. Çekim anında şu hesap yapılır: son tohum = SHA-256(tohum ‖ drand rastgeleliği ‖ liste özeti ‖ parametreler). Buradaki ‖ işareti değerlerin uç uca eklendiğini gösterir. Parametreler; kura türü, asil ve yedek sayıları, drand tur numarası ve deneme numarası gibi ayarları içerir ve anahtarları sıralanmış bir JSON metni olarak eklenir.
- Deterministik üreteç. Son tohum, HMAC-SHA-256 sayaç modu denen bir üretece verilir. HMAC-SHA-256, gizli bir anahtar ve bir mesajdan 64 haneli bir özet üreten, anahtarı bilmeyenin sonucunu tahmin edemeyeceği bir işlevdir. Üreteç anahtar olarak son tohumu kullanır; “cekti/drbg/v1” etiketiyle 0’dan başlayıp birer artan bir sayacı (8 bayt) mesaj yapar ve her 32 baytlık çıktıyı sekiz adet 32 bitlik sayıya böler. Kura, normal moddaki algoritmaların aynısıyla, yani reddetme örneklemesi ve Fisher–Yates ile, bu sayılardan hesaplanır. Deterministik olması şu demektir: aynı son tohum her tarayıcıda, her seferinde bit bit aynı sayıları, dolayısıyla aynı sonucu verir.
- Doğrulama. Çekimden sonra gizli tohum açıklanır ve bir doğrulama paketiyle paylaşılır. Doğrulama sayfasında herkes tohumun taahhütle, listenin liste özetiyle eşleştiğini ve drand değerinin gerçek olduğunu kontrol eder, ardından sonucu baştan hesaplar. Ekranda “Doğrulandı” ya da “Uyuşmuyor” yazar.
Neden yalnızca taahhüt yetmez? drand’ın rolü
İlk bakışta taahhüt tek başına yeterli görünebilir: tohum mühürlendiyse organizatör onu değiştiremez. Ama organizatörün, ilanı yayımlamadan önce istediği kadar zamanı vardır. Şöyle bir senaryo düşünün: organizatör kendi bilgisayarında binlerce tohum dener, her biriyle kurayı hesaplar ve bir yakınının kazandığı tohumlardan birini seçer. Sonra bu tohumun taahhüdünü ilan eder. Taahhüt kontrolü geçer, sonuç doğrulanır, ama kura en baştan belirlenmiştir. 100 kişilik bir kurada belirli bir kişiyi kazandıran tohum ortalama yüz denemede bulunur; bu bir bilgisayar için saniyenin küçük bir kesridir.
drand bu yolu kapatır. Sonuç, tohumun yanında ilandan sonra yayımlanacak drand değerine de bağlı olduğu için organizatör tohum denerken sonucu hesaplayamaz; hangi tohumun işine yarayacağını bilmesinin bir yolu yoktur. drand değerini de o belirleyemez: her tur, ağdaki bağımsız üyelerin belirli bir eşik sayısı bir araya gelmeden üretilemez ve imzası ağın herkese açık anahtarıyla kontrol edilir. Tersinden bakıldığında da durum aynıdır: drand ağı organizatörün gizli tohumunu bilmediği için sonucu o da yönlendiremez.
drand değeri tarayıcınıza drand sunucularından doğrudan değil, sitenin kendi sunucusundaki küçük bir aracı (vekil) üzerinden gelir. Böylece IP adresiniz yurt dışındaki sunuculara gönderilmez. Aracının değeri değiştirmesi bir işe yaramaz: tarayıcınız imzayı drand ağının herkese açık anahtarıyla doğrular ve rastgeleliğin imzadan türediğini kontrol eder. İsteyen herkes aynı turu drand’ın resmi adresinden açıp karşılaştırabilir; doğrulama sayfası bunun için doğrudan bağlantı verir.
İnternetin olmadığı bir salonda drand yerine katılımcı katkısı kullanılabilir: ilan herkese gösterildikten sonra salondaki birinin söylediği bir sayı ya da herkesin önünde atılan bir zarın sonucu girilir. Organizatör tohumunu önceden mühürlediği için katkıya göre sonucu ayarlayamaz. Bu yöntemin sınırı, güvenin katkıyı veren kişiye de dayanmasıdır: o kişi organizatörle anlaşmışsa ya da tohumu bir yolla öğrenmişse, olası sayıların sonuçlarını önceden hesaplayıp istediği sonucu verecek sayıyı söyleyebilir. Katkıyı organizatörün seçmediği birinden almak, zarı herkesin önünde attırmak ve tohumu çekime kadar gizli tutmak bu riski azaltır.
Dağıtım yöntemleri: düz, dengeli, kısıtlı
Takım, otopark ve hediye çekilişi gibi kuralar yalnızca “kim kazandı” sorusunu değil, “kim nereye düştü” sorusunu da cevaplar. Düz kura bunun en yalın hâlidir: liste Fisher–Yates ile karıştırılır, karışık listedeki kişiler sırayla takımlara ya da yerlere yerleştirilir; kural yoksa her dağılım eşit olasılıklıdır. Dengeli dağıtım ise takım kurasında seviye puanı verildiğinde kullanılır. Oyuncular puana göre büyükten küçüğe dizilir ve takımlara yılan düzeniyle dağıtılır: üç takımlı bir kurada sıra 1, 2, 3, 3, 2, 1, 1, 2, 3 diye gider, böylece ilk turda en yüksek puanlı oyuncuyu alan takım ikinci turda sıranın sonuna düşer. Puanları eşit olan oyuncular arasındaki sıra ise kurayla belirlenir.
Kısıtlı rastgele atama, kesin kurallar olduğunda devreye girer: “Ahmet ile Mehmet aynı takımda olmasın”, “erişilebilir park yeri yalnızca ihtiyacı olan daireye”, “kimse kendine hediye almasın” gibi. Amaç, kurallara uyan bütün dağılımlar arasından birini eşit olasılıkla seçmektir. Bunun kesin yolu reddetme örneklemesidir: liste karıştırılıp dağıtılır, dağılım kurallardan birini bozuyorsa tamamen atılır ve baştan çekilir. Kuralların çok sıkı olmadığı küçük ve orta boy kuraların çoğunda geçerli bir dağılım kısa sürede bulunur ve kurallara uyan her dağılım tam olarak eşit olasılıkla çıkar.
Kurallar sıkı ya da liste büyük olduğunda geçerli dağılımlar, olası bütün dağılımların içinde o kadar seyrek kalabilir ki bu yol makul sürede sonuç vermez. Araç, belirli sayıda denemeden sonra rastgele sıralı geri izleme yöntemine geçer: kişiler ve seçenekler rastgele bir sırayla ele alınır, her adımda kurallara uyan bir yer seçilir, çıkmaza girilirse geri dönülüp başka bir seçenek denenir. Bu yöntem hızlıdır, ama tam eşit olasılık garantisi vermez; bazı geçerli dağılımlar ötekilerden biraz daha sık ya da seyrek çıkabilir. Geçiş sınırı süreyle değil deneme sayısıyla belirlendiği için doğrulanabilir modda da yeniden hesaplamada aynı yöntem seçilir.
Kurallar birbiriyle çelişiyorsa, örneğin “A ile B aynı takımda olsun”, “B ile C aynı takımda olsun” ve “A ile C aynı takımda olmasın” birlikte verilmişse, araç çekimden önce uyarır ve çelişen kuralları sade bir dille listeler. Hangi yöntemin kullanıldığı sonuç ekranında ve tutanakta şu ifadelerden biriyle yazar:
- Düz kura (liste karıştırılır, sırayla dağıtılır)
- Dengeli dağıtım: seviye puanına göre yılan dağıtım, eşit puanlılar arasında kura
- Kısıtlı rastgele atama: reddetme örneklemesi (her geçerli atama eşit olasılıklı)
- Kısıtlı rastgele atama: rastgele sıralı geri izleme (tam eşit olasılık garantisi yoktur)
Yeniden çekim politikası
Normal modda yeniden çekim serbesttir. Çarkı bir kez daha çevirebilir, kurayı yeniden çekebilirsiniz; sonuçlar yalnızca sizin ekranınızda kalır ve gündelik kullanım için beklenen davranış da budur.
Doğrulanabilir modda ise aynı taahhütle yeniden çekim yoktur, olması da mümkün değildir: çekim deterministik olduğu için aynı ilandan her seferinde aynı sonuç çıkar. Organizatörün sonucu değiştirmesinin tek yolu baştan yeni bir ilan açmaktır; bu da yeni bir tohum üretilmesi ve başka bir taahhüdün yayımlanması demektir. Araç bu adımı gizlemek yerine sayar: aynı liste ve ayarlarla hazırlanan her yeni ilanın deneme numarası bir artar ve bu numara ilana, doğrulama paketine ve tutanağa işlenir. Tutanakta “deneme 1” dışında bir sayı gören katılımcı, önceki ilanları sorma hakkına sahiptir.
Sayaç organizatörün tarayıcısında tutulur ve bunun bir sınırı vardır. Diyelim ki organizatör ilk sonucu beğenmedi, tarayıcı verilerini silip aynı listeyle yeni bir ilan hazırladı; yeni tutanakta yine “deneme 1” yazar. Bu durumu yakalayan sayaç değil, katılımcıların elindeki ilk ilandır: taahhüdü ve ilan kodu farklı olduğu için yeni ilan hemen göze batar. İlanı çekimden önce, katılımcıların görebileceği bir yerde paylaşmanın önemi buradan gelir.
Verileriniz nerede?
Araçlara girdiğiniz listeler yalnızca sizin tarayıcınızda işlenir. Bir sonraki ziyaretinizde yeniden yazmak zorunda kalmayın diye tarayıcının yerel deposunda (localStorage) saklanır ve sunucuya gönderilmez. Bir listeyi araçtaki “Listeyi temizle” düğmesiyle, sitenin bu cihazdaki bütün kayıtlarını da “Bu cihazdaki Kura Çekti verilerini sil” düğmesiyle tek seferde silebilirsiniz. Site çerez kullanmaz; hangi kaydın ne için tutulduğu çerez politikası sayfasında listelenir.
Paylaşım ve doğrulama bağlantıları listeyi sıkıştırılmış biçimde adresin # işaretinden sonraki kısmında taşır. Tarayıcılar bu kısmı sunucuya göndermez; bağlantıyı açan kişinin tarayıcısı içeriği kendisi çözer. Yine de bağlantıyı alan herkes içeriği görebilir. Bağlantıları yalnızca ilgili kişilerle paylaşın; listelerde ad soyad yerine kısaltma ya da numara kullanmak da iyi bir alışkanlıktır.
Doğrulanabilir kurada gizli tohum da yalnızca ilanı oluşturan tarayıcıda durur ve çekimden sonra doğrulama paketiyle açıklanır. Listeniz, tohumunuz ya da sonucunuz hiçbir istekle sunucuya gitmez; sunucudan yalnızca drand değeri istenir. Bu isteği karşılayan aracı, kötüye kullanımı önlemek için IP adresini ham hâliyle değil, tuzlanmış bir özet olarak tutar. Tuzlanmış özet, adrese gizli bir ek eklenerek alınan ve geri çevrilemeyen bir parmak izidir; en fazla 10 dakika saklanır. Ayrıntılar KVKK aydınlatma metninde.
Sınırlamalar
Hiçbir yöntem her riski ortadan kaldırmaz. Neyi sağladığımızı ve neyi sağlamadığımızı bilmeniz, aracı doğru yerde kullanmanıza yardım eder.
- drand’a ulaşılamazsa: Çekim, ilanda yazan tur yayımlanıp alınana kadar yapılamaz. drand ağında ya da sitenin aracı sunucusunda bir kesinti olursa araç bekler ve tekrar denemenizi ister; başka bir rastgelelik kaynağına kendiliğinden geçmez, çünkü ilanda söz verilen tur odur. Kesinti geçtikten sonra yapılan çekim aynı turu kullanır ve aynı sonucu verir. Bağlantının güvenilmez olduğu bir ortamda ilanı baştan salon moduyla oluşturun.
- Tarayıcı ve cihaz güvenliği: Hesaplar sizin cihazınızda yapılır. Cihazda zararlı bir yazılım ya da sayfaya müdahale eden bir tarayıcı eklentisi varsa, ekranda gördüğünüz sonuç da değiştirilmiş olabilir. Doğrulanabilir kurada bu risk azalır, çünkü sonuç başka cihazlarda bağımsız olarak yeniden hesaplanabilir.
- Tutanak resmî belge değildir: Tutanak, kuranın nasıl yapıldığının kaydıdır; noter tutanağının ya da idari iznin yerini tutmaz. Kooperatifte daire dağıtımı ya da bir kurumda kontenjan belirleme gibi bağlayıcı kararlarda yönetim kurulu kararı, noter ya da resmî komisyon gibi mevzuatın istediği usul ayrıca işletilmelidir.
- Doğrulamanın kapsamı: Doğrulama, organizatörün sonucu önceden seçemediğini gösterir; listeye kimlerin yazıldığının doğruluğunu göstermez. Katılması gereken birinin listeye alınmaması ya da aynı kişinin iki kez yazılması doğrulamayla ortaya çıkmaz. Listeyi ilanda gösterip katılımcılara çekimden önce kontrol ettirmek bu açığı kapatmanın yoludur.
- Kısıtlı atamada eşitlik: Kurallar çok sıkı olduğunda kullanılan geri izleme yöntemi tam eşit olasılık garantisi vermez. Bu yöntem kullanıldığında tutanakta açıkça yazar.
- Organizatöre bağlı adımlar: İlanın zamanında paylaşılması, katılımcı katkısının dürüstçe alınması ve sonucun uygulanması organizatörün elindedir. Kura Çekti yalnızca aracı sağlar; kuranın tarafı değildir, sonucu düzeltemez, iptal edemez ya da uygulatamaz.
Sık sorulan sorular
Listelerimi ya da sonuçlarımı görebiliyor musunuz?
Hayır. Normal modda liste de sonuç da yalnızca sizin tarayıcınızda işlenir, sunucuya gönderilmez. Doğrulanabilir modda sunucudan yalnızca drand turunun değeri istenir; bu istek listenizi ya da sonucunuzu taşımaz. Paylaşım ve doğrulama bağlantılarındaki bilgiler adresin # işaretinden sonraki kısmında durduğu için bağlantı açıldığında da sunucuya ulaşmaz.
Math.random kullanılsaydı ne değişirdi?
Gündelik bir çarkta muhtemelen fark etmezdiniz. Sorun, Math.random’un tahmin edilemezlik için tasarlanmamış olmasıdır: iç durumu küçüktür ve yeterince çıktı gören biri sonraki sayıları hesaplayabilir. Çoğu kullanıcı için bu kuramsal bir risk gibi görünse de, sonucun sorgulanabileceği her kurada “tahmin edilebilir mi?” sorusuna kesin bir hayır diyebilmek için kriptografik üreteç tercih edildi.
Doğrulanabilir modu her kura için kullanmalı mıyım?
Şart değil. Arkadaşlar arasında bulaşık sırasını ya da sınıfta söz hakkını belirlemek için normal mod yeterli ve daha hızlıdır. Doğrulanabilir mod, sonucun sonradan sorgulanabileceği durumlar içindir: dernek, kooperatif, site yönetimi, ödüllü etkinlik ya da iş yerinde nöbet gibi. İlan hazırlamak ve çekim zamanını beklemek birkaç dakika sürer; karşılığında olası bir tartışmayı hesapla kapatabilirsiniz.
drand ağı durursa ya da bir üyesi ele geçirilirse ne olur?
Bir turu üretmek için ağ üyelerinin önceden belirlenmiş bir kısmının imza paylarını birleştirmesi gerekir; tek bir üyeyi ele geçiren kişi değeri ne belirleyebilir ne de önceden öğrenebilir. Ağ tamamen durursa yeni tur yayımlanmaz ve drand’a bağlı ilanlar tur yayımlanana kadar çekilemez. Geçmiş kuraların doğrulaması bundan etkilenmez, çünkü imzalı değer doğrulama paketinde saklıdır. Böyle bir dönemde kuralar salon moduyla yapılabilir.
Aynı listeyle iki kez çekince neden farklı sonuç çıkıyor?
Normal modda her çekim, kriptografik üreteçten o an alınan yeni sayılarla yapılır; bu yüzden aynı liste her seferinde başka bir sonuç verir ve vermesi de gerekir. Doğrulanabilir modda ise durum tersidir: sonuç son tohumdan deterministik olarak hesaplandığı için aynı ilan kaç kez hesaplanırsa hesaplansın tek bir sonuç çıkar. Farklı bir sonuç ancak yeni bir ilanla, yani yeni bir tohumla elde edilebilir ve bu, deneme numarasına yansır.
