Playgridia Blog

Online Tavlada Zarlar Hileli mi? Kanıtla Kontrol Et

Online tavlada zarlar hileli mi sorusunun dürüst cevabı şu: normalde bunu bilemezsin, çünkü zarı atan taraf aynı zamanda sonucu da üretiyor ve sana sadece "güven bana" diyor. Bu tahtada durum farklı — zarlar taahhüt–açıklama (commit–reveal) denen bir yöntemle üretiliyor ve her atışı, oyun bittikten sonra sen de kendi başına yeniden hesaplayıp kontrol edebiliyorsun.

"Hileli gibi hissettim" bir kanıt değildir

Üst üste iki kez altıya çift gelmesi ya da kritik anda tam istediğin sayının gelmemesi gerçekten sinir bozucu — ama hafızamız zar konusunda kötü bir tanık. 36 ihtimalden birinin gerçekleşmesi 36 atışta bir kez normal bir olaydır; art arda üç kez vurulman da öyle. Beyin kötü giden anları hatırlar, sıradan geçen elli atışı unutur. Bu, kuşkunu anlamsız yapmaz — sadece "hissettim" ile "kanıtladım" farklı şeyler, ve aşağıdaki yöntem ikincisini sana veriyor.

Yöntem: Taahhüt–Açıklama (Commit–Reveal)

Bir oyunun ilk zarı atılmadan önce sunucu 32 byte'lık gizli bir sayı (serverSeed) üretir ve bunun sadece SHA-256 parmak izini (commitment) yayınlar — gizli sayının kendisini değil. Sıralama burada kritik: taahhüt, kimsenin tohumu belli olmadan ve tek bir zar atılmadan önce herkese açık hale gelir, yani sunucu daha sonra "aslında gizli sayı buydu" diyerek geriye dönük bir şey uyduramaz — parmak izi artık uymaz.

Ardından her oyuncu kendi tohumunu (client seed) katar — istediğin serbest metin, en fazla 40 karakter; hiçbir şey girmezsen rastgele 8 byte'lık bir tohum otomatik üretilir. Senin tohumun her zarın hesabına girer, yani sunucu senin daha sonra ekleyeceğin tohumu tahmin edip ona uyacak bir gizli sayı seçemez.

Her zar atışı HMAC-SHA256(serverSeed, "beyazTohum:siyahTohum:nonce") formülüyle hesaplanır; nonce, o atışın oyun içindeki sıra numarasıdır. İki zar, bu HMAC çıktısının ilk iki byte'ından türetilir — ama her byte değil, sadece 252'nin altındaki byte'lar kullanılır. Bunun nedeni saf matematik: byte değerini doğrudan 6'ya bölüp kalanı almak (byte % 6) düşük yüzleri yaklaşık %1,6 daha sık gösterir, çünkü 256 tam olarak 6'ya bölünmez. 252 ise tam olarak 6×42 olduğu için, bu eşiğin altında kalan her byte altı yüzü tam eşit olasılıkla temsil eder. Bu detay, birinin bu işi gerçekten önemsediğinin kanıtı.

Oyun bittiğinde gizli sayı (serverSeed) açıklanır. Bundan sonra sadece iki oyuncu değil, isteyen herkes o oyunun her zarını yeniden hesaplayıp yayınlanmış parmak iziyle karşılaştırabilir.

AşamaNe olurKim doğrulayabilir
1. TaahhütSunucu 32 byte'lık gizli sayı üretir, sadece SHA-256 parmak izini yayınlarHerkes — parmak izi ilk zardan önce herkese açık
2. TohumHer oyuncu kendi 40 karaktere kadar serbest metin tohumunu eklerOyuncular — kendi tohumlarını biliyorlar
3. AtışHer zar HMAC-SHA256(gizli sayı, tohumlar:nonce)'dan, 252 altı byte'larla üretilirKimse önceden değil — sadece açıklamadan sonra
4. AçıklamaOyun bitince gizli sayının kendisi yayınlanırHerkes — artık formül elde
5. DoğrulamaHer atış yeniden hesaplanıp parmak iziyle karşılaştırılırHerkes — tarayıcıda, sunucuya güvenmeden

