From 044d54e12e172b93dea0064c6cf9f67296dc0c69 Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Fri, 8 Apr 2016 18:15:50 -0700 Subject: [PATCH] add total balance. --- bin/bcoin-cli | 1 + lib/bcoin/http/client.js | 9 ++++++--- lib/bcoin/http/server.js | 9 ++++++--- lib/bcoin/txdb.js | 11 ++++++++--- package.json | 2 +- test/node-test.js | 10 +++++----- test/wallet-test.js | 12 ++++++------ 7 files changed, 33 insertions(+), 21 deletions(-) diff --git a/bin/bcoin-cli b/bin/bcoin-cli index 43bc3325..37950a3d 100755 --- a/bin/bcoin-cli +++ b/bin/bcoin-cli @@ -171,6 +171,7 @@ function getBalance(callback) { return callback(err); utils.print('Confirmed: %s', utils.btc(balance.confirmed)); utils.print('Unconfirmed: %s', utils.btc(balance.unconfirmed)); + utils.print('Total: %s', utils.btc(balance.total)); callback(); }); } diff --git a/lib/bcoin/http/client.js b/lib/bcoin/http/client.js index f57bc5ea..55e6d574 100644 --- a/lib/bcoin/http/client.js +++ b/lib/bcoin/http/client.js @@ -92,7 +92,8 @@ Client.prototype._init = function _init() { self.socket.on('balance', function(balance, id) { self.emit('balance', { confirmed: utils.satoshi(balance.confirmed), - unconfirmed: utils.satoshi(balance.unconfirmed) + unconfirmed: utils.satoshi(balance.unconfirmed), + total: utils.satoshi(balance.total) }, id); }); @@ -101,7 +102,8 @@ Client.prototype._init = function _init() { Object.keys(json).forEach(function(id) { balances[id] = { confirmed: utils.satoshi(json[id].confirmed), - unconfirmed: utils.satoshi(json[id].unconfirmed) + unconfirmed: utils.satoshi(json[id].unconfirmed), + total: utils.satoshi(json[id].total) }; }); self.emit('balances', balances); @@ -331,7 +333,8 @@ Client.prototype.getWalletBalance = function getBalance(id, callback) { return callback(null, { confirmed: utils.satoshi(body.confirmed), - unconfirmed: utils.satoshi(body.unconfirmed) + unconfirmed: utils.satoshi(body.unconfirmed), + total: utils.satoshi(body.total) }); }); }; diff --git a/lib/bcoin/http/server.js b/lib/bcoin/http/server.js index eac95bce..c342749d 100644 --- a/lib/bcoin/http/server.js +++ b/lib/bcoin/http/server.js @@ -389,7 +389,8 @@ NodeServer.prototype._init = function _init() { send(200, { confirmed: utils.btc(balance.confirmed), - unconfirmed: utils.btc(balance.unconfirmed) + unconfirmed: utils.btc(balance.unconfirmed), + total: utils.btc(balance.total) }); }); }); @@ -594,7 +595,8 @@ NodeServer.prototype._initIO = function _initIO() { this.walletdb.on('balance', function(balance, id) { var json = { confirmed: utils.btc(balance.confirmed), - unconfirmed: utils.btc(balance.unconfirmed) + unconfirmed: utils.btc(balance.unconfirmed), + total: utils.btc(balance.total) }; self.server.io.to(id).emit('balance', json); self.server.io.to('!all').emit('balance', json, id); @@ -605,7 +607,8 @@ NodeServer.prototype._initIO = function _initIO() { Object.keys(balances).forEach(function(id) { json[id] = { confirmed: utils.btc(balances[id].confirmed), - unconfirmed: utils.btc(balances[id].unconfirmed) + unconfirmed: utils.btc(balances[id].unconfirmed), + total: utils.btc(balances[id].total) }; }); self.server.io.to('!all').emit('balances', json); diff --git a/lib/bcoin/txdb.js b/lib/bcoin/txdb.js index 03c03896..29349617 100644 --- a/lib/bcoin/txdb.js +++ b/lib/bcoin/txdb.js @@ -1594,12 +1594,17 @@ TXPool.prototype.getBalance = function getBalance(address, callback) { return callback(err); for (i = 0; i < coins.length; i++) { - if (coins[i].height !== -1) + if (coins[i].height === -1) + unconfirmed.iadd(coins[i].value); + else confirmed.iadd(coins[i].value); - unconfirmed.iadd(coins[i].value); } - return callback(null, { confirmed: confirmed, unconfirmed: unconfirmed }); + return callback(null, { + confirmed: confirmed, + unconfirmed: unconfirmed, + total: confirmed.add(unconfirmed) + }); }); }; diff --git a/package.json b/package.json index 526a26a7..aee3ac2b 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ }, "preferGlobal": false, "scripts": { - "test": "mocha --reporter spec test/*-test.js" + "test": "BCOIN_NETWORK=main mocha --reporter spec test/*-test.js" }, "repository": "git://github.com/bcoin-org/bcoin.git", "keywords": [ diff --git a/test/node-test.js b/test/node-test.js index 9a3ac59e..7a584d21 100644 --- a/test/node-test.js +++ b/test/node-test.js @@ -99,27 +99,27 @@ describe('Wallet', function() { assert.noError(err); node.mempool.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '0'); + assert.equal(balance.total.toString(10), '0'); node.mempool.addTX(t1, function(err) { assert.noError(err); node.mempool.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '60000'); + assert.equal(balance.total.toString(10), '60000'); node.mempool.addTX(t2, function(err) { assert.noError(err); node.mempool.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '50000'); + assert.equal(balance.total.toString(10), '50000'); node.mempool.addTX(t3, function(err) { assert.noError(err); node.mempool.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '22000'); + assert.equal(balance.total.toString(10), '22000'); node.mempool.addTX(f1, function(err) { assert.noError(err); node.mempool.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '20000'); + assert.equal(balance.total.toString(10), '20000'); node.mempool.getAll(function(err, txs) { assert(txs.some(function(tx) { return tx.hash('hex') === f1.hash('hex'); diff --git a/test/wallet-test.js b/test/wallet-test.js index 5a63ea3c..d9e4dcfe 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -193,26 +193,26 @@ describe('Wallet', function() { assert.noError(err); w.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '22500'); + assert.equal(balance.total.toString(10), '22500'); wdb.addTX(t1, function(err) { w.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '73000'); + assert.equal(balance.total.toString(10), '73000'); wdb.addTX(t2, function(err) { assert.noError(err); w.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '47000'); + assert.equal(balance.total.toString(10), '47000'); wdb.addTX(t3, function(err) { assert.noError(err); w.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '22000'); + assert.equal(balance.total.toString(10), '22000'); wdb.addTX(f1, function(err) { assert.noError(err); w.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '11000'); + assert.equal(balance.total.toString(10), '11000'); w.getAll(function(err, txs) { assert(txs.some(function(tx) { return tx.hash('hex') === f1.hash('hex'); @@ -247,7 +247,7 @@ describe('Wallet', function() { assert.noError(err); dw.getBalance(function(err, balance) { assert.noError(err); - assert.equal(balance.unconfirmed.toString(10), '11000'); + assert.equal(balance.total.toString(10), '11000'); cb(); }); });