chaindb: fix reorg handling for spv.

This commit is contained in:
Christopher Jeffrey 2016-10-03 08:47:41 -07:00
parent f5625e76e1
commit 0d9afabd87
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -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;