Bunu kendi başına nasıl kontrol edersin

Tahtanın üzerinde bir adalet paneli var: taahhüdü (parmak izini) gösterir ve gizli sayı henüz açıklanmamışken anahtarı "mühürlü" olarak işaretler. Maç bittikten sonra bir İnceleme (Review) sayfası tüm doğrulamayı senin için yeniden çalıştırır. Burada önemli olan bir detay var: tarayıcıdaki doğrulayıcı kod, sunucunun kendi kodunu içe aktarmıyor — bağımsız olarak, tarayıcının kendi Web Crypto altyapısıyla yeniden yazılmış. Yani kanıt, sunucunun uygulamasına güvenmene bağlı değil; kendi tarayıcın kendi hesabını yapıyor. Ayrıca bir sunucu uç noktası da sonucu, kullanılan algoritmanın adıyla birlikte döner — kaynak kodundaki kendi tanımıyla "kanıtın kendisi değil, bir kolaylık". Biten maçlar, açıklanmış zar kayıtlarıyla birlikte 400 gün saklanır, yani geçen sezondan şüphelendiğin bir oyunu bile hâlâ kontrol edebilirsin.

Tavla tahtasında iki zar (4 ve 1) atılmış, pip sayıları GrandDuke210 için 153 ve bot rakip AnchorAda için 136 olarak görünüyor, taşlar temas halinde dağılmış.
Zar atışı tahtanın kendi üstünde okunur — pip sayısı her iki oyuncunun adının yanında canlı gösterilir.

Tahta teması zarı değiştiremez

Yapısal olarak zar mantığının bulunduğu dosya hiçbir fonksiyonunda tahta ya da tema parametresi almaz — yani hangi tahta temasını kullandığın, hangi zarın geleceğini hiçbir şekilde etkileyemez. Dört farklı tahta görünümünden hangisini seçersen seç, zarları hesaplayan kod aynı kalır.

Kim başlayacağını bile aynı sistem belirler

Kimin önce oynayacağını belirleyen açılış atışı da aynı doğrulanabilir zincirin bir parçasıdır. İki taraf, birleşik tek bir atışın birer zarını tutuyormuş gibi ele alınır — biri beyazın zarı, biri siyahın zarı; hangisi daha yüksek gelirse o taraf başlar ve açılışta iki zarın ikisini de kendi hamlesi olarak oynar. İki zar eşit gelirse bu bir berabere sayılır ve atış tekrarlanır — ama bu tekrar bile aynı zincirin bir parçasıdır, çünkü sıra numarası (nonce) ilerletilerek kayda geçer. Gerçek açılıştan önce kaç kez berabere kalındığı bile istemciye ayrıca gönderilir, yani bu sayı bile senden gizlenmez.

