Firefight
UnchartedST
Vogue
Eye of Athena
Vogue
Oceanic
Malachite
Naga
Spider Lily
Motorized
AfterimageST
Halftone Wash
Sweeper
Cardiac
Etch Lord
Halftone Whorl
Twist
Acheron
Red Shades
Photic Zone
Embargo
ScumbriaST
Jungle Slipstream
Orange Crash
Capillary
Modest ThreatST

MIKÄ ON LÄPINÄKYVYYSJÄRJESTELMÄ?

Käyttämämme läpinäkyvyysjärjestelmän avulla voimme tarkistaa jokaisen aukon oikeellisuuden.

Avaustulos ei ole satunnainen, vaan se on laskettu kolmen arvon perusteella:

  • palvelimen siemen - palvelimen määrittämä lause,

  • asiakkaan siemen - käyttäjän määrittämä lause,

  • nonce - yksilöllinen numero, jota käytetään varmistamaan laskelmien turvallisuus.

"Palvelimen siemen" -lause on piilotettu käyttäjältä ja näytetään vain muodossa ("Julkinen hash"), jotta estetään seuraavan välimuistin sisällön ennustaminen.

Käyttämällä sekä palvelimen että käyttäjän syöttämiä tietoja on mahdollista varmistaa avatun laatikon läpinäkyvyys ja estää häiriöitä molemmilta puolilta.

ASETUKSET

CLIENT SEED

SERVER SEED

Salattu siemenpalvelin HMAC SHA-512 -menetelmällä.

NONCE

KOODI VAHVISTAA AVAUSLÄPPÄIVÄN

Kun olet löytänyt palvelimen siemenen, voit käyttää alla olevaa koodia tarkistaaksesi avauksen läpinäkyvyyden. Voit suorittaa sen suoraan verkkoselaimessa millä tahansa työkalulla, kuten JavaScript Compiler. Käytä alla olevaa koodia, valmistele oma vahvistuskoodisi ja napsauta sitten "Suorita"-painiketta. Käsikirjoituksen suorittamisen jälkeen esitetään avaustulos, jonka tulee olla yhdenmukainen verkkosivustollamme julkaistun tuloksen kanssa.



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

VAHVISTA AVAAMINEN