diff --git a/app/modules/prover/lib/blockProver.ts b/app/modules/prover/lib/blockProver.ts index 03676a8f4daa5f6bc7a8cb0f8716615a68544adf..f3e036770c0a9bd84a98312be58c031f4f4fc753 100644 --- a/app/modules/prover/lib/blockProver.ts +++ b/app/modules/prover/lib/blockProver.ts @@ -201,12 +201,12 @@ export class BlockProver { this.logger.info('Done: #%s, %s in %ss instead of %ss (%s tests, ~%s tests/s)', block.number, proof.hash, (duration / 1000).toFixed(2), this.conf.avgGenTime, testsCount, testsPerSecond.toFixed(2)); this.logger.info('FOUND proof-of-work with %s leading zeros followed by [0-' + highMark + ']!', nbZeros); - if(this.conf.ecoMode === true && this.conf.nbCores*testsPerSecond > 300) { + if(this.conf.ecoMode === true && this.conf.nbCores*testsPerSecond > ProverConstants.ECO_MODE_MINIMAL_TESTS_PER_SECONDS) { if(this.conf.nbCores > 1) { this.logger.info("Reducing number of CPU cores "+this.conf.nbCores) this.conf.nbCores = this.conf.nbCores -1 } - else if(this.conf.cpu > 0.19){ + else if(this.conf.cpu > ProverConstants.ECO_MODE_MINIMAL_CPU){ let cpu:number = this.conf.cpu - 0.1 this.logger.info("Slowing down the CPU to "+cpu) this.changeCPU(cpu) diff --git a/app/modules/prover/lib/constants.ts b/app/modules/prover/lib/constants.ts index 2b8299c335620178aa08a47f85452b6e53eef058..66dbe534b71721b1bfc2f0e798e3e2f12fc5ebab 100644 --- a/app/modules/prover/lib/constants.ts +++ b/app/modules/prover/lib/constants.ts @@ -5,12 +5,15 @@ export const ProverConstants = { MINIMAL_ZEROS_TO_SHOW_IN_LOGS: 3, POW_MINIMAL_TO_SHOW: 2, - DEFAULT_ECO_MODE: true, + DEFAULT_ECO_MODE: false, DEFAULT_CPU: 0.6, DEFAULT_PEER_ID: 1, MIN_PEER_ID: 1, MAX_PEER_ID: 899, // Due to MAX_SAFE_INTEGER = 9007199254740991 (16 digits, and we use 11 digits for the nonce + 2 digits for core number => 3 digits for the peer, must be below 900) + ECO_MODE_MINIMAL_TESTS_PER_SECONDS: 300, + ECO_MODE_MINIMAL_CPU: 0.19, + NONCE_RANGE: 1000 * 1000 * 1000 * 100, POW_MAXIMUM_ACCEPTABLE_HANDICAP: 64, diff --git a/app/modules/prover/lib/powCluster.ts b/app/modules/prover/lib/powCluster.ts index 8e6e658434c893ddc695bc50bb07f15078c92f91..15d8d24c322dcf0209a2fbf5eca8902bc0c10e45 100644 --- a/app/modules/prover/lib/powCluster.ts +++ b/app/modules/prover/lib/powCluster.ts @@ -185,27 +185,24 @@ export class Master { // Start the salves' job this.slaves.forEach((s:any, index) => { - if(index < stuff.newPoW.conf.nbCores) { - s.worker.send({ - uuid, - command: 'newPoW', - value: { - block: stuff.newPoW.block, - nonceBeginning: s.nonceBeginning, - zeros: stuff.newPoW.zeros, - highMark: stuff.newPoW.highMark, - pair: _.clone(stuff.newPoW.pair), - forcedTime: stuff.newPoW.forcedTime, - turnDuration: stuff.newPoW.turnDuration, - conf: { - medianTimeBlocks: stuff.newPoW.conf.medianTimeBlocks, - avgGenTime: stuff.newPoW.conf.avgGenTime, - cpu: stuff.newPoW.conf.cpu, - prefix: stuff.newPoW.conf.prefix - } + s.worker.send({ + uuid, + command: 'newPoW', + value: { + block: stuff.newPoW.block, + nonceBeginning: s.nonceBeginning, + zeros: stuff.newPoW.zeros, + highMark: stuff.newPoW.highMark, + pair: _.clone(stuff.newPoW.pair), + forcedTime: stuff.newPoW.forcedTime, + turnDuration: stuff.newPoW.turnDuration,conf: { + medianTimeBlocks: stuff.newPoW.conf.medianTimeBlocks, + avgGenTime: stuff.newPoW.conf.avgGenTime, + cpu: stuff.newPoW.conf.cpu, + prefix: stuff.newPoW.conf.prefix } - }) - } + } + }) }) return await this.currentPromise diff --git a/test/integration/proof-of-work.js b/test/integration/proof-of-work.js index dd507167a895b22c4d7aba1f99f35d43ca280b05..4d61810e3507c298d615437650ea3b6dc958932e 100644 --- a/test/integration/proof-of-work.js +++ b/test/integration/proof-of-work.js @@ -36,11 +36,10 @@ const prover = new BlockProver({ const now = 1474382274 * 1000; const MUST_START_WITH_A_ZERO = 16; const MUST_START_WITH_TWO_ZEROS = 32; -const MUST_START_WITH_THREE_ZEROS = 58; +const MUST_START_WITH_A_ZERO_AND_A_NUMBER = 22 describe("Proof-of-work", function() { - this.timeout(6*60000) it('should be able to find an easy PoW', () => co(function*() { let block = yield prover.prove({ issuer: 'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd', @@ -53,12 +52,19 @@ describe("Proof-of-work", function() { })); it('should be reducing cpu when the PoW is too easy for the cpu', () => co(function*() { + prover.conf.nbCores = 2 + prover.conf.cpu = 0.9 + prover.conf.nbCores.should.equal(2) + prover.conf.cpu.should.equal(0.9) for(let i=0; i<8; ++i) { - let block = yield prover.prove({ + yield prover.prove({ issuer: 'HgTTJLAQ5sqfknMq7yLPZbehtuLSsKj9CxWN7k8QvYJd', - number: i+2 - }, MUST_START_WITH_THREE_ZEROS, now); + number: i+2, + now + }, MUST_START_WITH_A_ZERO_AND_A_NUMBER, now); } + prover.conf.nbCores.should.equal(1) + prover.conf.cpu.should.be.below(0.9) })); // Too randomly successing test // it('should be able to cancel a proof-of-work on other PoW receival', () => co(function*() {