Transaction: optional script for addInput
This commit is contained in:
parent
5d5dcd3d73
commit
062540e3d9
2 changed files with 17 additions and 4 deletions
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
|
Loading…
Add table
Reference in a new issue