ŞEFFAFLIK SİSTEMİ NEDİR?
Kullandığımız şeffaflık sistemi, her açılışın doğruluğunu kontrol etmenizi sağlar.
Açılış sonucu rastgele değildir, üç değere göre hesaplanır:
server seed - sunucu tarafından belirlenen ifade,
client seed - kullanıcı tarafından belirlenen ifade,
nonce - hesaplamaların güvenliğini sağlamak için kullanılan benzersiz numara.
"Server seed" ifadesi kullanıcıdan gizlenir ve yalnızca ("Public hash") olarak gösterilir, böylece bir sonraki kutunun içeriği tahmin edilemez.
Hem sunucu hem de kullanıcı tarafından sağlanan verilerin kullanılması sayesinde, açılan kutunun şeffaflığı sağlanabilir ve her iki tarafın da müdahalesi engellenmiş olur.

KONFİGÜRASYON
CLIENT SEED
SERVER SEED
HMAC SHA-512 yöntemi kullanılarak şifrelenmiş sunucu tohumudur.
NONCE
AÇILIŞIN ŞEFFAFLIĞINI DOĞRULAMA KODU
Server seed ortaya çıktıktan sonra, açılışın şeffaflığını doğrulamak için aşağıdaki kodu kullanabilirsin. Bu kodu herhangi bir JavaScript derleyici aracı ile doğrudan tarayıcında çalıştırabilirsin. Aşağıdaki kodu kullanarak kendi doğrulama betiğini oluştur ve ardından "Çalıştır" butonuna tıkla. Kod çalıştırıldığında, açılış sonucu gösterilecektir ve bu sonuç sitemizdeki ile eşleşmelidir.
async function getRoll(serverSeed, serverNonce, clientSeed) {
const enc = new TextEncoder();
const key = enc.encode(serverSeed);
const message = enc.encode(clientSeed + '-' + serverNonce.toString());
const cryptoKey = await crypto.subtle.importKey(
'raw',
key,
{ name: 'HMAC', hash: 'SHA-512' },
false,
['sign']
);
const signature = await crypto.subtle.sign('HMAC', cryptoKey, message);
const hashArray = Array.from(new Uint8Array(signature));
const hex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
const rollHex = hex.substring(0, 7);
const number = parseInt(rollHex.replace(/[^a-f0-9]/gi, ''), 16);
return (number % 100000) + 1;
}
serverSeed = '';
serverNonce = 1;
clientSeed = '';
getRoll(serverSeed, serverNonce, clientSeed).then(roll => console.log('Roll result:', roll));
AÇILIŞI DOĞRULA
