only tag unconfirmed txs
This commit is contained in:
parent
11c5bd92a7
commit
bbb6890fd5
|
@ -2864,6 +2864,34 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
|
|||
});
|
||||
};
|
||||
|
||||
function tagLowFees(wallet, txs, cb) {
|
||||
var unconfirmed = _.filter(txs, {
|
||||
confirmations: 0
|
||||
});
|
||||
if (_.isEmpty(unconfirmed)) return cb();
|
||||
|
||||
self.getFeeLevels({
|
||||
network: wallet.network
|
||||
}, function(err, levels) {
|
||||
if (err) {
|
||||
log.warn('Could not fetch fee levels', err);
|
||||
} else {
|
||||
var level = _.find(levels, {
|
||||
level: 'superEconomy'
|
||||
});
|
||||
if (!level || !level.nbBlocks) {
|
||||
log.debug('Cannot compute super economy fee level from blockchain');
|
||||
} else {
|
||||
var minFeePerKb = level.feePerKb;
|
||||
_.each(unconfirmed, function(tx) {
|
||||
tx.lowFees = tx.feePerKb < minFeePerKb;
|
||||
});
|
||||
}
|
||||
}
|
||||
return cb();
|
||||
});
|
||||
};
|
||||
|
||||
self.getWallet({}, function(err, wallet) {
|
||||
if (err) return cb(err);
|
||||
|
||||
|
@ -2912,24 +2940,9 @@ WalletService.prototype.getTxHistory = function(opts, cb) {
|
|||
|
||||
var finalTxs = decorate(wallet, res.txs.items, addresses, res.txps, res.notes);
|
||||
|
||||
self.getFeeLevels({
|
||||
network: wallet.network
|
||||
}, function(err, levels) {
|
||||
if (err) {
|
||||
log.warn('Could not fetch fee levels', err);
|
||||
} else {
|
||||
var level = _.find(levels, {
|
||||
level: 'superEconomy'
|
||||
});
|
||||
if (!level || !level.nbBlocks) {
|
||||
log.debug('Cannot compute super economy fee level from blockchain');
|
||||
} else {
|
||||
var minFeePerKb = level.feePerKb;
|
||||
_.each(finalTxs, function(tx) {
|
||||
tx.lowFees = tx.feePerKb < minFeePerKb;
|
||||
});
|
||||
}
|
||||
}
|
||||
tagLowFees(wallet, finalTxs, function(err) {
|
||||
if (err)
|
||||
log.warn('Failed to tag unconfirmed with low fee');
|
||||
|
||||
if (res.txs.fromCache)
|
||||
log.debug("History from cache for:", self.walletId, from, to);
|
||||
|
|
|
@ -6305,14 +6305,14 @@ describe('Wallet service', function() {
|
|||
done();
|
||||
});
|
||||
});
|
||||
it('should set lowFees atribute for sub-superEconomy level fees', function(done) {
|
||||
it('should set lowFees atribute for sub-superEconomy level fees on unconfirmed txs', function(done) {
|
||||
helpers.stubFeeLevels({
|
||||
24: 10000,
|
||||
});
|
||||
server._normalizeTxHistory = sinon.stub().returnsArg(0);
|
||||
var txs = [{
|
||||
txid: '1',
|
||||
confirmations: 1,
|
||||
confirmations: 0,
|
||||
fees: 100,
|
||||
time: 20,
|
||||
inputs: [{
|
||||
|
@ -6326,7 +6326,7 @@ describe('Wallet service', function() {
|
|||
size: 500,
|
||||
}, {
|
||||
txid: '2',
|
||||
confirmations: 1,
|
||||
confirmations: 0,
|
||||
fees: 6000,
|
||||
time: 20,
|
||||
inputs: [{
|
||||
|
@ -6338,6 +6338,20 @@ describe('Wallet service', function() {
|
|||
amount: 200,
|
||||
}],
|
||||
size: 500,
|
||||
}, {
|
||||
txid: '3',
|
||||
confirmations: 6,
|
||||
fees: 100,
|
||||
time: 20,
|
||||
inputs: [{
|
||||
address: 'external',
|
||||
amount: 500,
|
||||
}],
|
||||
outputs: [{
|
||||
address: mainAddresses[0].address,
|
||||
amount: 200,
|
||||
}],
|
||||
size: 500,
|
||||
}];
|
||||
helpers.stubHistory(txs);
|
||||
server.getTxHistory({}, function(err, txs) {
|
||||
|
@ -6345,9 +6359,12 @@ describe('Wallet service', function() {
|
|||
var tx = txs[0];
|
||||
tx.feePerKb.should.equal(200);
|
||||
tx.lowFees.should.be.true;
|
||||
var tx = txs[1];
|
||||
tx = txs[1];
|
||||
tx.feePerKb.should.equal(12000);
|
||||
tx.lowFees.should.be.false;
|
||||
tx = txs[2];
|
||||
tx.feePerKb.should.equal(200);
|
||||
should.not.exist(tx.lowFees);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue