From 0d9afabd876210802e89b148b5164a45b78f94af Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Mon, 3 Oct 2016 08:47:41 -0700 Subject: [PATCH] chaindb: fix reorg handling for spv. --- lib/chain/chaindb.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/chain/chaindb.js b/lib/chain/chaindb.js index 96985df8..d30119a7 100644 --- a/lib/chain/chaindb.js +++ b/lib/chain/chaindb.js @@ -11,7 +11,6 @@ var AsyncObject = require('../utils/async'); var constants = require('../protocol/constants'); var utils = require('../utils/utils'); var assert = require('assert'); -var DUMMY = new Buffer([0]); var BufferWriter = require('../utils/writer'); var BufferReader = require('../utils/reader'); var co = require('../utils/co'); @@ -24,6 +23,7 @@ var Coin = require('../primitives/coin'); var TX = require('../primitives/tx'); var Address = require('../primitives/address'); var ChainEntry = require('./chainentry'); +var DUMMY = new Buffer([0]); /* * Database Layout: @@ -655,7 +655,7 @@ ChainDB.prototype.disconnect = co(function* disconnect(entry) { if (this.options.spv) { this.put(layout.R, this.pending.commit(entry.prevBlock)); yield this.commit(); - return [entry, entry.toHeaders()]; + return entry.toHeaders(); } try { @@ -1032,18 +1032,19 @@ ChainDB.prototype.disconnectBlock = co(function* disconnectBlock(block) { */ ChainDB.prototype.fillCoins = co(function* fillCoins(tx) { - var i, input, coin; + var i, input, prevout, coin; if (tx.isCoinbase()) return tx; for (i = 0; i < tx.inputs.length; i++) { input = tx.inputs[i]; + prevout = input.prevout; if (input.coin) continue; - coin = yield this.getCoin(input.prevout.hash, input.prevout.index); + coin = yield this.getCoin(prevout.hash, prevout.index); if (coin) input.coin = coin;