Tavla tahtasında 1 ve 3 zarları atılmış; beyaz taşların çoğu 1 numaralı hanede 12'lik bir istifte toplanmış, siyah rakip sağdaki tepside taşlarını toplamaya başlamış. Pip sayıları 52'ye 7, ortadaki çift zar kutusu 2 gösteriyor, skor 0-0/5.
Toplama aşamasına gelmiş bir el: pip farkı (52'ye 7) yarışın çoktan bittiğini söylüyor. Zarların doğrulanabilir olması, kaybettiğin eli kazandırmaz — sadece sebebini tartışılır olmaktan çıkarır.

Bu yöntemin kanıtlamadığı şeyler

Dürüst olmak gerekirse: taahhüt–açıklama, zarların taahhütten sonra değiştirilmediğini ve herkesin bu zarları yeniden hesaplayabildiğini kanıtlar. Sunucunun taahhüdü yayınlamadan önce hangi gizli sayıyı seçtiğini önceden bilemezsin — ama bunun bir önemi yok, çünkü senin tohumun da hesaba girdiği için sunucu, senin katkını görmeden bir sonuca göre seçim yapamaz. Yöntemin iddiası budur, ne fazlası ne eksiği; abartılı bir "her şey kanıtlanmıştır" sözü vermiyoruz.

Şansını da ölçebilirsin

Maç bittikten sonraki inceleme, her atıştaki şansı, o anda gerçekten içinde bulunduğun pozisyondan hesaplar — yani "zara yenildim" cümlesi burada bir iddia değil, oyunun kendisinin sana çıkarıp verdiği bir sayı. Zarların gerçekten mi kötü geldiğini, yoksa oynanışının mı zayıf olduğunu ayırt etmek istiyorsan, önce kuralları tazelemek için tavla nasıl oynanır yazısına, sonra da hamlelerini geliştirmek için tavla taktikleri rehberine bakabilirsin. İki kişilik başka rakip arıyorsan iki kişilik online oyunlar listesi de bir başlangıç noktası.

Kısacası: kuşkun meşru, ama artık ona bir cevap var. Bir maçtan şüphelendiğinde adalet panelindeki mühürlü anahtarı, maç bitince İnceleme sayfasındaki doğrulamayı kontrol et; istersen kendi hesabını da yap. Zarın kendisi tartışmalı olmaktan çıkıyor, geriye tartışılacak tek şey oyununun kalitesi kalıyor.

Sıkça Sorulan Sorular

Online tavlada zarlar gerçekten hileli mi?

Bu tahtada zarlar taahhüt–açıklama yöntemiyle üretiliyor: sunucu ilk zardan önce gizli bir sayının SHA-256 parmak izini yayınlıyor, oyun bitince gizli sayının kendisini açıklıyor, ve herkes her atışı yeniden hesaplayıp parmak iziyle karşılaştırabiliyor. Sunucu taahhüdü yayınladıktan sonra sonucu değiştiremez, çünkü parmak izi artık uymaz.

Zarların taahhüt–açıklama ile üretildiğini nasıl anlarım?

Tahtanın üzerindeki adalet panelinde taahhüdü (parmak izini) görürsün ve gizli sayı henüz açıklanmadığı sürece anahtar 'mühürlü' işaretiyle gösterilir. Maç bittikten sonra İnceleme sayfası tüm zarları yeniden hesaplayıp doğrular; bu doğrulama tarayıcında, sunucunun kodundan bağımsız yazılmış bir kontrolle çalışır.

Kendi zar tohumumu belirleyebilir miyim?

Evet, oyunlar arasında istediğin serbest metni kendi tohumun (client seed) olarak ayarlayabilirsin, en fazla 40 karakter. Bir şey belirlemezsen rastgele bir tohum otomatik üretilir; her iki durumda da senin tohumun her zarın hesabına girer.

Tahta teması veya renk seçimim zarları etkiler mi?

Hayır. Zar hesaplamasının bulunduğu kod hiçbir fonksiyonunda tahta ya da tema bilgisi almaz, yani hangi tahtayı seçtiğin gelecek zarları hiçbir şekilde değiştiremez.

Eski bir maçımın zarlarını sonradan kontrol edebilir miyim?

Evet, biten maçlar açıklanmış zar kayıtlarıyla birlikte 400 gün saklanır. Bu sürede İnceleme sayfasından geçmiş bir maçın her atışını yeniden doğrulayabilirsin.

Şansımın gerçekten kötü olup olmadığını nasıl anlarım?

Maç sonrası inceleme her atıştaki şansı, o an gerçekten içinde bulunduğun pozisyona göre hesaplar, yani sonuca göre değil pozisyona göre bir ölçüm verir. Bu sana zarın mı yoksa oynanışının mı belirleyici olduğunu ayırt etmen için somut bir sayı sunar.

Tavla

İlgili yazılar