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

View File

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