chaindb: fix reorg handling for spv.
This commit is contained in:
parent
f5625e76e1
commit
0d9afabd87
@ -11,7 +11,6 @@ var AsyncObject = require('../utils/async');
|
|||||||
var constants = require('../protocol/constants');
|
var constants = require('../protocol/constants');
|
||||||
var utils = require('../utils/utils');
|
var utils = require('../utils/utils');
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var DUMMY = new Buffer([0]);
|
|
||||||
var BufferWriter = require('../utils/writer');
|
var BufferWriter = require('../utils/writer');
|
||||||
var BufferReader = require('../utils/reader');
|
var BufferReader = require('../utils/reader');
|
||||||
var co = require('../utils/co');
|
var co = require('../utils/co');
|
||||||
@ -24,6 +23,7 @@ var Coin = require('../primitives/coin');
|
|||||||
var TX = require('../primitives/tx');
|
var TX = require('../primitives/tx');
|
||||||
var Address = require('../primitives/address');
|
var Address = require('../primitives/address');
|
||||||
var ChainEntry = require('./chainentry');
|
var ChainEntry = require('./chainentry');
|
||||||
|
var DUMMY = new Buffer([0]);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Database Layout:
|
* Database Layout:
|
||||||
@ -655,7 +655,7 @@ ChainDB.prototype.disconnect = co(function* disconnect(entry) {
|
|||||||
if (this.options.spv) {
|
if (this.options.spv) {
|
||||||
this.put(layout.R, this.pending.commit(entry.prevBlock));
|
this.put(layout.R, this.pending.commit(entry.prevBlock));
|
||||||
yield this.commit();
|
yield this.commit();
|
||||||
return [entry, entry.toHeaders()];
|
return entry.toHeaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -1032,18 +1032,19 @@ ChainDB.prototype.disconnectBlock = co(function* disconnectBlock(block) {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
ChainDB.prototype.fillCoins = co(function* fillCoins(tx) {
|
ChainDB.prototype.fillCoins = co(function* fillCoins(tx) {
|
||||||
var i, input, coin;
|
var i, input, prevout, coin;
|
||||||
|
|
||||||
if (tx.isCoinbase())
|
if (tx.isCoinbase())
|
||||||
return tx;
|
return tx;
|
||||||
|
|
||||||
for (i = 0; i < tx.inputs.length; i++) {
|
for (i = 0; i < tx.inputs.length; i++) {
|
||||||
input = tx.inputs[i];
|
input = tx.inputs[i];
|
||||||
|
prevout = input.prevout;
|
||||||
|
|
||||||
if (input.coin)
|
if (input.coin)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
coin = yield this.getCoin(input.prevout.hash, input.prevout.index);
|
coin = yield this.getCoin(prevout.hash, prevout.index);
|
||||||
|
|
||||||
if (coin)
|
if (coin)
|
||||||
input.coin = coin;
|
input.coin = coin;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user