chain: minor refactor.

This commit is contained in:
Christopher Jeffrey 2017-05-21 09:05:35 -07:00
parent 75c279169c
commit 1eaafb1a09
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -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;