Transaction: add hash as addInput parameter

This commit is contained in:
Daniel Cousens 2014-06-17 00:16:19 +10:00
parent 0b17c2bc3d
commit 1b1b550bd6
2 changed files with 18 additions and 13 deletions

View file

@ -39,15 +39,17 @@ Transaction.prototype.addInput = function(tx, index, sequence) {
if (typeof tx === 'string') {
hash = new Buffer(tx, 'hex')
assert.equal(hash.length, 32, 'Expected Transaction or string, got ' + tx)
assert.equal(hash.length, 32, 'Expected Transaction, txId or txHash, got ' + tx)
// TxHash hex is big-endian, we need little-endian
// TxId hex is big-endian, we need little-endian
Array.prototype.reverse.call(hash)
} else {
assert(tx instanceof Transaction, 'Expected Transaction or string, got ' + tx)
hash = crypto.hash256(tx.toBuffer())
} else if (tx instanceof Transaction) {
hash = tx.getHash()
} else {
assert(Buffer.isBuffer(tx), 'Expected Transaction, txId or txHash, got ' + tx)
hash = tx
}
assert.equal(typeof index, 'number', 'Expected number index, got ' + index)

View file

@ -69,6 +69,13 @@ describe('Transaction', function() {
assert.deepEqual(tx.ins[0].hash, prevTxHash)
})
it('accepts a transaction hash', function() {
var tx = new Transaction()
tx.addInput(prevTxHash, 0)
assert.deepEqual(tx.ins[0].hash, prevTxHash)
})
it('accepts a Transaction object', function() {
var tx = new Transaction()
tx.addInput(prevTx, 0)
@ -78,13 +85,13 @@ describe('Transaction', function() {
it('returns an index', function() {
var tx = new Transaction()
assert.equal(tx.addInput(prevTxId, 0), 0)
assert.equal(tx.addInput(prevTxId, 0), 1)
assert.equal(tx.addInput(prevTxHash, 0), 0)
assert.equal(tx.addInput(prevTxHash, 0), 1)
})
it('defaults to DEFAULT_SEQUENCE', function() {
var tx = new Transaction()
tx.addInput(prevTxId, 0)
tx.addInput(prevTxHash, 0)
assert.equal(tx.ins[0].sequence, 0xffffffff)
})
@ -94,11 +101,7 @@ describe('Transaction', function() {
var tx = new Transaction()
f.raw.ins.forEach(function(txIn, i) {
var txInId = new Buffer(txIn.hash)
Array.prototype.reverse.call(txInId)
txInId = txInId.toString('hex')
var j = tx.addInput(txInId, txIn.index, txIn.sequence)
var j = tx.addInput(txIn.hash, txIn.index, txIn.sequence)
assert.equal(i, j)
assert.deepEqual(tx.ins[i].hash, txIn.hash)