|
|
|
@ -3,9 +3,8 @@ let jobId = 0;
|
|
|
|
|
let currentTrace = 0
|
|
|
|
|
let plotlyDiv;
|
|
|
|
|
const workers = [];
|
|
|
|
|
async function run(messageLength, numWorkers = 1, nonceTrials=100) {
|
|
|
|
|
async function run(messageLength, numWorkers = 1, nonceTrials = 100, ttl = 72) {
|
|
|
|
|
const timestamp = Math.floor(Date.now() / 1000);
|
|
|
|
|
const ttl = 4 * 24 * 60 * 60;
|
|
|
|
|
const pubKey = '05ec8635a07a13743516c7c9b3412f3e8252efb7fcaf67eb1615ffba62bebc6802';
|
|
|
|
|
const message = randomString(messageLength);
|
|
|
|
|
const messageBuffer = dcodeIO.ByteBuffer.wrap(message, 'utf8').toArrayBuffer();
|
|
|
|
@ -18,7 +17,7 @@ async function run(messageLength, numWorkers = 1, nonceTrials=100) {
|
|
|
|
|
jobId += 1;
|
|
|
|
|
const increment = numWorkers;
|
|
|
|
|
const index = w;
|
|
|
|
|
worker.postMessage([jobId, 'calcPoW', timestamp, ttl, pubKey, data, false, nonceTrials, increment, index]);
|
|
|
|
|
worker.postMessage([jobId, 'calcPoW', timestamp, ttl * 60 * 60, pubKey, data, false, nonceTrials, increment, index]);
|
|
|
|
|
const p = new Promise(resolve => {
|
|
|
|
|
worker.onmessage = (nonce) => {
|
|
|
|
|
resolve(nonce);
|
|
|
|
@ -34,8 +33,8 @@ async function run(messageLength, numWorkers = 1, nonceTrials=100) {
|
|
|
|
|
workers.forEach(worker => worker.terminate());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50 }) {
|
|
|
|
|
const name = `W:${numWorkers} - NT: ${nonceTrials} - L:${messageLength}`;
|
|
|
|
|
async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50, ttl = 72 }) {
|
|
|
|
|
const name = `W:${numWorkers} - NT: ${nonceTrials} - L:${messageLength} - TTL:${ttl}`;
|
|
|
|
|
Plotly.addTraces(plotlyDiv ,{
|
|
|
|
|
y: [],
|
|
|
|
|
type: 'box',
|
|
|
|
@ -44,7 +43,7 @@ async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50 }
|
|
|
|
|
});
|
|
|
|
|
for (let i = 0; i < iteration; i += 1) {
|
|
|
|
|
// eslint-disable-next-line no-await-in-loop
|
|
|
|
|
await run(messageLength, numWorkers, nonceTrials);
|
|
|
|
|
await run(messageLength, numWorkers, nonceTrials, ttl);
|
|
|
|
|
}
|
|
|
|
|
currentTrace += 1;
|
|
|
|
|
console.log(`done for ${name}`);
|
|
|
|
@ -53,7 +52,7 @@ async function runPoW({ iteration, nonceTrials, numWorkers, messageLength = 50 }
|
|
|
|
|
|
|
|
|
|
function randomString(length) {
|
|
|
|
|
let text = '';
|
|
|
|
|
const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
|
|
|
const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
|
|
|
for (let i = 0; i < length; i += 1)
|
|
|
|
|
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
|
|
|
|
return text;
|
|
|
|
@ -69,9 +68,10 @@ async function startMessageLengthRun() {
|
|
|
|
|
const messageLengthStart0 = parseFloat(document.getElementById('messageLengthStart0').value);
|
|
|
|
|
const messageLengthStop0 = parseFloat(document.getElementById('messageLengthStop0').value);
|
|
|
|
|
const messageLengthStep0 = parseFloat(document.getElementById('messageLengthStep0').value);
|
|
|
|
|
const TTL0 = parseFloat(document.getElementById('TTL0').value);
|
|
|
|
|
for (let l = messageLengthStart0; l < messageLengthStop0; l += messageLengthStep0) {
|
|
|
|
|
// eslint-disable-next-line no-await-in-loop
|
|
|
|
|
await runPoW({ iteration: iteration0, nonceTrials: nonceTrials0, numWorkers: numWorkers0, messageLength: l });
|
|
|
|
|
await runPoW({ iteration: iteration0, nonceTrials: nonceTrials0, numWorkers: numWorkers0, messageLength: l, ttl: TTL0 });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
async function startNumWorkerRun() {
|
|
|
|
@ -80,9 +80,10 @@ async function startNumWorkerRun() {
|
|
|
|
|
const numWorkersStart1 = parseFloat(document.getElementById('numWorkersStart1').value);
|
|
|
|
|
const numWorkersEnd1 = parseFloat(document.getElementById('numWorkersEnd1').value);
|
|
|
|
|
const messageLength1 = parseFloat(document.getElementById('messageLength1').value);
|
|
|
|
|
const TTL1 = parseFloat(document.getElementById('TTL1').value);
|
|
|
|
|
for (let numWorkers = numWorkersStart1; numWorkers <= numWorkersEnd1; numWorkers +=1) {
|
|
|
|
|
// eslint-disable-next-line no-await-in-loop
|
|
|
|
|
await runPoW({ iteration: iteration1, nonceTrials: nonceTrials1, numWorkers, messageLength: messageLength1 });
|
|
|
|
|
await runPoW({ iteration: iteration1, nonceTrials: nonceTrials1, numWorkers, messageLength: messageLength1, ttl: TTL1 });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
async function startNonceTrialsRun() {
|
|
|
|
@ -92,9 +93,23 @@ async function startNonceTrialsRun() {
|
|
|
|
|
const nonceTrialsStart2 = parseFloat(document.getElementById('nonceTrialsStart2').value);
|
|
|
|
|
const nonceTrialsStop2 = parseFloat(document.getElementById('nonceTrialsStop2').value);
|
|
|
|
|
const nonceTrialsStep2 = parseFloat(document.getElementById('nonceTrialsStep2').value);
|
|
|
|
|
const TTL2 = parseFloat(document.getElementById('TTL2').value);
|
|
|
|
|
for (let n = nonceTrialsStart2; n < nonceTrialsStop2; n += nonceTrialsStep2) {
|
|
|
|
|
// eslint-disable-next-line no-await-in-loop
|
|
|
|
|
await runPoW({ iteration: iteration2, nonceTrials: n, numWorkers: numWorkers2, messageLength: messageLength2 });
|
|
|
|
|
await runPoW({ iteration: iteration2, nonceTrials: n, numWorkers: numWorkers2, messageLength: messageLength2, ttl: TTL2 });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
async function starTTLRun() {
|
|
|
|
|
const iteration3 = parseFloat(document.getElementById('iteration3').value);
|
|
|
|
|
const nonceTrials3 = parseFloat(document.getElementById('nonceTrials3').value);
|
|
|
|
|
const messageLength3 = parseFloat(document.getElementById('messageLength3').value);
|
|
|
|
|
const numWorkers3 = parseFloat(document.getElementById('numWorkers3').value);
|
|
|
|
|
const TTLStart3 = parseFloat(document.getElementById('TTLStart3').value);
|
|
|
|
|
const TTLStop3 = parseFloat(document.getElementById('TTLStop3').value);
|
|
|
|
|
const TTLStep3 = parseFloat(document.getElementById('TTLStep3').value);
|
|
|
|
|
for (let ttl = TTLStart3; ttl < TTLStop3; ttl += TTLStep3) {
|
|
|
|
|
// eslint-disable-next-line no-await-in-loop
|
|
|
|
|
await runPoW({ iteration: iteration3, nonceTrials: nonceTrials3, numWorkers: numWorkers3, messageLength: messageLength3, ttl });
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
async function start(index) {
|
|
|
|
@ -118,6 +133,9 @@ async function start(index) {
|
|
|
|
|
case 2:
|
|
|
|
|
await startNonceTrialsRun();
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
await starTTLRun();
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|