Compare commits

..

No commits in common. "ba315dd275cff655892899b18e90fd0b2dff203d" and "85b1b92b6d3404d7477e9a485965fb9472c93e91" have entirely different histories.

3 changed files with 9 additions and 35 deletions

View File

@ -633,8 +633,6 @@ TransactionBuilder.prototype.sign = function (vin, keyPair, redeemScript, hashTy
// TODO: remove keyPair.network matching in 4.0.0
if (keyPair.network && keyPair.network !== this.network) throw new TypeError('Inconsistent network')
if (!this.__inputs[vin]) throw new Error('No input at index: ' + vin)
if (this.__needsOutputs()) throw new Error('Transaction needs outputs')
hashType = hashType || Transaction.SIGHASH_ALL
const input = this.__inputs[vin]
@ -696,7 +694,8 @@ function signatureHashType (buffer) {
TransactionBuilder.prototype.__canModifyInputs = function () {
return this.__inputs.every(function (input) {
if (!input.signatures) return true
// any signatures?
if (input.signatures === undefined) return true
return input.signatures.every(function (signature) {
if (!signature) return true
@ -709,20 +708,6 @@ TransactionBuilder.prototype.__canModifyInputs = function () {
})
}
TransactionBuilder.prototype.__needsOutputs = function () {
// if any signature is not SIGHASH_NONE,
// we need outputs
return (this.__tx.outs.length === 0) && this.__inputs.some(function (input) {
if (!input.signatures) return false
return input.signatures.some(function (signature) {
if (!signature) return false
const hashType = signatureHashType(signature)
return ~(hashType & Transaction.SIGHASH_NONE)
})
})
}
TransactionBuilder.prototype.__canModifyOutputs = function () {
const nInputs = this.__tx.ins.length
const nOutputs = this.__tx.outs.length

View File

@ -2336,22 +2336,6 @@
"value": 1000
}
]
},
{
"description": "Transaction w/ no outputs",
"exception": "Transaction needs outputs",
"inputs": [
{
"txId": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
"vout": 0,
"signs": [
{
"keyPair": "KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73sVHnoWn"
}
]
}
],
"outputs": []
}
],
"fromTransaction": [

View File

@ -2,6 +2,7 @@
const assert = require('assert')
const baddress = require('../src/address')
const bcrypto = require('../src/crypto')
const bscript = require('../src/script')
const ops = require('bitcoin-ops')
const payments = require('../src/payments')
@ -13,6 +14,11 @@ const NETWORKS = require('../src/networks')
const fixtures = require('./fixtures/transaction_builder')
// TODO: remove
function getAddress (node) {
return baddress.toBase58Check(bcrypto.hash160(node.publicKey), NETWORKS.bitcoin.pubKeyHash)
}
function construct (f, dontSign) {
const network = NETWORKS[f.network]
let txb = new TransactionBuilder(network)
@ -222,7 +228,7 @@ describe('TransactionBuilder', function () {
})
it('accepts an address string and value', function () {
const { address } = payments.p2pkh({ pubkey: keyPair.publicKey })
const address = getAddress(keyPair)
const vout = txb.addOutput(address, 1000)
assert.strictEqual(vout, 0)
@ -289,7 +295,6 @@ describe('TransactionBuilder', function () {
it('throws if if there exist any scriptSigs', function () {
const txb = new TransactionBuilder()
txb.addInput(txHash, 0)
txb.addOutput(scripts[0], 100)
txb.sign(0, keyPair)
assert.throws(function () {