Merge pull request #251 from braydonf/bug/tx-count

Fix bug with address summary transaction count.
This commit is contained in:
Chris Kleeschulte 2015-09-22 14:14:17 -04:00
commit fa59000819
2 changed files with 36 additions and 19 deletions

View File

@ -570,6 +570,23 @@ describe('Node Functionality', function() {
});
});
it('summary for an address (sending and receiving)', function(done) {
node.services.address.getAddressSummary(address, {}, function(err, results) {
if (err) {
throw err;
}
results.totalReceived.should.equal(2000000000);
results.totalSpent.should.equal(1999990000);
results.balance.should.equal(10000);
results.unconfirmedBalance.should.equal(10000);
results.appearances.should.equal(6);
results.unconfirmedAppearances.should.equal(0);
results.txids.length.should.equal(6);
done();
});
});
it('total transaction count (sending and receiving)', function(done) {
var addresses = [
address

View File

@ -906,19 +906,14 @@ AddressService.prototype.getAddressSummary = function(address, options, callback
var outputs;
var inputs;
var mempoolInputs;
async.parallel(
[
function(next) {
if(options.noTxList) {
setImmediate(next);
} else {
self.getInputs(address, opt, function(err, ins) {
inputs = ins;
next(err);
});
}
self.getInputs(address, opt, function(err, ins) {
inputs = ins;
next(err);
});
},
function(next) {
self.getOutputs(address, opt, function(err, outs) {
@ -936,8 +931,8 @@ AddressService.prototype.getAddressSummary = function(address, options, callback
var totalSpent = 0;
var balance = 0;
var unconfirmedBalance = 0;
var appearances = 0;
var unconfirmedAppearances = 0;
var appearanceIds = {};
var unconfirmedAppearanceIds = {};
var txids = [];
for(var i = 0; i < outputs.length; i++) {
@ -951,9 +946,9 @@ AddressService.prototype.getAddressSummary = function(address, options, callback
if(outputs[i].confirmations) {
totalReceived += outputs[i].satoshis;
balance += outputs[i].satoshis;
appearances++;
appearanceIds[outputs[i].txid] = true;
} else {
unconfirmedAppearances++;
unconfirmedAppearanceIds[outputs[i].txid] = true;
}
if(spentDB || spentMempool) {
@ -961,23 +956,28 @@ AddressService.prototype.getAddressSummary = function(address, options, callback
if(spentDB) {
totalSpent += outputs[i].satoshis;
balance -= outputs[i].satoshis;
appearances++;
} else {
unconfirmedAppearances++;
}
}
}
for(var j = 0; j < inputs.length; j++) {
if (inputs[j].confirmations) {
appearanceIds[inputs[j].txid] = true;
} else {
unconfirmedAppearanceIds[outputs[j].txid] = true;
}
}
var summary = {
totalReceived: totalReceived,
totalSpent: totalSpent,
balance: balance,
unconfirmedBalance: unconfirmedBalance,
appearances: appearances,
unconfirmedAppearances: unconfirmedAppearances
appearances: Object.keys(appearanceIds).length,
unconfirmedAppearances: Object.keys(unconfirmedAppearanceIds).length
};
if(inputs) {
if(!options.noTxList) {
for(var i = 0; i < inputs.length; i++) {
txids.push(inputs[i]);
}