1 | 'use strict';
|
2 | Object.defineProperty(exports, '__esModule', { value: true });
|
3 | const script_1 = require('./script');
|
4 | const multisig = require('./templates/multisig');
|
5 | const nullData = require('./templates/nulldata');
|
6 | const pubKey = require('./templates/pubkey');
|
7 | const pubKeyHash = require('./templates/pubkeyhash');
|
8 | const scriptHash = require('./templates/scripthash');
|
9 | const witnessCommitment = require('./templates/witnesscommitment');
|
10 | const witnessPubKeyHash = require('./templates/witnesspubkeyhash');
|
11 | const witnessScriptHash = require('./templates/witnessscripthash');
|
12 | const types = {
|
13 | P2MS: 'multisig',
|
14 | NONSTANDARD: 'nonstandard',
|
15 | NULLDATA: 'nulldata',
|
16 | P2PK: 'pubkey',
|
17 | P2PKH: 'pubkeyhash',
|
18 | P2SH: 'scripthash',
|
19 | P2WPKH: 'witnesspubkeyhash',
|
20 | P2WSH: 'witnessscripthash',
|
21 | WITNESS_COMMITMENT: 'witnesscommitment',
|
22 | };
|
23 | exports.types = types;
|
24 | function classifyOutput(script) {
|
25 | if (witnessPubKeyHash.output.check(script)) return types.P2WPKH;
|
26 | if (witnessScriptHash.output.check(script)) return types.P2WSH;
|
27 | if (pubKeyHash.output.check(script)) return types.P2PKH;
|
28 | if (scriptHash.output.check(script)) return types.P2SH;
|
29 |
|
30 | const chunks = script_1.decompile(script);
|
31 | if (!chunks) throw new TypeError('Invalid script');
|
32 | if (multisig.output.check(chunks)) return types.P2MS;
|
33 | if (pubKey.output.check(chunks)) return types.P2PK;
|
34 | if (witnessCommitment.output.check(chunks)) return types.WITNESS_COMMITMENT;
|
35 | if (nullData.output.check(chunks)) return types.NULLDATA;
|
36 | return types.NONSTANDARD;
|
37 | }
|
38 | exports.output = classifyOutput;
|
39 | function classifyInput(script, allowIncomplete) {
|
40 |
|
41 | const chunks = script_1.decompile(script);
|
42 | if (!chunks) throw new TypeError('Invalid script');
|
43 | if (pubKeyHash.input.check(chunks)) return types.P2PKH;
|
44 | if (scriptHash.input.check(chunks, allowIncomplete)) return types.P2SH;
|
45 | if (multisig.input.check(chunks, allowIncomplete)) return types.P2MS;
|
46 | if (pubKey.input.check(chunks)) return types.P2PK;
|
47 | return types.NONSTANDARD;
|
48 | }
|
49 | exports.input = classifyInput;
|
50 | function classifyWitness(script, allowIncomplete) {
|
51 |
|
52 | const chunks = script_1.decompile(script);
|
53 | if (!chunks) throw new TypeError('Invalid script');
|
54 | if (witnessPubKeyHash.input.check(chunks)) return types.P2WPKH;
|
55 | if (witnessScriptHash.input.check(chunks, allowIncomplete))
|
56 | return types.P2WSH;
|
57 | return types.NONSTANDARD;
|
58 | }
|
59 | exports.witness = classifyWitness;
|