mirror of
https://github.com/sequentialread/pow-captcha.git
synced 2025-10-14 00:59:24 +00:00
stpid eclipse ignoring delete side of moved files bug
This commit is contained in:
parent
51d6c51b28
commit
d4b4bf7b66
@ -1,143 +0,0 @@
|
|||||||
|
|
||||||
// IN ORDER FOR CHANGES TO THIS FILE TO "TAKE" AND BE USED IN THE APP, THE BUILD IN wasm_build HAS TO BE RE-RUN
|
|
||||||
|
|
||||||
// scrypt and scryptPromise will be filled out by js code that gets appended below this script by the wasm_build process
|
|
||||||
let scrypt;
|
|
||||||
let scryptPromise;
|
|
||||||
|
|
||||||
let working = false;
|
|
||||||
const batchSize = 8;
|
|
||||||
|
|
||||||
onmessage = function(e) {
|
|
||||||
if(e.data.stop) {
|
|
||||||
working = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const challengeBase64 = e.data.challenge;
|
|
||||||
const workerId = e.data.workerId;
|
|
||||||
if(!challengeBase64) {
|
|
||||||
postMessage({
|
|
||||||
type: "error",
|
|
||||||
challenge: challengeBase64,
|
|
||||||
message: `challenge was not provided`
|
|
||||||
});
|
|
||||||
}
|
|
||||||
working = true;
|
|
||||||
let challengeJSON = null;
|
|
||||||
let challenge = null;
|
|
||||||
try {
|
|
||||||
challengeJSON = atob(challengeBase64);
|
|
||||||
} catch (err) {
|
|
||||||
postMessage({
|
|
||||||
type: "error",
|
|
||||||
challenge: challengeBase64,
|
|
||||||
message: `couldn't decode challenge '${challengeBase64}' as base64: ${err}`
|
|
||||||
});
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
challenge = JSON.parse(challengeJSON);
|
|
||||||
} catch (err) {
|
|
||||||
postMessage({
|
|
||||||
type: "error",
|
|
||||||
challenge: challengeBase64,
|
|
||||||
message: `couldn't parse challenge '${challengeJSON}' as json: ${err}`
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
challenge = {
|
|
||||||
cpuAndMemoryCost: challenge.N,
|
|
||||||
blockSize: challenge.r,
|
|
||||||
paralellization: challenge.p,
|
|
||||||
keyLength: challenge.klen,
|
|
||||||
preimage: challenge.i,
|
|
||||||
difficulty: challenge.d,
|
|
||||||
difficultyLevel: challenge.dl
|
|
||||||
}
|
|
||||||
|
|
||||||
const probabilityOfFailurePerAttempt = 1-(1/Math.pow(2, challenge.difficultyLevel));
|
|
||||||
|
|
||||||
let i = workerId * Math.pow(2, challenge.difficulty.length) * 100;
|
|
||||||
const hexPreimage = base64ToHex(challenge.preimage);
|
|
||||||
let smallestHash = challenge.difficulty.split("").map(x => "f").join("");
|
|
||||||
|
|
||||||
postMessage({
|
|
||||||
type: "progress",
|
|
||||||
challenge: challengeBase64,
|
|
||||||
attempts: 0,
|
|
||||||
smallestHash: smallestHash,
|
|
||||||
difficulty: challenge.difficulty,
|
|
||||||
probabilityOfFailurePerAttempt: probabilityOfFailurePerAttempt
|
|
||||||
});
|
|
||||||
|
|
||||||
const doWork = () => {
|
|
||||||
|
|
||||||
var j = 0;
|
|
||||||
while(j < batchSize) {
|
|
||||||
j++;
|
|
||||||
i++;
|
|
||||||
|
|
||||||
let nonceHex = i.toString(16);
|
|
||||||
if((nonceHex.length % 2) == 1) {
|
|
||||||
nonceHex = `0${nonceHex}`;
|
|
||||||
}
|
|
||||||
const hashHex = scrypt(
|
|
||||||
nonceHex,
|
|
||||||
hexPreimage,
|
|
||||||
challenge.cpuAndMemoryCost,
|
|
||||||
challenge.blockSize,
|
|
||||||
challenge.paralellization,
|
|
||||||
challenge.keyLength
|
|
||||||
);
|
|
||||||
|
|
||||||
//console.log(i.toString(16), hashHex);
|
|
||||||
|
|
||||||
const endOfHash = hashHex.substring(hashHex.length-challenge.difficulty.length);
|
|
||||||
if(endOfHash < smallestHash) {
|
|
||||||
smallestHash = endOfHash
|
|
||||||
}
|
|
||||||
if(endOfHash <= challenge.difficulty) {
|
|
||||||
postMessage({
|
|
||||||
type: "success",
|
|
||||||
challenge: challengeBase64,
|
|
||||||
nonce: i.toString(16),
|
|
||||||
smallestHash: endOfHash,
|
|
||||||
difficulty: challenge.difficulty
|
|
||||||
});
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
postMessage({
|
|
||||||
type: "progress",
|
|
||||||
challenge: challengeBase64,
|
|
||||||
attempts: batchSize,
|
|
||||||
smallestHash: smallestHash,
|
|
||||||
difficulty: challenge.difficulty,
|
|
||||||
probabilityOfFailurePerAttempt: probabilityOfFailurePerAttempt
|
|
||||||
});
|
|
||||||
|
|
||||||
if(working) {
|
|
||||||
this.setTimeout(doWork, 1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if(scrypt) {
|
|
||||||
doWork();
|
|
||||||
} else {
|
|
||||||
scryptPromise.then(() => {
|
|
||||||
doWork();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// https://stackoverflow.com/questions/39460182/decode-base64-to-hexadecimal-string-with-javascript
|
|
||||||
function base64ToHex(str) {
|
|
||||||
const raw = atob(str);
|
|
||||||
let result = '';
|
|
||||||
for (let i = 0; i < raw.length; i++) {
|
|
||||||
const hex = raw.charCodeAt(i).toString(16);
|
|
||||||
result += (hex.length === 2 ? hex : '0' + hex);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user