Water SigilWater Sigil
Photic ZonePhotic Zone
HandgunHandgun
Amber FadeAmber Fade
ObsidianObsidian
ExposureExposure
Anodized NavyAnodized Navy
PowercorePowercore
Pipe DownPipe Down
UltravioletUltraviolet
Candy AppleCandy Apple
GrinderGrinder
SacrificeSacrifice
Pit ViperPit Viper
Neural NetNeural Net
SWATSWAT
Worm GodWorm God
GuardianGuardian
Condition ZeroCondition Zero
Skull CrusherSkull Crusher
HeirloomHeirloom
ConspiracyConspiracy
Mecha IndustriesMecha Industries
MotorizedMotorized
Food ChainFood Chain2x
TeardownTeardown

ЩО ТАКЕ СИСТЕМА ПРОЗОРОСТІ?

Наша система прозорості дозволяє перевірити правильність кожного відкриття.

Результат відкриття не є випадковим, а розраховується на основі трьох значень:

  • server seed - фраза, визначена сервером,

  • client seed - фраза, визначена користувачем,

  • nonce - унікальний номер, який використовується для забезпечення безпеки обчислень.

Фраза "Server seed" прихована від користувача і показується лише як ("Public hash"), щоб унеможливити передбачення вмісту наступного кейсу.

Завдяки використанню даних, введених як сервером, так і користувачем, можливо забезпечити прозорість відкриття кейсу, одночасно виключаючи втручання з обох сторін.

КОНФІГУРАЦІЯ

CLIENT SEED

SERVER SEED

Зашифрований server seed методом HMAC SHA-512.

NONCE

КОД, ЩО ВЕРИФІКУЄ ПРОЗОРІСТЬ ВІДКРИТТЯ

Після розкриття Server seed можна скористатися наведеним нижче кодом для верифікації прозорості відкриття. Можна запустити його безпосередньо у своєму браузері, використовуючи будь-який інструмент типу JavaScript Compiler. Використовуючи наведений нижче код, підготуй власний верифікаційний скрипт, а потім натисни кнопку "Запустити". Після виконання скрипту буде представлено результат відкриття, який має відповідати результату, розміщеному на нашому сайті.



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));

ВЕРИФІКУВАТИ ВІДКРИТТЯ