chain: minor refactor.
This commit is contained in:
parent
75c279169c
commit
1eaafb1a09
@ -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;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user