add index to handle txs in orphan blocks faster

This commit is contained in:
Matias Alejo Garcia 2014-02-09 09:34:47 -03:00
parent 165b8f53ca
commit 2eacaf3bf9
2 changed files with 10 additions and 7 deletions

View File

@ -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) {

View File

@ -9,7 +9,7 @@ function spec(b) {
var IN_BLK_PREFIX = 'tx-b-'; //tx-b-<txid>-<block> => 1/0 (connected or not)
// Only for orphan blocks
// var FROM_BLK_PREFIX = 'tx-'; //tx-<block>-<txid> => 1/0 (connected or not)
var FROM_BLK_PREFIX = 'tx-'; //tx-<block>-<txid> => 1
// to show tx outs
var OUTS_PREFIX = 'txouts-'; //txouts-<txid>-<n> => [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);