
Provably Fair ist ein System, das es Spielern ermöglicht, zu verifizieren, dass die Seite rechtmäßig arbeitet und die Spielergebnisse nicht manipuliert. Es nutzt Kryptografie und Inputs von Drittanbietern, um Zufallswerte zu generieren. Am Ende des Spiels können die Spieler überprüfen, ob das Ergebnis tatsächlich durch den ursprünglichen Seed und die Inputs bestimmt wurde, was beweist, dass das Spiel fair war.
Auf diese Weise kontrollieren beide Seiten das Zufallsergebnis (Nutzer und Server).
Bei „Boxen“ verwenden wir 3 Teile zur Generierung einer Ticketnummer: Server-Seed, Client-Seed, Nonce.
Zur Bestimmung des Drop-Ergebnisses haben wir ein „Ticket-System“ aufgebaut, bei dem jedem Artikel in der Box ein eindeutiger Ticket-Bereich zugewiesen ist.
Der Server-Seed ist der erste Teil des Seeds für jedes Ergebnis. Zunächst erstellt unser System einen zufälligen 64-stelligen Server-Seed. Bevor eine Box geöffnet wird, teilen wir dem Nutzer eine gehashte Version dieses Seeds mit. Nur der gehashte Server-Seed wird offengelegt, um zu verhindern, dass Spieler zukünftige Ergebnisse vorhersagen können.
Nach jeder Öffnung wird ein Server-Seed durch einen neu generierten rotiert. Vor der Öffnung kann ein Nutzer den gehashten Server-Seed überprüfen und ihn nach einem Spiel mit dem tatsächlichen Server-Seed vergleichen.
Hashed_Server_Seed == SHA256(Server_Seed)
Der Client-Seed ist der zweite Teil des Seeds für jedes Ergebnis. Der Nutzer hat die vollständige Kontrolle über einen Client-Seed. Ein Ticket-Ergebnis hängt vom Client-Seed ab, und eine Änderung führt dazu, dass andere Artikel gedroppt werden.
Wenn ein Nutzer ein Konto erstellt, initiiert die Plattform einen Client-Seed mit einer zufälligen 64-stelligen Zeichenfolge.
Eine Nonce ist eine Nummer, die als dritter Teil des Seeds für jedes Ergebnis verwendet wird. Für jede Box-Opening-Sitzung ist die Nonce „1“. Wenn der Nutzer mehrere Boxen in einem Spiel öffnet, wird die Nonce für jeden Spin um 1 erhöht.
Du kannst unseren Algorithmus mit unserem Tool am Ende der Seite überprüfen oder den JavaScript-Code manuell ausführen. Die Ticketnummer eines Artikels findest du auf der Box-Seite.
const serverSeed = "0bcfbdd1bdb8b5a3cc36f29dedc03fdf705a18b3610e46f094fe3337475de0ea";
const clientSeed = "5e62aa1e3792036cf6bcc5f59f1c9f6a18d0438410077db13b531b4604dfad6c";
const nonce = 1;
random(serverSeed, clientSeed, nonce).then((x) => console.log("Open result", x));
async function sha512(str) {
return crypto.subtle.digest("SHA-512", new TextEncoder("utf-8").encode(str)).then((buf) => {
return Array.prototype.map
.call(new Uint8Array(buf), (x) => ("00" + x.toString(16)).slice(-2))
.join("");
});
}
async function random(...parts) {
const combinedHash = await sha512(parts.join(":"));
const hashInt = BigInt("0x" + combinedHash);
const maxInt = BigInt(100000000);
return Number((hashInt % maxInt) + BigInt(1));
}