mempool address methods.

This commit is contained in:
Christopher Jeffrey 2016-06-12 07:47:24 -07:00
parent f313b43414
commit 18ff108a77
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -460,7 +460,40 @@ Mempool.prototype.isSpent = function isSpent(hash, index, callback) {
*/
Mempool.prototype.getCoinsByAddress = function getCoinsByAddress(addresses, callback) {
return this.chain.db.getCoinsByAddress.call(this, addresses, callback);
var self = this;
var coins = [];
if (!Array.isArray(addresses))
addresses = [addresses];
addresses = utils.uniq(addresses);
utils.forEachSerial(addresses, function(address, next) {
address = bcoin.address.getHash(address);
if (!address)
return next();
self.db.lookup({
gte: 'C/' + address,
lte: 'C/' + address + '~',
transform: function(key) {
key = key.split('/');
return 'c/' + key[2] + '/' + key[3];
},
parse: function(data, key) {
var coin = bcoin.coin.fromRaw(data);
key = key.split('/');
coin.hash = key[1];
coin.index = +key[2];
coins.push(coin);
}
}, next);
}, function(err) {
if (err)
return callback(err);
return callback(null, coins);
});
};
/**
@ -470,7 +503,44 @@ Mempool.prototype.getCoinsByAddress = function getCoinsByAddress(addresses, call
*/
Mempool.prototype.getTXByAddress = function getTXByAddress(addresses, callback) {
return this.chain.db.getTXByAddress.call(this, addresses, callback);
var self = this;
var txs = [];
var have = {};
if (!Array.isArray(addresses))
addresses = [addresses];
addresses = utils.uniq(addresses);
utils.forEachSerial(addresses, function(address, next) {
address = bcoin.address.getHash(address);
if (!address)
return next();
self.db.lookup({
gte: 'T/' + address,
lte: 'T/' + address + '~',
transform: function(key) {
var hash = key.split('/')[2];
if (addresses.length > 1) {
if (have[hash])
return false;
have[hash] = true;
}
return 't/' + hash;
},
parse: function(data, key) {
txs.push(bcoin.tx.fromRaw(data));
}
}, next);
}, function(err) {
if (err)
return callback(err);
return callback(null, txs);
});
};
/**