Verwenden Sie unser eigenständiges Verifizierungstool, um die Ergebnisse Ihrer Spiele unabhängig zu überprüfen. Geben Sie unten die Spieldetails ein, um zu bestätigen, dass die Ergebnisse fair generiert und nicht manipuliert wurden.
Spiel
import { useEffect, useState, type ChangeEvent, type FormEvent } from "react"; import "./styles.css"; import seedrandom from "seedrandom"; import CryptoJS from "crypto-js"; import { initialInput } from "./verifier-initial-input"; type Input = typeof initialInput; const sha256 = async (value: string) => CryptoJS.SHA256(value).toString(CryptoJS.enc.Hex); const getGameSeed = (row: Input) => `${row.serverSeed}:${row.clientSeed}:${row.nonce}`; export default function App() { const [input, setInput] = useState<Input>({ ...initialInput }); const [result, setResult] = useState<React.ReactNode>(null); const [error, setError] = useState<string | null>(null); const verify = async () => { try { setError(null); if (typeof seedrandom !== "function") { throw new Error("seedrandom failed to load"); } const gameSeed = getGameSeed(input); const results = Array.from({ length: 2 }, (_, index) => { const dieSeed = `${gameSeed}:${index + 1}`; const raw = seedrandom(dieSeed)(); return { raw, value: Math.floor(raw * 6) + 1, seed: dieSeed }; }); const calculated = `[${results.map((item) => item.value).join(", ")}]`; const steps = results.map((item) => ({ title: "Die", raw: item.raw, seed: item.seed, value: item.value, })); const expectedHash = await sha256(input.serverSeed); const hashBanner = (() => { if (!input.serverSeedHash) { return { message: "Server seed hash not provided", className: "verifier-result-banner", }; } if (expectedHash === input.serverSeedHash) { return { message: "Server seed hash matches", className: "verifier-result-banner verifier-result-banner-success", }; } return { message: "Server seed hash does not match", className: "verifier-result-banner verifier-result-banner-error", }; })(); setResult( <section className="verifier-result"> <div className={hashBanner.className}>{hashBanner.message}</div> <div className="verifier-result-grid"> <div className="verifier-result-card"> <div className="verifier-result-card-label">Result</div> <div className="verifier-result-card-value">{calculated}</div> </div> <div className="verifier-result-card"> <div className="verifier-result-card-label">Game seed</div> <div className="verifier-result-card-value">{gameSeed}</div> </div> <div className="verifier-result-card"> <div className="verifier-result-card-label">Expected server seed hash</div> <div className="verifier-result-card-value">{expectedHash}</div> </div> <div className="verifier-result-card"> <div className="verifier-result-card-label">Provided server seed hash</div> <div className="verifier-result-card-value"> {input.serverSeedHash || "Not provided"} </div> </div> </div> <div className="verifier-result-card"> <div className="verifier-result-card-label">Steps</div> <pre className="verifier-pre"> {JSON.stringify(steps, null, 2)} </pre> </div> </section>, ); } catch (verifyError) { setError(verifyError instanceof Error ? verifyError.message : String(verifyError)); setResult(null); } }; useEffect(() => { void verify(); }, []); const onSubmit = (event: FormEvent<HTMLFormElement>) => { event.preventDefault(); void verify(); }; return ( <main className="verifier"> <form className="verifier-form" onSubmit={onSubmit} > <div className="verifier-form-grid"> <label className="verifier-field"> <span className="verifier-label">Server seed</span> <input className="verifier-input" name="serverSeed" value={input.serverSeed} onChange={(event: ChangeEvent<HTMLInputElement>) => { setInput((current) => ({ ...current, serverSeed: event.target.value })); }} /> </label> <label className="verifier-field"> <span className="verifier-label">Server seed hash</span> <input className="verifier-input" name="serverSeedHash" value={input.serverSeedHash} onChange={(event: ChangeEvent<HTMLInputElement>) => { setInput((current) => ({ ...current, serverSeedHash: event.target.value })); }} /> </label> <label className="verifier-field"> <span className="verifier-label">Client seed</span> <input className="verifier-input" name="clientSeed" value={input.clientSeed} onChange={(event: ChangeEvent<HTMLInputElement>) => { setInput((current) => ({ ...current, clientSeed: event.target.value })); }} /> </label> <label className="verifier-field"> <span className="verifier-label">Nonce</span> <input className="verifier-input" name="nonce" type="number" min={0} value={input.nonce} onChange={(event: ChangeEvent<HTMLInputElement>) => { setInput((current) => ({ ...current, nonce: event.target.value })); }} /> </label> </div> <button type="submit" className="verifier-button" > Verify </button> </form> {error && ( <div className="verifier-error">{error}</div> )} {result} </main> ); }
Acebet.de wird betrieben von Trey Mark Services Limited, einem in Zypern eingetragenen Unternehmen mit Sitz in Belapais, 4, Office 101, Strovolos, Nikosia 2057, Zypern, Registernummer HE481956. Acebet.de ist ein kostenlos spielbares Social Casino. Kein Kauf erforderlich.
Fairness-Verifizierung: Acebet.de arbeitet unter einem strengen Provably Fair Protokoll. Alle Spielergebnisse können unabhängig mit unseren Fairness-Tools und der Anpassung des Client-Seeds überprüft werden.
Sie müssen über 18 Jahre alt sein oder in Ihrer Gerichtsbarkeit die Volljährigkeit erreicht haben, um mit der Website interagieren zu können.