From b7998d614b5ed11f879bc6446acd7f3822b19f0d Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Tue, 28 Feb 2017 16:53:44 +0100 Subject: [PATCH] [fix] #856 Do not apply block length rule for block#0 --- app/lib/dup/indexer.js | 7 ++++++- doc/Protocol.md | 2 ++ package.json | 2 +- test/fast/block/protocol-brg50-blocksize.js | 21 +++++++++++++-------- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/lib/dup/indexer.js b/app/lib/dup/indexer.js index 0646912bc..37b5b429e 100644 --- a/app/lib/dup/indexer.js +++ b/app/lib/dup/indexer.js @@ -965,7 +965,12 @@ const indexer = module.exports = { }, // BR_G50 - ruleBlockSize: (HEAD) => HEAD.bsize < indexer.DUP_HELPERS.getMaxBlockSize(HEAD), + ruleBlockSize: (HEAD) => { + if (HEAD.number > 0) { + return HEAD.bsize < indexer.DUP_HELPERS.getMaxBlockSize(HEAD); + } + return true; + }, // BR_G98 ruleCurrency: (block, HEAD) => { diff --git a/doc/Protocol.md b/doc/Protocol.md index 379382a28..c4feaf30f 100644 --- a/doc/Protocol.md +++ b/doc/Protocol.md @@ -2058,6 +2058,8 @@ If `HEAD.number > 0`: Rule: +If `HEAD.number > 0`: + HEAD.size < MAX(500 ; CEIL(1.10 * HEAD.avgBlockSize)) ###### BR_G98 - Currency diff --git a/package.json b/package.json index 0ceeef364..b88fd5504 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "duniter-common": "0.1.0", "duniter-crawler": "^0.2.9", "duniter-keypair": "^0.3.0", - "duniter-prover": "^0.2.5", + "duniter-prover": "^0.2.6", "event-stream": "3.3.4", "inquirer": "0.8.5", "jison": "0.4.17", diff --git a/test/fast/block/protocol-brg50-blocksize.js b/test/fast/block/protocol-brg50-blocksize.js index 475934eaf..30b4ab42a 100644 --- a/test/fast/block/protocol-brg50-blocksize.js +++ b/test/fast/block/protocol-brg50-blocksize.js @@ -9,42 +9,47 @@ const SUCCESS = true; describe("Protocol BR_G50 - Block size", function(){ it('2 for an AVG(10) should succeed', () => co(function*(){ - const HEAD = { bsize: 2, avgBlockSize: 10 }; + const HEAD = { number: 24, bsize: 2, avgBlockSize: 10 }; indexer.ruleBlockSize(HEAD).should.equal(SUCCESS); })); it('400 for an AVG(10) should succeed', () => co(function*(){ - const HEAD = { bsize: 400, avgBlockSize: 10 }; + const HEAD = { number: 24, bsize: 400, avgBlockSize: 10 }; indexer.ruleBlockSize(HEAD).should.equal(SUCCESS); })); it('499 for an AVG(10) should succeed', () => co(function*(){ - const HEAD = { bsize: 499, avgBlockSize: 10 }; + const HEAD = { number: 24, bsize: 499, avgBlockSize: 10 }; indexer.ruleBlockSize(HEAD).should.equal(SUCCESS); })); it('500 for an AVG(10) should fail', () => co(function*(){ - const HEAD = { bsize: 500, avgBlockSize: 10 }; + const HEAD = { number: 24, bsize: 500, avgBlockSize: 10 }; indexer.ruleBlockSize(HEAD).should.equal(FAIL); })); it('500 for an AVG(454) should fail', () => co(function*(){ - const HEAD = { bsize: 500, avgBlockSize: 454 }; + const HEAD = { number: 24, bsize: 500, avgBlockSize: 454 }; indexer.ruleBlockSize(HEAD).should.equal(FAIL); })); it('500 for an AVG(455) should succeed', () => co(function*(){ - const HEAD = { bsize: 500, avgBlockSize: 455 }; + const HEAD = { number: 24, bsize: 500, avgBlockSize: 455 }; indexer.ruleBlockSize(HEAD).should.equal(SUCCESS); })); it('1100 for an AVG(1000) should fail', () => co(function*(){ - const HEAD = { bsize: 1100, avgBlockSize: 1000 }; + const HEAD = { number: 24, bsize: 1100, avgBlockSize: 1000 }; indexer.ruleBlockSize(HEAD).should.equal(FAIL); })); it('1100 for an AVG(1001) should succeed', () => co(function*(){ - const HEAD = { bsize: 1100, avgBlockSize: 1001 }; + const HEAD = { number: 24, bsize: 1100, avgBlockSize: 1001 }; + indexer.ruleBlockSize(HEAD).should.equal(SUCCESS); + })); + + it('1100 for block#0 should succeed', () => co(function*(){ + const HEAD = { number: 0, bsize: 1100, avgBlockSize: 0 }; indexer.ruleBlockSize(HEAD).should.equal(SUCCESS); })); }); -- GitLab