resolveChallenge function

Future<Solution> resolveChallenge(
  1. Challenge config,
  2. String serializedInput, {
  3. void onProgress(
    1. double
    )?,
})

Implementation

Future<Solution> resolveChallenge(
  Challenge config,
  String serializedInput, {
  void Function(double)? onProgress,
}) async {
  List<ChallengePieceResolver> challenges = ChallengePieceResolver.forChallenge(
    config,
    serializedInput,
  );

  double lastSentProgress = 0.0;
  List<String> nonces = [];

  for (int index = 0; index < challenges.length; index++) {
    ChallengePieceResolver challenge = challenges[index];
    ProofOfWork proof = await challenge.resolve((double challengeProgress) {
      double progress = (index + challengeProgress) / challenges.length;
      if (progress - lastSentProgress > 0.01) {
        lastSentProgress = progress;
        if (onProgress != null) {
          onProgress(progress);
        }
      }
    });
    nonces.add(proof.nonce);
  }

  if (onProgress != null) {
    onProgress(1.0);
  }

  return Solution(
    id: config.id,
    nonces: nonces,
  );
}