From c5618a0b2a647886d3a4cd7d73d30a934f8692cc Mon Sep 17 00:00:00 2001 From: Xe Iaso Date: Fri, 1 Aug 2025 21:10:36 +0000 Subject: [PATCH] chore(web/js): delete proof-of-work-slow.mjs This code has served its purpose and now needs to be retired to the great beyond. There is no replacement for this, the fast implementation will be used instead. Signed-off-by: Xe Iaso --- web/js/main.mjs | 7 ++- web/js/proof-of-work-slow.mjs | 99 ----------------------------------- 2 files changed, 3 insertions(+), 103 deletions(-) delete mode 100644 web/js/proof-of-work-slow.mjs diff --git a/web/js/main.mjs b/web/js/main.mjs index 44bdfbe..e10000a 100644 --- a/web/js/main.mjs +++ b/web/js/main.mjs @@ -1,9 +1,8 @@ -import processFast from "./proof-of-work.mjs"; -import processSlow from "./proof-of-work-slow.mjs"; +import process from "./proof-of-work.mjs"; const algorithms = { - fast: processFast, - slow: processSlow, + fast: process, + slow: process, }; // from Xeact diff --git a/web/js/proof-of-work-slow.mjs b/web/js/proof-of-work-slow.mjs deleted file mode 100644 index 33780f8..0000000 --- a/web/js/proof-of-work-slow.mjs +++ /dev/null @@ -1,99 +0,0 @@ -// https://dev.to/ratmd/simple-proof-of-work-in-javascript-3kgm - -export default function process( - data, - difficulty = 5, - signal = null, - progressCallback = null, - _threads = 1, -) { - console.debug("slow algo"); - return new Promise((resolve, reject) => { - let webWorkerURL = URL.createObjectURL( - new Blob(["(", processTask(), ")()"], { type: "application/javascript" }), - ); - - let worker = new Worker(webWorkerURL); - let settled = false; - - const cleanup = () => { - if (settled) return; - settled = true; - worker.terminate(); - if (signal != null) { - signal.removeEventListener("abort", onAbort); - } - URL.revokeObjectURL(webWorkerURL); - }; - - const onAbort = () => { - console.log("PoW aborted"); - cleanup(); - reject(new DOMException("Aborted", "AbortError")); - }; - - if (signal != null) { - if (signal.aborted) { - return onAbort(); - } - signal.addEventListener("abort", onAbort, { once: true }); - } - - worker.onmessage = (event) => { - if (typeof event.data === "number") { - progressCallback?.(event.data); - } else { - cleanup(); - resolve(event.data); - } - }; - - worker.onerror = (event) => { - cleanup(); - reject(event); - }; - - worker.postMessage({ - data, - difficulty, - }); - }); -} - -function processTask() { - return function () { - const sha256 = (text) => { - const encoded = new TextEncoder().encode(text); - return crypto.subtle.digest("SHA-256", encoded.buffer).then((result) => - Array.from(new Uint8Array(result)) - .map((c) => c.toString(16).padStart(2, "0")) - .join(""), - ); - }; - - addEventListener("message", async (event) => { - let data = event.data.data; - let difficulty = event.data.difficulty; - - let hash; - let nonce = 0; - do { - if ((nonce & 1023) === 0) { - postMessage(nonce); - } - hash = await sha256(data + nonce++); - } while ( - hash.substring(0, difficulty) !== Array(difficulty + 1).join("0") - ); - - nonce -= 1; // last nonce was post-incremented - - postMessage({ - hash, - data, - difficulty, - nonce, - }); - }); - }.toString(); -}