This commit is contained in:
Christopher Jeffrey 2016-06-13 08:23:32 -07:00
parent fc6feb2125
commit b088d3fb44
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
2 changed files with 18 additions and 7 deletions

View File

@ -170,6 +170,8 @@ Fullnode.prototype._init = function _init() {
}); });
this.chain.on('add block', function(block) { this.chain.on('add block', function(block) {
if (!self.chain.isFull())
return;
self.mempool.addBlock(block, function(err) { self.mempool.addBlock(block, function(err) {
if (err) if (err)
self.emit('error', err); self.emit('error', err);
@ -177,11 +179,15 @@ Fullnode.prototype._init = function _init() {
}); });
this.chain.on('remove block', function(block) { this.chain.on('remove block', function(block) {
self.mempool.removeBlock(block, function(err) { self.walletdb.removeBlock(block, function(err) {
if (err) if (err)
self.emit('error', err); self.emit('error', err);
}); });
self.walletdb.removeBlock(block, function(err) {
if (!self.chain.isFull())
return;
self.mempool.removeBlock(block, function(err) {
if (err) if (err)
self.emit('error', err); self.emit('error', err);
}); });

View File

@ -229,7 +229,8 @@ Mempool.prototype.addBlock = function addBlock(block, callback, force) {
callback = utils.wrap(callback, unlock); callback = utils.wrap(callback, unlock);
entries = []; entries = [];
utils.forEachSerial(block.txs.slice().reverse(), function(tx, next) { utils.forRangeSerial(0, block.txs.length, function(i, next) {
var tx = block.txs[block.txs.length - 1 - i];
var hash = tx.hash('hex'); var hash = tx.hash('hex');
if (tx.isCoinbase()) if (tx.isCoinbase())
@ -287,10 +288,12 @@ Mempool.prototype.removeBlock = function removeBlock(block, callback, force) {
callback = utils.wrap(callback, unlock); callback = utils.wrap(callback, unlock);
utils.forEachSerial(block.txs, function(tx, next) { utils.forEachSerial(block.txs, function(tx, next) {
var hash = tx.hash('hex');
if (tx.isCoinbase()) if (tx.isCoinbase())
return next(); return next();
self.hasTX(tx.hash('hex'), function(err, result) { self.hasTX(hash, function(err, result) {
if (err) if (err)
return next(err); return next(err);
@ -902,7 +905,7 @@ Mempool.prototype.addUnchecked = function addUnchecked(entry, callback, force) {
Mempool.prototype.removeUnchecked = function removeUnchecked(entry, limit, callback, force) { Mempool.prototype.removeUnchecked = function removeUnchecked(entry, limit, callback, force) {
var self = this; var self = this;
var unlock, rate; var unlock, rate, hash;
unlock = this._lock(removeUnchecked, [entry, limit, callback], force); unlock = this._lock(removeUnchecked, [entry, limit, callback], force);
@ -911,6 +914,8 @@ Mempool.prototype.removeUnchecked = function removeUnchecked(entry, limit, callb
callback = utils.wrap(callback, unlock); callback = utils.wrap(callback, unlock);
hash = entry.tx.hash('hex');
this.fillAllHistory(entry.tx, function(err) { this.fillAllHistory(entry.tx, function(err) {
if (err) if (err)
return callback(err); return callback(err);
@ -925,10 +930,10 @@ Mempool.prototype.removeUnchecked = function removeUnchecked(entry, limit, callb
self.size -= self.memUsage(entry.tx); self.size -= self.memUsage(entry.tx);
self.total--; self.total--;
self.network.fees.removeTX(entry.tx.hash('hex')); self.network.fees.removeTX(hash);
if (limit) { if (limit) {
rate = bcoin.tx.getRate(entry.size, entry.fees); rate = bcoin.tx.getRate(entry.sizes, entry.fees);
rate += self.minReasonableFee; rate += self.minReasonableFee;
if (rate > self.minFeeRate) { if (rate > self.minFeeRate) {
self.minFeeRate = rate; self.minFeeRate = rate;