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.
|
// 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());
|
this.logger.debug('Invalid ancestors for block: %s.', block.rhash());
|
||||||
throw new VerifyError(block, 'duplicate', 'duplicate', 100);
|
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).',
|
'Removing forked orphan block: %s (%d).',
|
||||||
orphan.block.rhash(), height);
|
orphan.block.rhash(), height);
|
||||||
|
|
||||||
this.removeOrphan(orphan.block.hash('hex'));
|
this.removeOrphan(orphan);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.limitOrphans();
|
this.limitOrphans();
|
||||||
@ -1540,13 +1540,13 @@ Chain.prototype.addOrphan = function addOrphan(orphan) {
|
|||||||
/**
|
/**
|
||||||
* Remove an orphan.
|
* Remove an orphan.
|
||||||
* @private
|
* @private
|
||||||
* @param {Hash} hash
|
* @param {Orphan} orphan
|
||||||
* @returns {Orphan}
|
* @returns {Orphan}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Chain.prototype.removeOrphan = function removeOrphan(hash) {
|
Chain.prototype.removeOrphan = function removeOrphan(orphan) {
|
||||||
var orphan = this.orphanMap[hash];
|
|
||||||
var block = orphan.block;
|
var block = orphan.block;
|
||||||
|
var hash = block.hash('hex');
|
||||||
|
|
||||||
assert(this.orphanMap[hash]);
|
assert(this.orphanMap[hash]);
|
||||||
assert(this.orphanPrev[block.prevBlock]);
|
assert(this.orphanPrev[block.prevBlock]);
|
||||||
@ -1583,7 +1583,7 @@ Chain.prototype.resolveOrphan = function resolveOrphan(hash) {
|
|||||||
if (!orphan)
|
if (!orphan)
|
||||||
return;
|
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() {
|
Chain.prototype.limitOrphans = function limitOrphans() {
|
||||||
var now = util.now();
|
var now = util.now();
|
||||||
var hashes = Object.keys(this.orphanMap);
|
var hashes = Object.keys(this.orphanMap);
|
||||||
var total = 0;
|
|
||||||
var i, hash, orphan, oldest;
|
var i, hash, orphan, oldest;
|
||||||
|
|
||||||
for (i = 0; i < hashes.length; i++) {
|
for (i = 0; i < hashes.length; i++) {
|
||||||
@ -1624,33 +1623,28 @@ Chain.prototype.limitOrphans = function limitOrphans() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.removeOrphan(hash);
|
this.removeOrphan(orphan);
|
||||||
|
|
||||||
total++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.orphanCount >= this.options.maxOrphans) {
|
if (this.orphanCount < this.options.maxOrphans)
|
||||||
if (total === 0 && oldest) {
|
return;
|
||||||
hash = oldest.block.hash('hex');
|
|
||||||
this.removeOrphan(hash);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (total > 0)
|
if (!oldest)
|
||||||
this.logger.warning('Pruned %d orphans!', total);
|
return;
|
||||||
|
|
||||||
return total;
|
this.removeOrphan(oldest);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test whether an invalid block hash has been seen.
|
* Test whether an invalid block hash has been seen.
|
||||||
* @private
|
* @private
|
||||||
* @param {Hash} hash
|
|
||||||
* @param {Block} block
|
* @param {Block} block
|
||||||
* @returns {Boolean}
|
* @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))
|
if (this.invalid.has(hash))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user