##// END OF EJS Templates
Don't show an asterist in the page title after updating posts when number of...
Don't show an asterist in the page title after updating posts when number of new posts is >1

File last commit:

r1462:dde38eed default
r1467:02e3df39 default
Show More
proof_of_work.js
63 lines | 1.7 KiB | application/javascript | JavascriptLexer
var POW_COMPUTING_TIMEOUT = 2;
var POW_HASH_LENGTH = 16;
var hasher;
function computeHash(iteration, guess, target, payload, timestamp, hasher, port) {
iteration += 1;
var hash = hasher(payload + iteration).toString();
guess = hash.substring(0, POW_HASH_LENGTH);
if (guess <= target) {
//console.log("Iteration: ", iteration);
//console.log("Guess: ", guess);
//console.log("Target: ", target);
var data = {
iteration: iteration,
timestamp: timestamp,
guess: guess
};
port.postMessage(data);
} else {
//console.log("Iteration: ", iteration);
//console.log("Guess: ", guess);
//console.log("Target: ", target);
setTimeout(function() {
computeHash(iteration, guess, target, payload, timestamp, hasher, port);
}, POW_COMPUTING_TIMEOUT);
}
}
function doWork(message, hasher, difficulty, port) {
var timestamp = Date.now();
var iteration = 0;
var payload = timestamp + message;
var target = parseInt(Math.pow(2, POW_HASH_LENGTH * 3) / difficulty).toString();
while (target.length < POW_HASH_LENGTH) {
target = '0' + target;
}
var guess = target + '0';
setTimeout(function() {
computeHash(iteration, guess, target, payload, timestamp, hasher, port);
}, POW_COMPUTING_TIMEOUT);
}
onconnect = function(e) {
var port = e.ports[0];
port.start();
port.onmessage = function(e) {
var difficulty = e.data.difficulty;
importScripts(e.data.hasher);
var hasher = CryptoJS.SHA256;
self.doWork(e.data.msg, hasher, difficulty, port);
};
}