createChallenge() wird aus ribaunt importiert und serverseitig aufgerufen, um ein oder mehrere Proof-of-Work-Challenge-Tokens zu generieren. Jeder Token ist ein signiertes JWT, das der Browser-Solver dekodiert und gegen das er rechnet.
Import
Signatur
Parameter
Anzahl der führenden Null-Hexziffern, die im SHA-256-Hash erforderlich sind. Jede Erhöhung verdoppelt die Lösezeit ungefähr. Werte über 6 können dazu führen, dass Browser hängen bleiben.
Anzahl der zu generierenden Challenge-Tokens. Mehr Challenges erhöhen die gesamte Proof-of-Work-Last, erhöhen aber auch die Netzwerkbandbreite.
Lebensdauer des Challenge-Tokens in Sekunden. Tokens, die nach Ablauf eingereicht werden, werden von
verifySolution abgelehnt.Rückgabewert
GibtChallengeToken[] zurück — ein Array signierter JWT-Zeichenketten. Sende dieses Array als { challenges: tokens } an den Browser.
Beispiel
Empfohlene Einstellungen
| Anwendungsfall | Schwierigkeit | Anzahl | TTL |
|---|---|---|---|
| Schnell / Hintergrund | 4 | 4 | 30 |
| Mittel / Formular-Einreichung | 5 | 4 | 60 |
| Hoch / sensible Aktionen | 5 | 8 | 120 |
Validierung
createChallenge() validiert alle drei Parameter zur Laufzeit und wirft einen Fehler, wenn ein Wert ungültig ist:
difficulty— muss eine endliche Zahl und mindestens1sein. Bruchwerte werden mitMath.floor()abgerundet.amount— muss eine endliche Zahl und mindestens1sein. Bruchwerte werden mitMath.floor()abgerundet.ttlSeconds— muss eine endliche Zahl und mindestens1sein. Bruchwerte werden mitMath.floor()abgerundet.
Erfordert, dass
RIBAUNT_SECRET als Umgebungsvariable gesetzt ist. createChallenge() wirft einen Fehler, wenn das Secret fehlt.