WeaselWeasel
Bunsen BurnerBunsen Burner
HypnosisHypnosis
Dark WaterDark Water
Mecha IndustriesMecha Industries
Food ChainFood Chain
OvergrowthOvergrowth
ShowdownShowdown
Bomb On BoardBomb On Board
SolitudeSolitude
GunsmokeGunsmoke
MalachiteMalachite
UltravioletUltraviolet
PraetorianPraetorian
WeaselWeasel
Knife StreakKnife Streak
Bomb On BoardBomb On Board
Orbit Mk01Orbit Mk01
DazzleDazzle
Dualing DragonsDualing Dragons
Elite BuildElite Build
SWAG-7SWAG-7
GrimGrim
PraetorianPraetorian
SWAG-7SWAG-7ST
CortexCortex

Ş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