UNPKG

@bitgo-beta/utxo-lib

Version:

Client-side Bitcoin JavaScript library

35 lines 4.73 kB
"use strict"; // <scriptSig> {serialized scriptPubKey script} Object.defineProperty(exports, "__esModule", { value: true }); exports.check = void 0; 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; } exports.check = check; check.toJSON = () => { return 'witnessScriptHash input'; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvdGVtcGxhdGVzL3dpdG5lc3NzY3JpcHRoYXNoL2lucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSwrQ0FBK0M7OztBQUUvQyw4QkFBMkM7QUFDM0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBRXZDLG9DQUFvQztBQUNwQyxrQ0FBa0M7QUFDbEMsdUNBQXVDO0FBRXZDLFNBQWdCLEtBQUssQ0FBQyxNQUFnQixFQUFFLGVBQXlCO0lBQy9ELFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFcEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFbEQsTUFBTSxtQkFBbUIsR0FBRyxVQUFPLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRTdELG1DQUFtQztJQUNuQyxJQUFJLENBQUMsbUJBQW1CLElBQUksbUJBQW1CLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUUzRSxNQUFNLG1CQUFtQixHQUFHLFVBQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRWpFLGNBQWM7SUFDZCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUVuRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFbEgsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFakcsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBdEJELHNCQXNCQztBQUNELEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBVyxFQUFFO0lBQzFCLE9BQU8seUJBQXlCLENBQUM7QUFDbkMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gPHNjcmlwdFNpZz4ge3NlcmlhbGl6ZWQgc2NyaXB0UHViS2V5IHNjcmlwdH1cblxuaW1wb3J0IHsgc2NyaXB0IGFzIGJzY3JpcHQgfSBmcm9tICcuLi8uLi8nO1xuY29uc3QgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJyk7XG5cbmltcG9ydCAqIGFzIHAybXMgZnJvbSAnLi4vbXVsdGlzaWcnO1xuaW1wb3J0ICogYXMgcDJwayBmcm9tICcuLi9wdWJrZXknO1xuaW1wb3J0ICogYXMgcDJwa2ggZnJvbSAnLi4vcHVia2V5aGFzaCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVjayhjaHVua3M6IEJ1ZmZlcltdLCBhbGxvd0luY29tcGxldGU/OiBib29sZWFuKTogYm9vbGVhbiB7XG4gIHR5cGVmb3JjZSh0eXBlZm9yY2UuQXJyYXksIGNodW5rcyk7XG4gIGlmIChjaHVua3MubGVuZ3RoIDwgMSkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHdpdG5lc3NTY3JpcHQgPSBjaHVua3NbY2h1bmtzLmxlbmd0aCAtIDFdO1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih3aXRuZXNzU2NyaXB0KSkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IHdpdG5lc3NTY3JpcHRDaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZSh3aXRuZXNzU2NyaXB0KTtcblxuICAvLyBpcyB3aXRuZXNzU2NyaXB0IGEgdmFsaWQgc2NyaXB0P1xuICBpZiAoIXdpdG5lc3NTY3JpcHRDaHVua3MgfHwgd2l0bmVzc1NjcmlwdENodW5rcy5sZW5ndGggPT09IDApIHJldHVybiBmYWxzZTtcblxuICBjb25zdCB3aXRuZXNzUmF3U2NyaXB0U2lnID0gYnNjcmlwdC5jb21waWxlKGNodW5rcy5zbGljZSgwLCAtMSkpO1xuXG4gIC8vIG1hdGNoIHR5cGVzXG4gIGlmIChwMnBraC5pbnB1dC5jaGVjayh3aXRuZXNzUmF3U2NyaXB0U2lnKSAmJiBwMnBraC5vdXRwdXQuY2hlY2sod2l0bmVzc1NjcmlwdENodW5rcykpIHJldHVybiB0cnVlO1xuXG4gIGlmIChwMm1zLmlucHV0LmNoZWNrKHdpdG5lc3NSYXdTY3JpcHRTaWcsIGFsbG93SW5jb21wbGV0ZSkgJiYgcDJtcy5vdXRwdXQuY2hlY2sod2l0bmVzc1NjcmlwdENodW5rcykpIHJldHVybiB0cnVlO1xuXG4gIGlmIChwMnBrLmlucHV0LmNoZWNrKHdpdG5lc3NSYXdTY3JpcHRTaWcpICYmIHAycGsub3V0cHV0LmNoZWNrKHdpdG5lc3NTY3JpcHRDaHVua3MpKSByZXR1cm4gdHJ1ZTtcblxuICByZXR1cm4gZmFsc2U7XG59XG5jaGVjay50b0pTT04gPSAoKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuICd3aXRuZXNzU2NyaXB0SGFzaCBpbnB1dCc7XG59O1xuIl19