Zum Hauptinhalt springen
solveChallenge() führt denselben Proof-of-Work-Algorithmus aus, den das Browser-Widget verwendet, jedoch synchron in Node.js. Es ist für automatisierte Tests deiner Challenge- und Verify-Endpunkte gedacht — nicht für den produktiven Einsatz in Request-Handlern.

Import

import { solveChallenge } from 'ribaunt';

Signatur

// Single token
function solveChallenge(
  token: ChallengeToken,
  options?: SolveChallengeOptions
): ChallengeSolution | undefined

// Array of tokens
function solveChallenge(
  token: ChallengeToken[],
  options?: SolveChallengeOptions
): ChallengeSolution[] | undefined

Parameter

token
ChallengeToken | ChallengeToken[]
erforderlich
Ein einzelnes JWT-Challenge-Token oder ein Array von Tokens aus createChallenge().
options
SolveChallengeOptions
Optionale Sicherungen, um lang laufende synchrone Lösevorgänge zu verhindern.

Rückgabewert

Gibt eine ChallengeSolution ({ nonce: string; hash: string }) für eine einzelne Token-Eingabe zurück oder ChallengeSolution[] für eine Array-Eingabe. Gibt undefined zurück, wenn eine Sicherung erreicht wird oder ein Token ungültig ist. Beim Lösen eines Arrays wird undefined zurückgegeben, sobald ein einzelnes Token fehlschlägt — es werden keine Teilergebnisse zurückgegeben.

Beispiel

import { createChallenge, solveChallenge, verifySolution } from 'ribaunt';

// Use low difficulty in tests for speed
const tokens = createChallenge(3, 2, 60);
const solutions = solveChallenge(tokens);

if (solutions) {
  const valid = await verifySolution(tokens, solutions);
  console.log('Valid:', valid); // true
}
Mit Sicherungen:
const solution = solveChallenge(token, {
  maxDurationMs: 2000,
  maxIterations: 500_000,
});

if (!solution) {
  console.log('Solver gave up — difficulty too high or timeout reached');
}
solveChallenge ist synchron und CPU-intensiv. Rufe es niemals in einem produktiven HTTP-Request-Handler auf — es wird deine Node.js-Event-Loop blockieren.
Verwende in Tests die Schwierigkeit 3–4. Schwierigkeit 5 verlangsamt deine Test-Suite spürbar.