diff --git a/src/transaction.js b/src/transaction.js index 0195067..f061c77 100644 --- a/src/transaction.js +++ b/src/transaction.js @@ -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) diff --git a/test/transaction.js b/test/transaction.js index 0ebf50a..a7e08c1 100644 --- a/test/transaction.js +++ b/test/transaction.js @@ -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)