From 46db11e04a60b89fb193a95244090d6dac5bafc0 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Tue, 6 Jan 2015 16:05:38 +1100 Subject: [PATCH] TxBuilder: extract isCoinbaseHash function --- src/transaction_builder.js | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/transaction_builder.js b/src/transaction_builder.js index 21e5c86..3148386 100644 --- a/src/transaction_builder.js +++ b/src/transaction_builder.js @@ -7,20 +7,13 @@ var ECSignature = require('./ecsignature') var Script = require('./script') var Transaction = require('./transaction') -function TransactionBuilder() { - this.prevOutMap = {} - this.prevOutScripts = {} - this.prevOutTypes = {} - - this.signatures = [] - this.tx = new Transaction() +function isCoinbase(txHash) { + return Array.prototype.every.call(txHash, function(x) { + return x === 0 + }) } function extractSignature(txIn) { - assert(!Array.prototype.every.call(txIn.hash, function(x) { - return x === 0 - }), 'coinbase inputs not supported') - var redeemScript var scriptSig = txIn.script var scriptType = scripts.classifyInput(scriptSig, true) @@ -81,7 +74,15 @@ function extractSignature(txIn) { } } -// Static constructors +function TransactionBuilder() { + this.prevOutMap = {} + this.prevOutScripts = {} + this.prevOutTypes = {} + + this.signatures = [] + this.tx = new Transaction() +} + TransactionBuilder.fromTransaction = function(transaction) { var txb = new TransactionBuilder() @@ -101,10 +102,8 @@ TransactionBuilder.fromTransaction = function(transaction) { // Extract/add signatures txb.signatures = transaction.ins.map(function(txIn) { - // Coinbase inputs not supported - assert(!Array.prototype.every.call(txIn.hash, function(x) { - return x === 0 - }), 'coinbase inputs not supported') + // TODO: remove me after testcase added + assert(!isCoinbase(txIn.hash), 'coinbase inputs not supported') // Ignore empty scripts if (txIn.script.buffer.length === 0) return @@ -115,7 +114,6 @@ TransactionBuilder.fromTransaction = function(transaction) { return txb } -// Operations TransactionBuilder.prototype.addInput = function(prevTx, index, sequence, prevOutScript) { var prevOutHash