Sunucu otoriteli
Tarayıcı yalnızca “2 numaralı parçayı 4. sütun, 1. satıra koy” gibi niyetler gönderir. Tahta, level, çarpan, ödeme ve bakiye sunucuda hesaplanır.
Adil oyun
Oyunlarımız şansı küçük tutar ve kanıtlanabilir kılar. Neyin rastgele olduğunu, nasıl üretildiğini ve kendin nasıl doğrulayabileceğini burada açıkça anlatıyoruz.
Ne rastgele
Puzzle Crash’te tek rastgele unsur her elde hangi parçaların geldiğidir. Yerleştirme, çizgi temizleme, level’lar, çarpanlar ve ödemeler sabit ve yayımlanmış kurallara uyar. Parça üreticisi girdi olarak yalnızca iki seed’i ve el numarasını alır — bakiyeni, geçmiş sonuçlarını ya da kararlarını asla almaz.
Taahhüt – ifşa
Sen oynamadan önce sunucu, kriptografik rastgele üreticiden gizli 32 baytlık bir sunucu seed’i çeker ve sana parmak izini gösterir: SHA-256(serverSeed). Parmak izi değişmeden seed’i sonradan değiştiremez.
Bir istemci seed’i de karıştırılır; böylece çekilişlerin sonucunu sunucu tek başına seçmez.
n. el, HMAC-SHA256(serverSeed, clientSeed + ":" + n) ve yayımlanmış parça olasılıklarından türetilir. Eller ancak bir önceki bittiğinde oluşturulur — gelecekteki parçalar henüz var olmaz.
Tur bitince sunucu seed’i açıklar. Herkes parmak izini kontrol edebilir, her eli yeniden hesaplayabilir ve her hamleyi tekrar oynatabilir.
Kendin doğrula
Tur bittikten sonra açıklanan sunucu seed’ini ve başta sana gösterilen taahhüdü al. Bu kod her modern tarayıcının konsolunda çalışır:
// serverSeed: revealed after the round (64 hex chars)
// commitment: shown to you before the round started
const bytes = (hex) => new Uint8Array(hex.match(/../g).map((b) => parseInt(b, 16)));
const hex = (buf) => [...new Uint8Array(buf)].map((b) => b.toString(16).padStart(2, '0')).join('');
const digest = await crypto.subtle.digest('SHA-256', bytes(serverSeed));
console.log(hex(digest) === commitment ? 'commitment OK' : 'MISMATCH');
// Entropy for hand n (input to the published piece draw):
const key = await crypto.subtle.importKey('raw', bytes(serverSeed), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const hand0 = hex(await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(clientSeed + ':0')));
Oyun, tur geçmişinde taahhüdü ve dağıtılan her eli otomatik olarak yeniden kontrol eder; sunucu da tam bir doğrulama raporu yayımlar (taahhüt, dağıtılan eller, her hamlenin tekrarı ve hash zinciri).
Bütünlük
Tarayıcı yalnızca “2 numaralı parçayı 4. sütun, 1. satıra koy” gibi niyetler gönderir. Tahta, level, çarpan, ödeme ve bakiye sunucuda hesaplanır.
Cashout’lar kilitler, sürüm kontrolleri ve tekil bir defter kaydıyla korunur — tekrarlanan ya da çiftlenen bir istek asla iki kez ödeme yapamaz.
Kabul edilen her hamle, bir öncekine zincirlenmiş durum hash’iyle saklanır. Geçmiş tabloları yalnızca eklenebilir.
Oturumlar
Ne olursa olsun, oyunu bir sonraki açışında bunu açıklayan bir bildirim görürsün.
Açık konuşalım