bitcoinjs-lib/src/templates/multisig/input.ts

22 lines
663 B
TypeScript
Raw Normal View History

// OP_0 [signatures ...]
2018-12-28 13:18:42 +09:00
import * as bscript from '../../script'
2018-06-25 16:25:12 +10:00
const OPS = require('bitcoin-ops')
function partialSignature (value) {
return value === OPS.OP_0 || bscript.isCanonicalScriptSignature(value)
}
2018-12-28 13:18:42 +09:00
export function check (script: Buffer | Array<number | Buffer>, allowIncomplete?: boolean): boolean {
const chunks = bscript.decompile(script)
if (chunks.length < 2) return false
if (chunks[0] !== OPS.OP_0) return false
if (allowIncomplete) {
return chunks.slice(1).every(partialSignature)
}
2018-12-28 13:18:42 +09:00
return (<Array<Buffer>>chunks.slice(1)).every(bscript.isCanonicalScriptSignature)
}
2016-11-15 10:19:49 +11:00
check.toJSON = function () { return 'multisig input' }