UNPKG

@bitgo-beta/utxo-lib

Version:

Client-side Bitcoin JavaScript library

89 lines 11.2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.types = exports.witness = exports.output = exports.input = void 0; const _1 = require("./"); const multisig = require("./templates/multisig"); const nullData = require("./templates/nulldata"); const pubKey = require("./templates/pubkey"); const pubKeyHash = require("./templates/pubkeyhash"); const scriptHash = require("./templates/scripthash"); const taproot = require("./templates/taproot"); const taprootnofn = require("./templates/taprootnofn"); const witnessCommitment = require("./templates/witnesscommitment"); const witnessPubKeyHash = require("./templates/witnesspubkeyhash"); const witnessScriptHash = require("./templates/witnessscripthash"); const types = { P2MS: 'multisig', NONSTANDARD: 'nonstandard', NULLDATA: 'nulldata', P2PK: 'pubkey', P2PKH: 'pubkeyhash', P2SH: 'scripthash', P2WPKH: 'witnesspubkeyhash', P2WSH: 'witnessscripthash', P2TR: 'taproot', P2TR_NS: 'taprootnofn', WITNESS_COMMITMENT: 'witnesscommitment', }; exports.types = types; function classifyOutput(script) { if (witnessPubKeyHash.output.check(script)) return types.P2WPKH; if (witnessScriptHash.output.check(script)) return types.P2WSH; if (taproot.output.check(script)) return types.P2TR; if (pubKeyHash.output.check(script)) return types.P2PKH; if (scriptHash.output.check(script)) return types.P2SH; // XXX: optimization, below functions bscript.decompile before use const chunks = _1.script.decompile(script); if (!chunks) throw new TypeError('Invalid script'); if (taprootnofn.output.check(chunks)) return types.P2TR_NS; if (multisig.output.check(chunks)) return types.P2MS; if (pubKey.output.check(chunks)) return types.P2PK; if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT; if (nullData.output.check(chunks)) return types.NULLDATA; return types.NONSTANDARD; } exports.output = classifyOutput; function classifyInput(script, allowIncomplete) { // XXX: optimization, below functions bscript.decompile before use const chunks = _1.script.decompile(script); if (!chunks) throw new TypeError('Invalid script'); if (pubKeyHash.input.check(chunks)) return types.P2PKH; if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH; if (taprootnofn.input.check(chunks, allowIncomplete)) return types.P2TR_NS; if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS; if (pubKey.input.check(chunks)) return types.P2PK; return types.NONSTANDARD; } exports.input = classifyInput; function classifyWitness(script, allowIncomplete) { // XXX: optimization, below functions bscript.decompile before use const chunks = _1.script.decompile(script); if (!chunks) throw new TypeError('Invalid script'); if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH; if (witnessScriptHash.input.check(chunks, allowIncomplete)) return types.P2WSH; if (taproot.input.check(chunks)) return types.P2TR; return types.NONSTANDARD; } exports.witness = classifyWitness; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3NpZnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2xhc3NpZnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXVDO0FBQ3ZDLGlEQUFpRDtBQUNqRCxpREFBaUQ7QUFDakQsNkNBQTZDO0FBQzdDLHFEQUFxRDtBQUNyRCxxREFBcUQ7QUFDckQsK0NBQStDO0FBQy9DLHVEQUF1RDtBQUN2RCxtRUFBbUU7QUFDbkUsbUVBQW1FO0FBQ25FLG1FQUFtRTtBQUVuRSxNQUFNLEtBQUssR0FBRztJQUNaLElBQUksRUFBRSxVQUFvQjtJQUMxQixXQUFXLEVBQUUsYUFBdUI7SUFDcEMsUUFBUSxFQUFFLFVBQW9CO0lBQzlCLElBQUksRUFBRSxRQUFrQjtJQUN4QixLQUFLLEVBQUUsWUFBc0I7SUFDN0IsSUFBSSxFQUFFLFlBQXNCO0lBQzVCLE1BQU0sRUFBRSxtQkFBNkI7SUFDckMsS0FBSyxFQUFFLG1CQUE2QjtJQUNwQyxJQUFJLEVBQUUsU0FBbUI7SUFDekIsT0FBTyxFQUFFLGFBQXVCO0lBQ2hDLGtCQUFrQixFQUFFLG1CQUE2QjtDQUNsRCxDQUFDO0FBZ0RxRixzQkFBSztBQTlDNUYsU0FBUyxjQUFjLENBQUMsTUFBYztJQUNwQyxJQUFJLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQUUsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO0lBQ2hFLElBQUksaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7SUFDL0QsSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7SUFDcEQsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUM7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QixDQUFDO0FBRTZFLGtDQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgc2NyaXB0IGFzIGJzY3JpcHQgfSBmcm9tICcuLyc7XG5pbXBvcnQgKiBhcyBtdWx0aXNpZyBmcm9tICcuL3RlbXBsYXRlcy9tdWx0aXNpZyc7XG5pbXBvcnQgKiBhcyBudWxsRGF0YSBmcm9tICcuL3RlbXBsYXRlcy9udWxsZGF0YSc7XG5pbXBvcnQgKiBhcyBwdWJLZXkgZnJvbSAnLi90ZW1wbGF0ZXMvcHVia2V5JztcbmltcG9ydCAqIGFzIHB1YktleUhhc2ggZnJvbSAnLi90ZW1wbGF0ZXMvcHVia2V5aGFzaCc7XG5pbXBvcnQgKiBhcyBzY3JpcHRIYXNoIGZyb20gJy4vdGVtcGxhdGVzL3NjcmlwdGhhc2gnO1xuaW1wb3J0ICogYXMgdGFwcm9vdCBmcm9tICcuL3RlbXBsYXRlcy90YXByb290JztcbmltcG9ydCAqIGFzIHRhcHJvb3Rub2ZuIGZyb20gJy4vdGVtcGxhdGVzL3RhcHJvb3Rub2ZuJztcbmltcG9ydCAqIGFzIHdpdG5lc3NDb21taXRtZW50IGZyb20gJy4vdGVtcGxhdGVzL3dpdG5lc3Njb21taXRtZW50JztcbmltcG9ydCAqIGFzIHdpdG5lc3NQdWJLZXlIYXNoIGZyb20gJy4vdGVtcGxhdGVzL3dpdG5lc3NwdWJrZXloYXNoJztcbmltcG9ydCAqIGFzIHdpdG5lc3NTY3JpcHRIYXNoIGZyb20gJy4vdGVtcGxhdGVzL3dpdG5lc3NzY3JpcHRoYXNoJztcblxuY29uc3QgdHlwZXMgPSB7XG4gIFAyTVM6ICdtdWx0aXNpZycgYXMgc3RyaW5nLFxuICBOT05TVEFOREFSRDogJ25vbnN0YW5kYXJkJyBhcyBzdHJpbmcsXG4gIE5VTExEQVRBOiAnbnVsbGRhdGEnIGFzIHN0cmluZyxcbiAgUDJQSzogJ3B1YmtleScgYXMgc3RyaW5nLFxuICBQMlBLSDogJ3B1YmtleWhhc2gnIGFzIHN0cmluZyxcbiAgUDJTSDogJ3NjcmlwdGhhc2gnIGFzIHN0cmluZyxcbiAgUDJXUEtIOiAnd2l0bmVzc3B1YmtleWhhc2gnIGFzIHN0cmluZyxcbiAgUDJXU0g6ICd3aXRuZXNzc2NyaXB0aGFzaCcgYXMgc3RyaW5nLFxuICBQMlRSOiAndGFwcm9vdCcgYXMgc3RyaW5nLFxuICBQMlRSX05TOiAndGFwcm9vdG5vZm4nIGFzIHN0cmluZyxcbiAgV0lUTkVTU19DT01NSVRNRU5UOiAnd2l0bmVzc2NvbW1pdG1lbnQnIGFzIHN0cmluZyxcbn07XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5T3V0cHV0KHNjcmlwdDogQnVmZmVyKTogc3RyaW5nIHtcbiAgaWYgKHdpdG5lc3NQdWJLZXlIYXNoLm91dHB1dC5jaGVjayhzY3JpcHQpKSByZXR1cm4gdHlwZXMuUDJXUEtIO1xuICBpZiAod2l0bmVzc1NjcmlwdEhhc2gub3V0cHV0LmNoZWNrKHNjcmlwdCkpIHJldHVybiB0eXBlcy5QMldTSDtcbiAgaWYgKHRhcHJvb3Qub3V0cHV0LmNoZWNrKHNjcmlwdCkpIHJldHVybiB0eXBlcy5QMlRSO1xuICBpZiAocHViS2V5SGFzaC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyUEtIO1xuICBpZiAoc2NyaXB0SGFzaC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyU0g7XG5cbiAgLy8gWFhYOiBvcHRpbWl6YXRpb24sIGJlbG93IGZ1bmN0aW9ucyBic2NyaXB0LmRlY29tcGlsZSBiZWZvcmUgdXNlXG4gIGNvbnN0IGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdCk7XG4gIGlmICghY2h1bmtzKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHNjcmlwdCcpO1xuXG4gIGlmICh0YXByb290bm9mbi5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyVFJfTlM7XG4gIGlmIChtdWx0aXNpZy5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyTVM7XG4gIGlmIChwdWJLZXkub3V0cHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5QMlBLO1xuICBpZiAod2l0bmVzc0NvbW1pdG1lbnQub3V0cHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5XSVRORVNTX0NPTU1JVE1FTlQ7XG4gIGlmIChudWxsRGF0YS5vdXRwdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLk5VTExEQVRBO1xuXG4gIHJldHVybiB0eXBlcy5OT05TVEFOREFSRDtcbn1cblxuZnVuY3Rpb24gY2xhc3NpZnlJbnB1dChzY3JpcHQ6IEJ1ZmZlciwgYWxsb3dJbmNvbXBsZXRlPzogYm9vbGVhbik6IHN0cmluZyB7XG4gIC8vIFhYWDogb3B0aW1pemF0aW9uLCBiZWxvdyBmdW5jdGlvbnMgYnNjcmlwdC5kZWNvbXBpbGUgYmVmb3JlIHVzZVxuICBjb25zdCBjaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShzY3JpcHQpO1xuICBpZiAoIWNodW5rcykgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBzY3JpcHQnKTtcblxuICBpZiAocHViS2V5SGFzaC5pbnB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJQS0g7XG4gIGlmIChzY3JpcHRIYXNoLmlucHV0LmNoZWNrKGNodW5rcywgYWxsb3dJbmNvbXBsZXRlKSkgcmV0dXJuIHR5cGVzLlAyU0g7XG4gIGlmICh0YXByb290bm9mbi5pbnB1dC5jaGVjayhjaHVua3MsIGFsbG93SW5jb21wbGV0ZSkpIHJldHVybiB0eXBlcy5QMlRSX05TO1xuICBpZiAobXVsdGlzaWcuaW5wdXQuY2hlY2soY2h1bmtzLCBhbGxvd0luY29tcGxldGUpKSByZXR1cm4gdHlwZXMuUDJNUztcbiAgaWYgKHB1YktleS5pbnB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJQSztcblxuICByZXR1cm4gdHlwZXMuTk9OU1RBTkRBUkQ7XG59XG5cbmZ1bmN0aW9uIGNsYXNzaWZ5V2l0bmVzcyhzY3JpcHQ6IEJ1ZmZlcltdLCBhbGxvd0luY29tcGxldGU/OiBib29sZWFuKTogc3RyaW5nIHtcbiAgLy8gWFhYOiBvcHRpbWl6YXRpb24sIGJlbG93IGZ1bmN0aW9ucyBic2NyaXB0LmRlY29tcGlsZSBiZWZvcmUgdXNlXG4gIGNvbnN0IGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdCk7XG4gIGlmICghY2h1bmtzKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHNjcmlwdCcpO1xuXG4gIGlmICh3aXRuZXNzUHViS2V5SGFzaC5pbnB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJXUEtIO1xuICBpZiAod2l0bmVzc1NjcmlwdEhhc2guaW5wdXQuY2hlY2soY2h1bmtzIGFzIEJ1ZmZlcltdLCBhbGxvd0luY29tcGxldGUpKSByZXR1cm4gdHlwZXMuUDJXU0g7XG4gIGlmICh0YXByb290LmlucHV0LmNoZWNrKGNodW5rcyBhcyBCdWZmZXJbXSkpIHJldHVybiB0eXBlcy5QMlRSO1xuXG4gIHJldHVybiB0eXBlcy5OT05TVEFOREFSRDtcbn1cblxuZXhwb3J0IHsgY2xhc3NpZnlJbnB1dCBhcyBpbnB1dCwgY2xhc3NpZnlPdXRwdXQgYXMgb3V0cHV0LCBjbGFzc2lmeVdpdG5lc3MgYXMgd2l0bmVzcywgdHlwZXMgfTtcbiJdfQ==