Provably Fair

Seit dem 22.08.2026 sind neue Pellodle-Rolls provably fair. Jeder Roll entsteht aus einem Tages-Seed von Pellodle und einem Client-Seed aus dem Browser des Spielers. Beide stehen beim Roll fest. Hier kannst du nachrechnen, welche Zahl sich daraus ergeben musste.

Wann was öffentlich wird

Tages-Seed und Client-Seed werden zu verschiedenen Zeiten öffentlich. Einer allein verrät die Zahl nicht.

  1. Vorher

    Der Prüfwert ist öffentlich

    Der Prüfwert legt die Tages-Seeds für die nächsten Jahre fest. Pellodle kann sie später nicht austauschen, ohne die Kette zu brechen.

  2. Beim Klick

    Der Browser gibt seinen Seed dazu

    Der Browser erzeugt einen Client-Seed und schickt ihn beim Roll mit. Pellodle kannte ihn vorher nicht. Aus beiden Seeds steht jetzt die Zahl fest.

  3. Um Mitternacht

    Der Tages-Seed wird öffentlich

    Der Tages-Seed für den beendeten Roll-Tag wird veröffentlicht. Bei Rolls ohne Urteil bleibt der Client-Seed verborgen.

  4. Mit dem Urteil

    Alles liegt offen

    Sobald Daniel urteilt, werden der Roll und sein Client-Seed öffentlich. Jetzt lässt sich die Zahl nachrechnen.

Der öffentliche Prüfwert

Alle Tages-Seeds führen über SHA-256 zu diesem Prüfwert. Er wurde vor dem ersten nachrechenbaren Roll veröffentlicht und bleibt gleich. Wird ein Seed ausgetauscht, passt die Kette nicht mehr.

Prüfwert

64a1b7b79a61c548e94211b6055641c2b2f520b3a4b9b35727430dd2085e229b

Glied 1 gehört zum 22.08.2026. Die Kette hat 4.096 Glieder. Vergleiche diesen Prüfwert mit dem Wert aus dem Chat. Sonst prüft Pellodle nur die eigene Angabe.

Die drei Gleichungen

Darauf läuft die Prüfung hinaus:

  1. sha256(tagesSeed) == seedVomVortag

    Für jeden Tag gilt: Der SHA-256-Hash des Tages-Seeds muss dem Seed des Vortags entsprechen. Gehasht werden die 32 Bytes des Seeds, nicht die 64 Zeichen des Hex-Werts.

  2. sha256(clientSeed) == siegel

    Das Siegel wurde schon am Roll-Tag veröffentlicht, bevor der Tages-Seed öffentlich war. Es muss zum Client-Seed passen, der mit dem Urteil veröffentlicht wird.

  3. hmacSha256(tagesSeed, clientSeed) → zahl

    Der HMAC liefert acht 32-Bit-Wörter. Das erste unter 4.294.000.000 wird modulo 1.000.000 zur Roll-Zahl. Größere Werte fliegen raus. Ohne diesen Schritt wären kleine Zahlen um 0,02 % häufiger.

Ohne Pellodle nachrechnen

Dieses Python-Skript rechnet denselben Roll unabhängig von Pellodle nach. Es braucht keine zusätzlichen Pakete und keine Netzwerkverbindung. Such dir oben einen Roll aus, dann stehen hier seine Werte.

import hashlib, hmac

PRUEFWERT = "64a1b7b79a61c548e94211b6055641c2b2f520b3a4b9b35727430dd2085e229b"
SEED       = "<Tages-Seed>"
CLIENT     = "<Client-Seed>"
TIEFE      = <Nummer des Roll-Tags in der Kette>

# 1. Fuehrt der Tages-Seed zum veroeffentlichten Pruefwert?
schritt = SEED
for _ in range(TIEFE):
    schritt = hashlib.sha256(bytes.fromhex(schritt)).hexdigest()
print("Kette: ", schritt == PRUEFWERT)

# 2. Passt der Client-Seed zum Siegel vom Roll-Tag?
print("Siegel:", hashlib.sha256(bytes.fromhex(CLIENT)).hexdigest())

# 3. Welche Zahl musste damit fallen?
h = hmac.new(bytes.fromhex(SEED), bytes.fromhex(CLIENT), hashlib.sha256).digest()
while True:
    for i in range(0, 32, 4):
        wort = int.from_bytes(h[i:i + 4], "big")
        if wort < 4294000000:
            print("Zahl:  ", wort % 1000000)
            raise SystemExit
    h = hmac.new(bytes.fromhex(SEED), h, hashlib.sha256).digest()