diff --git a/lib/blockchain/chain.js b/lib/blockchain/chain.js index 706a48db..20f5171b 100644 --- a/lib/blockchain/chain.js +++ b/lib/blockchain/chain.js @@ -17,7 +17,7 @@ var btcutils = require('../btc/utils'); var Locker = require('../utils/locker'); var LRU = require('../utils/lru'); var ChainEntry = require('./chainentry'); -var CoinView = require('./coinview'); +var CoinView = require('../coins/coinview'); var assert = require('assert'); var errors = require('../btc/errors'); var VerifyError = errors.VerifyError; diff --git a/lib/blockchain/chaindb.js b/lib/blockchain/chaindb.js index e698b1a5..9d04381d 100644 --- a/lib/blockchain/chaindb.js +++ b/lib/blockchain/chaindb.js @@ -17,9 +17,9 @@ var Amount = require('../btc/amount'); var encoding = require('../utils/encoding'); var co = require('../utils/co'); var Network = require('../protocol/network'); -var CoinView = require('./coinview'); -var Coins = require('./coins'); -var UndoCoins = require('./undocoins'); +var CoinView = require('../coins/coinview'); +var Coins = require('../coins/coins'); +var UndoCoins = require('../coins/undocoins'); var LDB = require('../db/ldb'); var layout = require('./layout'); var LRU = require('../utils/lru'); diff --git a/lib/coins/coinview.js b/lib/coins/coinview.js index 1927647a..2e0f5b3f 100644 --- a/lib/coins/coinview.js +++ b/lib/coins/coinview.js @@ -115,6 +115,9 @@ CoinView.prototype.addCoin = function addCoin(coin) { this.add(coins); } + if (coin.script.isUnspendable()) + return; + if (!coins.has(coin.index)) coins.addCoin(coin); }; @@ -137,6 +140,9 @@ CoinView.prototype.addOutput = function addOutput(hash, index, output) { this.add(coins); } + if (output.script.isUnspendable()) + return; + if (!coins.has(index)) coins.addOutput(index, output); }; @@ -383,18 +389,19 @@ CoinView.prototype.toArray = function toArray() { */ CoinView.prototype.toFast = function toFast(bw, tx) { - var i, input, coins, entry; + var i, input, prevout, coins, entry; for (i = 0; i < tx.inputs.length; i++) { input = tx.inputs[i]; - coins = this.get(input.prevout.hash); + prevout = input.prevout; + coins = this.get(prevout.hash); if (!coins) { bw.writeU8(0); continue; } - entry = coins.get(input.prevout.index); + entry = coins.get(prevout.index); if (!entry) { bw.writeU8(0);