Ana içeriğe atla
solveChallenge(), tarayıcı widget’ı tarafından kullanılan iş kanıtı algoritmasının aynısını çalıştırır, ancak Node.js’te eşzamanlı olarak. Üretim istek işleyicilerinde kullanım için değil, challenge ve verify uç noktalarınızın otomatik testi için tasarlanmıştır.

İçe aktarma

import { solveChallenge } from 'ribaunt';

İmza

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

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

Parametreler

token
ChallengeToken | ChallengeToken[]
gerekli
createChallenge()’dan tek bir JWT challenge token’ı veya bir token dizisi.
options
SolveChallengeOptions
Uzun süren eşzamanlı çözümleri önlemek için isteğe bağlı koruyucular.

Dönüş değeri

Tek bir token girişi için bir ChallengeSolution ({ nonce: string; hash: string }) veya bir dizi giriş için ChallengeSolution[] döndürür. Herhangi bir koruyucuya çarpılırsa veya bir token geçersizse undefined döndürür. Bir dizi çözülürken, herhangi bir token başarısız olur olmaz undefined döndürülür — kısmi sonuçlar döndürülmez.

Örnek

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
}
Koruyucularla:
const solution = solveChallenge(token, {
  maxDurationMs: 2000,
  maxIterations: 500_000,
});

if (!solution) {
  console.log('Solver gave up — difficulty too high or timeout reached');
}
solveChallenge eşzamanlı ve CPU yoğundur. Üretim HTTP istek işleyicisinde asla çağırmayın — Node.js olay döngünüzü bloklar.
Testlerde zorluk 3–4 kullanın. Zorluk 5 test paketinizi gözle görülür şekilde yavaşlatır.