UNPKG

@bitgo/utxo-lib

Version:

Client-side Bitcoin JavaScript library

34 lines 4.7 kB
"use strict"; // <scriptSig> {serialized scriptPubKey script} Object.defineProperty(exports, "__esModule", { value: true }); exports.check = check; const __1 = require("../../"); const typeforce = require('typeforce'); const p2ms = require("../multisig"); const p2pk = require("../pubkey"); const p2pkh = require("../pubkeyhash"); function check(chunks, allowIncomplete) { typeforce(typeforce.Array, chunks); if (chunks.length < 1) return false; const witnessScript = chunks[chunks.length - 1]; if (!Buffer.isBuffer(witnessScript)) return false; const witnessScriptChunks = __1.script.decompile(witnessScript); // is witnessScript a valid script? if (!witnessScriptChunks || witnessScriptChunks.length === 0) return false; const witnessRawScriptSig = __1.script.compile(chunks.slice(0, -1)); // match types if (p2pkh.input.check(witnessRawScriptSig) && p2pkh.output.check(witnessScriptChunks)) return true; if (p2ms.input.check(witnessRawScriptSig, allowIncomplete) && p2ms.output.check(witnessScriptChunks)) return true; if (p2pk.input.check(witnessRawScriptSig) && p2pk.output.check(witnessScriptChunks)) return true; return false; } check.toJSON = () => { return 'witnessScriptHash input'; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL3dpdG5lc3NzY3JpcHRoYXNoL2lucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7O0FBUy9DLHNCQXNCQztBQTdCRCw4QkFBMkM7QUFDM0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZDLG9DQUFvQztBQUNwQyxrQ0FBa0M7QUFDbEMsdUNBQXVDO0FBRXZDLFNBQWdCLEtBQUssQ0FBQyxNQUFnQixFQUFFLGVBQXlCO0lBQy9ELFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFcEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFbEQsTUFBTSxtQkFBbUIsR0FBRyxVQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTdELG1DQUFtQztJQUNuQyxJQUFJLENBQUMsbUJBQW1CLElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUUzRSxNQUFNLG1CQUFtQixHQUFHLFVBQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpFLGNBQWM7SUFDZCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUVuRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFbEgsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFakcsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBQ0QsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFXLEVBQUU7SUFDMUIsT0FBTyx5QkFBeUIsQ0FBQztBQUNuQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyA8c2NyaXB0U2lnPiB7c2VyaWFsaXplZCBzY3JpcHRQdWJLZXkgc2NyaXB0fVxuXG5pbXBvcnQgeyBzY3JpcHQgYXMgYnNjcmlwdCB9IGZyb20gJy4uLy4uLyc7XG5jb25zdCB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKTtcblxuaW1wb3J0ICogYXMgcDJtcyBmcm9tICcuLi9tdWx0aXNpZyc7XG5pbXBvcnQgKiBhcyBwMnBrIGZyb20gJy4uL3B1YmtleSc7XG5pbXBvcnQgKiBhcyBwMnBraCBmcm9tICcuLi9wdWJrZXloYXNoJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKGNodW5rczogQnVmZmVyW10sIGFsbG93SW5jb21wbGV0ZT86IGJvb2xlYW4pOiBib29sZWFuIHtcbiAgdHlwZWZvcmNlKHR5cGVmb3JjZS5BcnJheSwgY2h1bmtzKTtcbiAgaWYgKGNodW5rcy5sZW5ndGggPCAxKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3Qgd2l0bmVzc1NjcmlwdCA9IGNodW5rc1tjaHVua3MubGVuZ3RoIC0gMV07XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHdpdG5lc3NTY3JpcHQpKSByZXR1cm4gZmFsc2U7XG5cbiAgY29uc3Qgd2l0bmVzc1NjcmlwdENodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHdpdG5lc3NTY3JpcHQpO1xuXG4gIC8vIGlzIHdpdG5lc3NTY3JpcHQgYSB2YWxpZCBzY3JpcHQ/XG4gIGlmICghd2l0bmVzc1NjcmlwdENodW5rcyB8fCB3aXRuZXNzU2NyaXB0Q2h1bmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHdpdG5lc3NSYXdTY3JpcHRTaWcgPSBic2NyaXB0LmNvbXBpbGUoY2h1bmtzLnNsaWNlKDAsIC0xKSk7XG5cbiAgLy8gbWF0Y2ggdHlwZXNcbiAgaWYgKHAycGtoLmlucHV0LmNoZWNrKHdpdG5lc3NSYXdTY3JpcHRTaWcpICYmIHAycGtoLm91dHB1dC5jaGVjayh3aXRuZXNzU2NyaXB0Q2h1bmtzKSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHAybXMuaW5wdXQuY2hlY2sod2l0bmVzc1Jhd1NjcmlwdFNpZywgYWxsb3dJbmNvbXBsZXRlKSAmJiBwMm1zLm91dHB1dC5jaGVjayh3aXRuZXNzU2NyaXB0Q2h1bmtzKSkgcmV0dXJuIHRydWU7XG5cbiAgaWYgKHAycGsuaW5wdXQuY2hlY2sod2l0bmVzc1Jhd1NjcmlwdFNpZykgJiYgcDJway5vdXRwdXQuY2hlY2sod2l0bmVzc1NjcmlwdENodW5rcykpIHJldHVybiB0cnVlO1xuXG4gIHJldHVybiBmYWxzZTtcbn1cbmNoZWNrLnRvSlNPTiA9ICgpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gJ3dpdG5lc3NTY3JpcHRIYXNoIGlucHV0Jztcbn07XG4iXX0=