Browse Source
Merge pull request #1487 from bitcoinjs/addError
Add sanity check for arguments
psbt-tx-getters
d-yokoi
5 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
46 additions and
1 deletions
-
src/psbt.js
-
test/fixtures/psbt.json
-
ts_src/psbt.ts
|
|
@ -143,6 +143,17 @@ class Psbt { |
|
|
|
return this; |
|
|
|
} |
|
|
|
addInput(inputData) { |
|
|
|
if ( |
|
|
|
arguments.length > 1 || |
|
|
|
!inputData || |
|
|
|
inputData.hash === undefined || |
|
|
|
inputData.index === undefined |
|
|
|
) { |
|
|
|
throw new Error( |
|
|
|
`Invalid arguments for Psbt.addInput. ` + |
|
|
|
`Requires single object with at least [hash] and [index]`, |
|
|
|
); |
|
|
|
} |
|
|
|
checkInputsForPartialSig(this.data.inputs, 'addInput'); |
|
|
|
const c = this.__CACHE; |
|
|
|
this.data.addInput(inputData); |
|
|
@ -163,6 +174,17 @@ class Psbt { |
|
|
|
return this; |
|
|
|
} |
|
|
|
addOutput(outputData) { |
|
|
|
if ( |
|
|
|
arguments.length > 1 || |
|
|
|
!outputData || |
|
|
|
outputData.value === undefined || |
|
|
|
(outputData.address === undefined && outputData.script === undefined) |
|
|
|
) { |
|
|
|
throw new Error( |
|
|
|
`Invalid arguments for Psbt.addOutput. ` + |
|
|
|
`Requires single object with at least [script or address] and [value]`, |
|
|
|
); |
|
|
|
} |
|
|
|
checkInputsForPartialSig(this.data.inputs, 'addOutput'); |
|
|
|
const { address } = outputData; |
|
|
|
if (typeof address === 'string') { |
|
|
|
|
|
@ -311,7 +311,7 @@ |
|
|
|
"inputData": { |
|
|
|
"hash": 42 |
|
|
|
}, |
|
|
|
"exception": "Error adding input." |
|
|
|
"exception": "Invalid arguments for Psbt\\.addInput\\. Requires single object with at least \\[hash\\] and \\[index\\]" |
|
|
|
}, |
|
|
|
{ |
|
|
|
"description": "should be equal", |
|
|
|
|
|
@ -182,6 +182,17 @@ export class Psbt { |
|
|
|
} |
|
|
|
|
|
|
|
addInput(inputData: PsbtInputExtended): this { |
|
|
|
if ( |
|
|
|
arguments.length > 1 || |
|
|
|
!inputData || |
|
|
|
inputData.hash === undefined || |
|
|
|
inputData.index === undefined |
|
|
|
) { |
|
|
|
throw new Error( |
|
|
|
`Invalid arguments for Psbt.addInput. ` + |
|
|
|
`Requires single object with at least [hash] and [index]`, |
|
|
|
); |
|
|
|
} |
|
|
|
checkInputsForPartialSig(this.data.inputs, 'addInput'); |
|
|
|
const c = this.__CACHE; |
|
|
|
this.data.addInput(inputData); |
|
|
@ -205,6 +216,18 @@ export class Psbt { |
|
|
|
} |
|
|
|
|
|
|
|
addOutput(outputData: PsbtOutputExtended): this { |
|
|
|
if ( |
|
|
|
arguments.length > 1 || |
|
|
|
!outputData || |
|
|
|
outputData.value === undefined || |
|
|
|
((outputData as any).address === undefined && |
|
|
|
(outputData as any).script === undefined) |
|
|
|
) { |
|
|
|
throw new Error( |
|
|
|
`Invalid arguments for Psbt.addOutput. ` + |
|
|
|
`Requires single object with at least [script or address] and [value]`, |
|
|
|
); |
|
|
|
} |
|
|
|
checkInputsForPartialSig(this.data.inputs, 'addOutput'); |
|
|
|
const { address } = outputData as any; |
|
|
|
if (typeof address === 'string') { |
|
|
|