From 1eaafb1a091285c35ecba7a5e05e7b5982021433 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Sun, 21 May 2017 09:05:35 -0700 Subject: [PATCH] chain: minor refactor. --- lib/blockchain/chain.js | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/lib/blockchain/chain.js b/lib/blockchain/chain.js index 87f55c5e..51abcf3c 100644 --- a/lib/blockchain/chain.js +++ b/lib/blockchain/chain.js @@ -1236,7 +1236,7 @@ Chain.prototype._add = co(function* add(block, flags, id) { } // Do not revalidate known invalid blocks. - if (this.hasInvalid(hash, block)) { + if (this.hasInvalid(block)) { this.logger.debug('Invalid ancestors for block: %s.', block.rhash()); throw new VerifyError(block, 'duplicate', 'duplicate', 100); } @@ -1499,7 +1499,7 @@ Chain.prototype.storeOrphan = function storeOrphan(block, flags, id) { 'Removing forked orphan block: %s (%d).', orphan.block.rhash(), height); - this.removeOrphan(orphan.block.hash('hex')); + this.removeOrphan(orphan); } this.limitOrphans(); @@ -1540,13 +1540,13 @@ Chain.prototype.addOrphan = function addOrphan(orphan) { /** * Remove an orphan. * @private - * @param {Hash} hash + * @param {Orphan} orphan * @returns {Orphan} */ -Chain.prototype.removeOrphan = function removeOrphan(hash) { - var orphan = this.orphanMap[hash]; +Chain.prototype.removeOrphan = function removeOrphan(orphan) { var block = orphan.block; + var hash = block.hash('hex'); assert(this.orphanMap[hash]); assert(this.orphanPrev[block.prevBlock]); @@ -1583,7 +1583,7 @@ Chain.prototype.resolveOrphan = function resolveOrphan(hash) { if (!orphan) return; - return this.removeOrphan(orphan.block.hash('hex')); + return this.removeOrphan(orphan); }; /** @@ -1611,7 +1611,6 @@ Chain.prototype.purgeOrphans = function purgeOrphans() { Chain.prototype.limitOrphans = function limitOrphans() { var now = util.now(); var hashes = Object.keys(this.orphanMap); - var total = 0; var i, hash, orphan, oldest; for (i = 0; i < hashes.length; i++) { @@ -1624,33 +1623,28 @@ Chain.prototype.limitOrphans = function limitOrphans() { continue; } - this.removeOrphan(hash); - - total++; + this.removeOrphan(orphan); } - if (this.orphanCount >= this.options.maxOrphans) { - if (total === 0 && oldest) { - hash = oldest.block.hash('hex'); - this.removeOrphan(hash); - } - } + if (this.orphanCount < this.options.maxOrphans) + return; - if (total > 0) - this.logger.warning('Pruned %d orphans!', total); + if (!oldest) + return; - return total; + this.removeOrphan(oldest); }; /** * Test whether an invalid block hash has been seen. * @private - * @param {Hash} hash * @param {Block} block * @returns {Boolean} */ -Chain.prototype.hasInvalid = function hasInvalid(hash, block) { +Chain.prototype.hasInvalid = function hasInvalid(block) { + var hash = block.hash('hex'); + if (this.invalid.has(hash)) return true;