Browse Source

TxBuilder: add setLockTime

hk-custom-address
Daniel Cousens 9 years ago
parent
commit
6c0745adce
  1. 17
      src/transaction_builder.js
  2. 22
      test/fixtures/transaction_builder.json
  3. 4
      test/transaction_builder.js

17
src/transaction_builder.js

@ -4,6 +4,8 @@ var bscript = require('./script')
var bufferEquals = require('buffer-equals')
var networks = require('./networks')
var ops = require('./opcodes')
var typeforce = require('typeforce')
var types = require('./types')
var ECPair = require('./ecpair')
var ECSignature = require('./ecsignature')
@ -135,6 +137,21 @@ function TransactionBuilder (network) {
this.tx = new Transaction()
}
TransactionBuilder.prototype.setLockTime = function (locktime) {
typeforce(types.UInt32, locktime)
// if any signatures exist, throw
if (this.inputs.some(function (input) {
if (!input.signatures) return false
return input.signatures.some(function (s) { return s })
})) {
throw new Error('No, this would invalidate signatures')
}
this.tx.locktime = locktime
}
TransactionBuilder.fromTransaction = function (transaction, network) {
var txb = new TransactionBuilder(network)

22
test/fixtures/transaction_builder.json

@ -263,6 +263,28 @@
"value": 10000
}
]
},
{
"description": "Transaction w/ nLockTime, pubKeyHash -> pubKeyHash",
"txHex": "0100000001ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000006b483045022100a3b254e1c10b5d039f36c05f323995d6e5a367d98dd78a13d5bbc3991b35720e022022fccea3897d594de0689601fbd486588d5bfa6915be2386db0397ee9a6e80b601210279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ffffffff0110270000000000001976a914aa4d7985c57e011a8b3dd8e0e5a73aaef41629c588acffff0000",
"locktime": 65535,
"inputs": [
{
"txId": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"vout": 0,
"signs": [
{
"keyPair": "KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn"
}
]
}
],
"outputs": [
{
"script": "OP_DUP OP_HASH160 aa4d7985c57e011a8b3dd8e0e5a73aaef41629c5 OP_EQUALVERIFY OP_CHECKSIG",
"value": 10000
}
]
}
],
"fromTransaction": [

4
test/transaction_builder.js

@ -17,13 +17,13 @@ function construct (f, sign) {
var network = NETWORKS[f.network]
var txb = new TransactionBuilder(network)
// FIXME: add support for locktime/version in TransactionBuilder API
// FIXME: add support for version in TransactionBuilder API
if (f.version !== undefined) {
txb.tx.version = f.version
}
if (f.locktime !== undefined) {
txb.tx.locktime = f.locktime
txb.setLockTime(f.locktime)
}
f.inputs.forEach(function (input) {

Loading…
Cancel
Save