diff --git a/lib/mempool/mempool.js b/lib/mempool/mempool.js index c7ea18b0..889ab2f6 100644 --- a/lib/mempool/mempool.js +++ b/lib/mempool/mempool.js @@ -1579,7 +1579,7 @@ Mempool.prototype.trackEntry = function trackEntry(entry) { this.tx[hash] = entry; if (this.options.indexAddress) - this.indexTX.addTX(tx); + this.txIndex.addTX(tx); assert(!tx.isCoinbase()); @@ -1784,30 +1784,12 @@ Mempool.prototype.getSize = function getSize() { function AddressIndex(mempool) { this.mempool = mempool; + this.index = {}; this.map = {}; } -AddressIndex.prototype.getCoins = function getCoins(address) { - var items = this.map[address]; - var out = []; - var i, item, outpoint, coin; - - if (!items) - return out; - - for (i = 0; i < items.length; i++) { - item = items[i]; - outpoint = Outpoint.fromRaw(item); - coin = this.mempool.getCoin(outpoint.hash, outpoint.index); - assert(coin); - out.push(coin); - } - - return out; -}; - AddressIndex.prototype.getTX = function getTX(address) { - var items = this.map[address]; + var items = this.index[address]; var out = []; var i, hash, tx; @@ -1831,11 +1813,11 @@ AddressIndex.prototype.addTX = function addTX(tx) { for (i = 0; i < hashes.length; i++) { hash = hashes[i]; - items = this.map[hash]; + items = this.index[hash]; if (!items) { items = []; - this.map[hash] = items; + this.index[hash] = items; } utils.binaryInsert(items, tx.hash(), utils.cmp); @@ -1854,7 +1836,7 @@ AddressIndex.prototype.removeTX = function removeTX(tx) { for (i = 0; i < hashes.length; i++) { hash = hashes[i]; - items = this.map[hash]; + items = this.index[hash]; if (!items) continue; @@ -1862,12 +1844,31 @@ AddressIndex.prototype.removeTX = function removeTX(tx) { utils.binaryRemove(items, tx.hash(), utils.cmp); if (items.length === 0) - delete this.map[hash]; + delete this.index[hash]; } delete this.map[key]; }; +AddressIndex.prototype.getCoins = function getCoins(address) { + var items = this.index[address]; + var out = []; + var i, item, outpoint, coin; + + if (!items) + return out; + + for (i = 0; i < items.length; i++) { + item = items[i]; + outpoint = Outpoint.fromRaw(item); + coin = this.mempool.getCoin(outpoint.hash, outpoint.index); + assert(coin); + out.push(coin); + } + + return out; +}; + AddressIndex.prototype.addCoin = function addCoin(coin) { var key = coin.hash + coin.index; var hash = coin.getHash('hex'); @@ -1876,11 +1877,11 @@ AddressIndex.prototype.addCoin = function addCoin(coin) { if (!hash) return; - items = this.map[hash]; + items = this.index[hash]; if (!items) { items = []; - this.map[hash] = items; + this.index[hash] = items; } outpoint = Outpoint(coin.hash, coin.index).toRaw(); @@ -1897,7 +1898,7 @@ AddressIndex.prototype.removeCoin = function removeCoin(coin) { if (!hash) return; - items = this.map[hash]; + items = this.index[hash]; if (!items) return; @@ -1906,7 +1907,7 @@ AddressIndex.prototype.removeCoin = function removeCoin(coin) { utils.binaryRemove(items, outpoint, utils.cmp); if (items.length === 0) - delete this.map[hash]; + delete this.index[hash]; delete this.map[key]; };