mirror of
https://github.com/mCaptcha/mCaptcha.git
synced 2024-11-26 03:15:58 +03:00
feat: upload pow performance benchmarks
This commit is contained in:
parent
d8a145cf87
commit
1c4ee5b622
3 changed files with 51 additions and 5 deletions
|
@ -63,6 +63,8 @@ export const solveCaptchaRunner = async (e: Event): Promise<void> => {
|
|||
string: config.string,
|
||||
nonce: resp.work.nonce,
|
||||
result: resp.work.result,
|
||||
time: resp.work.time,
|
||||
worker_type: resp.work.worker_type,
|
||||
};
|
||||
|
||||
// 3. submit work
|
||||
|
|
|
@ -11,31 +11,66 @@
|
|||
|
||||
import { gen_pow } from "@mcaptcha/pow-wasm";
|
||||
import * as p from "@mcaptcha/pow_sha256-polyfill";
|
||||
import { WasmWork, PoWConfig } from "./types";
|
||||
import { WasmWork, PoWConfig, SubmitWork } from "./types";
|
||||
|
||||
/**
|
||||
* proove work
|
||||
* @param {PoWConfig} config - the proof-of-work configuration using which
|
||||
* work needs to be computed
|
||||
* */
|
||||
const prove = async (config: PoWConfig): Promise<WasmWork> => {
|
||||
let proof: WasmWork = null;
|
||||
const prove = async (config: PoWConfig): Promise<SubmitWork> => {
|
||||
const WASM = "wasm";
|
||||
const JS = "js";
|
||||
if (WasmSupported) {
|
||||
let proof: WasmWork = null;
|
||||
let res: SubmitWork = null;
|
||||
let time: number = null;
|
||||
|
||||
const t0 = performance.now();
|
||||
const proofString = gen_pow(
|
||||
config.salt,
|
||||
config.string,
|
||||
config.difficulty_factor
|
||||
);
|
||||
const t1 = performance.now();
|
||||
time = t1 - t0;
|
||||
|
||||
proof = JSON.parse(proofString);
|
||||
const worker_type = WASM;
|
||||
res = {
|
||||
result: proof.result,
|
||||
nonce: proof.nonce,
|
||||
worker_type,
|
||||
time,
|
||||
};
|
||||
return res;
|
||||
} else {
|
||||
console.log("WASM unsupported, expect delay during proof generation");
|
||||
|
||||
let proof: WasmWork = null;
|
||||
let time: number = null;
|
||||
let res: SubmitWork = null;
|
||||
|
||||
const t0 = performance.now();
|
||||
|
||||
proof = await p.generate_work(
|
||||
config.salt,
|
||||
config.string,
|
||||
config.difficulty_factor
|
||||
);
|
||||
const t1 = performance.now();
|
||||
time = t1 - t0;
|
||||
|
||||
const worker_type = JS;
|
||||
res = {
|
||||
result: proof.result,
|
||||
nonce: proof.nonce,
|
||||
worker_type,
|
||||
time,
|
||||
};
|
||||
|
||||
return res;
|
||||
}
|
||||
return proof;
|
||||
};
|
||||
|
||||
// credits: @jf-bastien on Stack Overflow
|
||||
|
|
|
@ -14,6 +14,15 @@ export type Work = {
|
|||
nonce: number;
|
||||
string: string;
|
||||
key: string;
|
||||
time: number;
|
||||
worker_type: string;
|
||||
};
|
||||
|
||||
export type SubmitWork = {
|
||||
time: number;
|
||||
worker_type: string;
|
||||
result: string;
|
||||
nonce: number;
|
||||
};
|
||||
|
||||
export type WasmWork = {
|
||||
|
@ -22,7 +31,7 @@ export type WasmWork = {
|
|||
};
|
||||
|
||||
export type ServiceWorkerWork = {
|
||||
work: WasmWork;
|
||||
work: SubmitWork;
|
||||
duration: number;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue