From 062540e3d9cbe8b70bdef7dfdd12f6aed07ab435 Mon Sep 17 00:00:00 2001 From: Daniel Cousens Date: Thu, 16 Oct 2014 15:25:43 +1100 Subject: [PATCH] Transaction: optional script for addInput --- src/transaction.js | 6 ++++-- test/transaction.js | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/transaction.js b/src/transaction.js index 72ab842..62ac33e 100644 --- a/src/transaction.js +++ b/src/transaction.js @@ -32,8 +32,9 @@ Transaction.SIGHASH_ANYONECANPAY = 0x80 * * Note that this method does not sign the created input. */ -Transaction.prototype.addInput = function(hash, index, sequence) { +Transaction.prototype.addInput = function(hash, index, sequence, script) { if (sequence === undefined) sequence = Transaction.DEFAULT_SEQUENCE + script = script || Script.EMPTY if (typeof hash === 'string') { // TxId hex is big-endian, we need little-endian @@ -47,6 +48,7 @@ Transaction.prototype.addInput = function(hash, index, sequence) { enforceType('Buffer', hash) enforceType('Number', index) enforceType('Number', sequence) + enforceType(Script, script) assert.equal(hash.length, 32, 'Expected hash length of 32, got ' + hash.length) @@ -54,7 +56,7 @@ Transaction.prototype.addInput = function(hash, index, sequence) { return (this.ins.push({ hash: hash, index: index, - script: Script.EMPTY, + script: script, sequence: sequence }) - 1) } diff --git a/test/transaction.js b/test/transaction.js index fc2711d..3bd0192 100644 --- a/test/transaction.js +++ b/test/transaction.js @@ -5,6 +5,7 @@ var scripts = require('../src/scripts') var Address = require('../src/address') var ECKey = require('../src/eckey') var Transaction = require('../src/transaction') +var Script = require('../src/script') var fixtures = require('./fixtures/transaction') @@ -96,20 +97,30 @@ describe('Transaction', function() { assert.equal(tx.ins[0].sequence, Transaction.DEFAULT_SEQUENCE) }) + it('defaults to empty script', function() { + var tx = new Transaction() + tx.addInput(prevTxHash, 0) + + assert.equal(tx.ins[0].script, Script.EMPTY) + }) + fixtures.valid.forEach(function(f) { it('should add the inputs for ' + f.txid + ' correctly', function() { var tx = new Transaction() f.raw.ins.forEach(function(txIn, i) { - var j = tx.addInput(txIn.hash, txIn.index, txIn.sequence) + var script = txIn.script ? Script.fromHex(txIn.script) : Script.EMPTY + var j = tx.addInput(txIn.hash, txIn.index, txIn.sequence, script) assert.equal(i, j) assert.deepEqual(tx.ins[i].hash, txIn.hash) assert.equal(tx.ins[i].index, txIn.index) var sequence = txIn.sequence - if (sequence == undefined) sequence = Transaction.DEFAULT_SEQUENCE + if (sequence === undefined) sequence = Transaction.DEFAULT_SEQUENCE + assert.equal(tx.ins[i].sequence, sequence) + assert.equal(tx.ins[i].script, script) }) }) })