Skip to content

Commit

Permalink
Merge pull request #251 from braydonf/bug/tx-count
Browse files Browse the repository at this point in the history
Fix bug with address summary transaction count.
  • Loading branch information
kleetus committed Sep 22, 2015
2 parents 8a2a0ab + 80fadc7 commit fa59000
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 19 deletions.
17 changes: 17 additions & 0 deletions integration/regtest-node.js
Expand Up @@ -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
Expand Down
38 changes: 19 additions & 19 deletions lib/services/address/index.js
Expand Up @@ -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) {
Expand All @@ -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++) {
Expand All @@ -951,33 +946,38 @@ 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) {
unconfirmedBalance -= outputs[i].satoshis;
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]);
}
Expand Down

0 comments on commit fa59000

Please sign in to comment.