From f0bf9c860273f90a83ac012636e33f129c3a122d Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Tue, 22 Mar 2016 19:24:56 -0700 Subject: [PATCH] mempool --- lib/bcoin/mempool.js | 47 ++++++++++++++++++++++---------------------- lib/bcoin/tx.js | 2 +- 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/lib/bcoin/mempool.js b/lib/bcoin/mempool.js index cd5ed45f..21c5a293 100644 --- a/lib/bcoin/mempool.js +++ b/lib/bcoin/mempool.js @@ -248,11 +248,11 @@ Mempool.prototype.addTX = function addTX(tx, peer, callback, force) { callback = utils.asyncify(callback); if (!this.checkTX(tx, peer)) - return callback(new Error('CheckTransaction failed')); + return callback(new VerifyError('CheckTransaction failed', -1)); if (tx.isCoinbase()) { peer.sendReject(tx, 'coinbase', 100); - return callback(new Error('coinbase as individual tx')); + return callback(new VerifyError('coinbase as individual tx', 100)); } ts = utils.now(); @@ -271,35 +271,34 @@ Mempool.prototype.addTX = function addTX(tx, peer, callback, force) { return callback(); self.node.fillCoin(tx, function(err) { - var i, input, output, total, fee, coin; - if (err) return callback(err); - self.tx.isDoubleSpend(tx, function(err, result) { - if (err) - return callback(err); - - if (result) { - peer.sendReject(tx, 'bad-txns-inputs-spent', 0); - return callback(new VerifyError('bad-txns-inputs-spent', 0)); - } - - if (!tx.hasPrevout()) - return self.storeOrphan(tx, callback); - - self.verify(tx, function(err) { - if (err) { - if (err.type === 'VerifyError') { - if (err.score !== -1) - peer.sendReject(tx, err.reason, err.score); - return callback(err); - } + if (!tx.hasPrevout()) { + return self.tx.isDoubleSpend(tx, function(err, result) { + if (err) return callback(err); + + if (result) { + peer.sendReject(tx, 'bad-txns-inputs-spent', 0); + return callback(new VerifyError('bad-txns-inputs-spent', 0)); } - self.addUnchecked(tx, peer, callback); + return self.storeOrphan(tx, callback); }); + } + + self.verify(tx, function(err) { + if (err) { + if (err.type === 'VerifyError') { + if (err.score !== -1) + peer.sendReject(tx, err.reason, err.score); + return callback(err); + } + return callback(err); + } + + self.addUnchecked(tx, peer, callback); }); }); }); diff --git a/lib/bcoin/tx.js b/lib/bcoin/tx.js index edeec60f..4cd6600c 100644 --- a/lib/bcoin/tx.js +++ b/lib/bcoin/tx.js @@ -857,7 +857,7 @@ TX.prototype.isStandardInputs = function isStandardInputs(flags) { // Input script must be exactly one push of the redeem script. if (!(input.script.code.length === 1 - && utils.isEqual(input.script.code[0], raw))) { + && utils.isEqual(input.script.code[0], redeem.raw))) { return false; }