diff --git a/app/models/Address.js b/app/models/Address.js index 657b67e..cdb820b 100644 --- a/app/models/Address.js +++ b/app/models/Address.js @@ -21,8 +21,7 @@ function spec() { var a = new BitcoreAddress(addrStr); a.validate(); this.addrStr = addrStr; - - + Object.defineProperty(this, 'totalSent', { get: function() { return parseFloat(this.totalSentSat) / parseFloat(BitcoreUtil.COIN); @@ -56,6 +55,8 @@ function spec() { Address.prototype.update = function(next) { var self = this; + if (!self.addrStr) return next(); + var db = new TransactionDb(); async.series([ function (cb) { diff --git a/lib/TransactionDb.js b/lib/TransactionDb.js index 9e5da43..3b4ee25 100644 --- a/lib/TransactionDb.js +++ b/lib/TransactionDb.js @@ -9,7 +9,7 @@ function spec(b) { var IN_BLK_PREFIX = 'tx-b-'; //tx-b-- => 1/0 (connected or not) // Only for orphan blocks -// var FROM_BLK_PREFIX = 'tx-'; //tx-- => 1/0 (connected or not) + var FROM_BLK_PREFIX = 'tx-'; //tx-- => 1 // to show tx outs var OUTS_PREFIX = 'txouts-'; //txouts-- => [addr, btc_sat] @@ -408,6 +408,7 @@ function spec(b) { db.batch() .put(IN_BLK_PREFIX + txId + '-' + blockHash, confirmed) + .put(FROM_BLK_PREFIX + blockHash + '-' + txId, 1) .write(c); }; @@ -430,19 +431,20 @@ function spec(b) { }; TransactionDb.prototype.handleBlockChange = function(hash, isMain, cb) { - var k = IN_BLK_PREFIX; var toChange = []; console.log('\tSearching Txs from block:' + hash); + var k = FROM_BLK_PREFIX + hash; + var k2 = IN_BLK_PREFIX; // This is slow, but prevent us to create a new block->tx index. db.createReadStream({start: k, end: k + '~'}) .on('data', function (data) { - if (data.key.indexOf(hash)>=0) + var ks = data.key.split('-'); toChange.push({ + key: k2 + ks[2] + '-' + ks[1], type: 'put', - key: data.key, value: isMain?1:0, - }); + }); }) .on('error', function (err) { return cb(err);