index for output spend matching (speeds ups tx api

This commit is contained in:
Matias Alejo Garcia 2014-02-10 14:09:28 -03:00
parent 0bbc9763b2
commit 7496fc47de
3 changed files with 13 additions and 14 deletions

View File

@ -74,6 +74,8 @@ function spec(b) {
var k = OUTS_PREFIX + txid;
var ret=[];
var idx={};
var i = 0;
// outs.
db.createReadStream({start: k, end: k + '~'})
@ -85,27 +87,24 @@ function spec(b) {
value_sat: parseInt(v[1]),
index: parseInt(k[2]),
});
idx[parseInt(k[2])]= i++;
})
.on('error', function (err) {
return cb(err);
})
.on('end', function () {
var k = SPEND_PREFIX + txid;
var l = ret.length;
db.createReadStream({start: k, end: k + '~'})
.on('data', function (data) {
var k = data.key.split('-');
var v = data.value.split(':');
var set=0;
for(var i=0; i<l; i++) {
if (ret[i].index === parseInt(k[3])) {
ret[i].spendTxId = v[0];
ret[i].spendIndex = parseInt(v[1]);
set=1;
}
}
assert(set,'Spent could not be stored: tx ' + txid +
'spend in TX:' + k[2] + ',' + k[3]);
var j = idx[parseInt(k[3])];
assert(typeof j !== 'undefined','Spent could not be stored: tx ' + txid +
'spend in TX:' + k[2] + ',' + k[3]+ ' j:' + j);
ret[j].spendTxId = v[0];
ret[j].spendIndex = parseInt(v[1]);
})
.on('error', function (err) {
return cb(err);

View File

@ -43,9 +43,9 @@
},
{
"addr": "mzW2hdZN2um7WBvTDerdahKqRgj3md9C29",
"txApperances": 6046,
"balance": 1149.19744101,
"totalReceived": 1149.19744101,
"txApperances": 6047,
"balance": 1199.74393851,
"totalReceived": 1199.74393851,
"totalSent": 0
},
{