ecash-lib 0.2.0-rc → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -15
- package/dist/{src/ecc.d.ts → ecc.d.ts} +6 -2
- package/dist/ecc.d.ts.map +1 -0
- package/dist/{src/ecc.js → ecc.js} +9 -6
- package/dist/ecc.js.map +1 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +16 -0
- package/dist/ffi/{ecash_lib_wasm.js → ecash_lib_wasm_browser.js} +1 -1
- package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +50 -0
- package/dist/ffi/ecash_lib_wasm_nodejs.js +265 -0
- package/dist/hash.d.ts +11 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +24 -0
- package/dist/hash.js.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +5 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/indexBrowser.d.ts +3 -0
- package/dist/indexBrowser.d.ts.map +1 -0
- package/dist/indexBrowser.js +22 -0
- package/dist/indexBrowser.js.map +1 -0
- package/dist/indexNodeJs.d.ts +3 -0
- package/dist/indexNodeJs.d.ts.map +1 -0
- package/dist/indexNodeJs.js +22 -0
- package/dist/indexNodeJs.js.map +1 -0
- package/dist/initBrowser.d.ts +3 -0
- package/dist/initBrowser.d.ts.map +1 -0
- package/dist/initBrowser.js +44 -0
- package/dist/initBrowser.js.map +1 -0
- package/dist/initNodeJs.d.ts +3 -0
- package/dist/initNodeJs.d.ts.map +1 -0
- package/dist/initNodeJs.js +43 -0
- package/dist/initNodeJs.js.map +1 -0
- package/dist/io/bytes.d.ts.map +1 -0
- package/dist/{src/io → io}/bytes.js +5 -1
- package/dist/io/bytes.js.map +1 -0
- package/dist/io/hex.d.ts.map +1 -0
- package/dist/{src/io → io}/hex.js +11 -4
- package/dist/io/hex.js.map +1 -0
- package/dist/io/int.d.ts.map +1 -0
- package/dist/{src/io → io}/int.js +2 -1
- package/dist/io/int.js.map +1 -0
- package/dist/io/str.d.ts +5 -0
- package/dist/io/str.d.ts.map +1 -0
- package/dist/io/str.js +19 -0
- package/dist/io/str.js.map +1 -0
- package/dist/io/varsize.d.ts.map +1 -0
- package/dist/{src/io → io}/varsize.js +7 -2
- package/dist/io/varsize.js.map +1 -0
- package/dist/io/writer.d.ts.map +1 -0
- package/dist/{src/io → io}/writer.js +2 -1
- package/dist/io/writer.js.map +1 -0
- package/dist/io/writerbytes.d.ts.map +1 -0
- package/dist/{src/io → io}/writerbytes.js +5 -1
- package/dist/io/writerbytes.js.map +1 -0
- package/dist/io/writerlength.d.ts.map +1 -0
- package/dist/{src/io → io}/writerlength.js +5 -1
- package/dist/io/writerlength.js.map +1 -0
- package/dist/{src/op.d.ts → op.d.ts} +6 -0
- package/dist/op.d.ts.map +1 -0
- package/dist/{src/op.js → op.js} +57 -16
- package/dist/op.js.map +1 -0
- package/dist/opcode.d.ts.map +1 -0
- package/dist/opcode.js +141 -0
- package/dist/opcode.js.map +1 -0
- package/dist/{src/script.d.ts → script.d.ts} +2 -0
- package/dist/script.d.ts.map +1 -0
- package/dist/script.js +196 -0
- package/dist/script.js.map +1 -0
- package/dist/sigHashType.d.ts.map +1 -0
- package/dist/{src/sigHashType.js → sigHashType.js} +23 -19
- package/dist/sigHashType.js.map +1 -0
- package/dist/test/testRunner.d.ts +21 -0
- package/dist/test/testRunner.d.ts.map +1 -0
- package/dist/test/testRunner.js +171 -0
- package/dist/test/testRunner.js.map +1 -0
- package/dist/token/alp.d.ts.map +1 -0
- package/dist/token/alp.js +117 -0
- package/dist/token/alp.js.map +1 -0
- package/dist/{src/token → token}/common.d.ts +4 -0
- package/dist/token/common.d.ts.map +1 -0
- package/dist/token/common.js +12 -0
- package/dist/token/common.js.map +1 -0
- package/dist/token/empp.d.ts.map +1 -0
- package/dist/{src/token → token}/empp.js +13 -9
- package/dist/token/empp.js.map +1 -0
- package/dist/token/slp.d.ts +35 -0
- package/dist/token/slp.d.ts.map +1 -0
- package/dist/token/slp.js +172 -0
- package/dist/token/slp.js.map +1 -0
- package/dist/{src/tx.d.ts → tx.d.ts} +4 -0
- package/dist/tx.d.ts.map +1 -0
- package/dist/{src/tx.js → tx.js} +40 -20
- package/dist/tx.js.map +1 -0
- package/dist/txBuilder.d.ts.map +1 -0
- package/dist/{src/txBuilder.js → txBuilder.js} +51 -45
- package/dist/txBuilder.js.map +1 -0
- package/dist/unsignedTx.d.ts.map +1 -0
- package/dist/{src/unsignedTx.js → unsignedTx.js} +34 -29
- package/dist/unsignedTx.js.map +1 -0
- package/package.json +9 -6
- package/tsconfig.build.json +13 -0
- package/tsconfig.json +4 -7
- package/.nyc_output/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
- package/.nyc_output/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
- package/.nyc_output/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
- package/.nyc_output/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
- package/.nyc_output/processinfo/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
- package/.nyc_output/processinfo/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
- package/.nyc_output/processinfo/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
- package/.nyc_output/processinfo/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/dist/ffi/ecash_lib_wasm_bg.wasm +0 -0
- package/dist/src/ecc.d.ts.map +0 -1
- package/dist/src/ecc.js.map +0 -1
- package/dist/src/hash.d.ts +0 -5
- package/dist/src/hash.d.ts.map +0 -1
- package/dist/src/hash.js +0 -8
- package/dist/src/hash.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -21
- package/dist/src/index.js.map +0 -1
- package/dist/src/init.d.ts +0 -3
- package/dist/src/init.d.ts.map +0 -1
- package/dist/src/init.js +0 -18
- package/dist/src/init.js.map +0 -1
- package/dist/src/io/bytes.d.ts.map +0 -1
- package/dist/src/io/bytes.js.map +0 -1
- package/dist/src/io/hex.d.ts.map +0 -1
- package/dist/src/io/hex.js.map +0 -1
- package/dist/src/io/int.d.ts.map +0 -1
- package/dist/src/io/int.js.map +0 -1
- package/dist/src/io/str.d.ts +0 -3
- package/dist/src/io/str.d.ts.map +0 -1
- package/dist/src/io/str.js +0 -9
- package/dist/src/io/str.js.map +0 -1
- package/dist/src/io/varsize.d.ts.map +0 -1
- package/dist/src/io/varsize.js.map +0 -1
- package/dist/src/io/writer.d.ts.map +0 -1
- package/dist/src/io/writer.js.map +0 -1
- package/dist/src/io/writerbytes.d.ts.map +0 -1
- package/dist/src/io/writerbytes.js.map +0 -1
- package/dist/src/io/writerlength.d.ts.map +0 -1
- package/dist/src/io/writerlength.js.map +0 -1
- package/dist/src/op.d.ts.map +0 -1
- package/dist/src/op.js.map +0 -1
- package/dist/src/opcode.d.ts.map +0 -1
- package/dist/src/opcode.js +0 -136
- package/dist/src/opcode.js.map +0 -1
- package/dist/src/script.d.ts.map +0 -1
- package/dist/src/script.js +0 -132
- package/dist/src/script.js.map +0 -1
- package/dist/src/sigHashType.d.ts.map +0 -1
- package/dist/src/sigHashType.js.map +0 -1
- package/dist/src/token/alp.d.ts.map +0 -1
- package/dist/src/token/alp.js +0 -110
- package/dist/src/token/alp.js.map +0 -1
- package/dist/src/token/common.d.ts.map +0 -1
- package/dist/src/token/common.js +0 -9
- package/dist/src/token/common.js.map +0 -1
- package/dist/src/token/empp.d.ts.map +0 -1
- package/dist/src/token/empp.js.map +0 -1
- package/dist/src/tx.d.ts.map +0 -1
- package/dist/src/tx.js.map +0 -1
- package/dist/src/txBuilder.d.ts.map +0 -1
- package/dist/src/txBuilder.js.map +0 -1
- package/dist/src/unsignedTx.d.ts.map +0 -1
- package/dist/src/unsignedTx.js.map +0 -1
- package/tests/alp.test.ts +0 -515
- package/tests/txBuilder.test.ts +0 -680
- /package/dist/ffi/{ecash_lib_wasm_bg.wasm.d.ts → ecash_lib_wasm_bg_browser.wasm.d.ts} +0 -0
- /package/dist/ffi/{ecash_lib_wasm.d.ts → ecash_lib_wasm_browser.d.ts} +0 -0
- /package/dist/{src/io → io}/bytes.d.ts +0 -0
- /package/dist/{src/io → io}/hex.d.ts +0 -0
- /package/dist/{src/io → io}/int.d.ts +0 -0
- /package/dist/{src/io → io}/varsize.d.ts +0 -0
- /package/dist/{src/io → io}/writer.d.ts +0 -0
- /package/dist/{src/io → io}/writerbytes.d.ts +0 -0
- /package/dist/{src/io → io}/writerlength.d.ts +0 -0
- /package/dist/{src/opcode.d.ts → opcode.d.ts} +0 -0
- /package/dist/{src/sigHashType.d.ts → sigHashType.d.ts} +0 -0
- /package/dist/{src/token → token}/alp.d.ts +0 -0
- /package/dist/{src/token → token}/empp.d.ts +0 -0
- /package/dist/{src/txBuilder.d.ts → txBuilder.d.ts} +0 -0
- /package/dist/{src/unsignedTx.d.ts → unsignedTx.d.ts} +0 -0
package/dist/opcode.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) 2024 The Bitcoin developers
|
|
3
|
+
// Distributed under the MIT software license, see the accompanying
|
|
4
|
+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OP_ROLL = exports.OP_PICK = exports.OP_OVER = exports.OP_NIP = exports.OP_DUP = exports.OP_DROP = exports.OP_DEPTH = exports.OP_IFDUP = exports.OP_2SWAP = exports.OP_2ROT = exports.OP_2OVER = exports.OP_3DUP = exports.OP_2DUP = exports.OP_2DROP = exports.OP_FROMALTSTACK = exports.OP_TOALTSTACK = exports.OP_RETURN = exports.OP_VERIFY = exports.OP_ENDIF = exports.OP_ELSE = exports.OP_VERNOTIF = exports.OP_VERIF = exports.OP_NOTIF = exports.OP_IF = exports.OP_VER = exports.OP_NOP = exports.OP_16 = exports.OP_15 = exports.OP_14 = exports.OP_13 = exports.OP_12 = exports.OP_11 = exports.OP_10 = exports.OP_9 = exports.OP_8 = exports.OP_7 = exports.OP_6 = exports.OP_5 = exports.OP_4 = exports.OP_3 = exports.OP_2 = exports.OP_TRUE = exports.OP_1 = exports.OP_RESERVED = exports.OP_1NEGATE = exports.OP_PUSHDATA4 = exports.OP_PUSHDATA2 = exports.OP_PUSHDATA1 = exports.OP_FALSE = exports.OP_0 = void 0;
|
|
7
|
+
exports.OP_CHECKSIG = exports.OP_CODESEPARATOR = exports.OP_HASH256 = exports.OP_HASH160 = exports.OP_SHA256 = exports.OP_SHA1 = exports.OP_RIPEMD160 = exports.OP_WITHIN = exports.OP_MAX = exports.OP_MIN = exports.OP_GREATERTHANOREQUAL = exports.OP_LESSTHANOREQUAL = exports.OP_GREATERTHAN = exports.OP_LESSTHAN = exports.OP_NUMNOTEQUAL = exports.OP_NUMEQUALVERIFY = exports.OP_NUMEQUAL = exports.OP_BOOLOR = exports.OP_BOOLAND = exports.OP_RSHIFT = exports.OP_LSHIFT = exports.OP_MOD = exports.OP_DIV = exports.OP_MUL = exports.OP_SUB = exports.OP_ADD = exports.OP_0NOTEQUAL = exports.OP_NOT = exports.OP_ABS = exports.OP_NEGATE = exports.OP_2DIV = exports.OP_2MUL = exports.OP_1SUB = exports.OP_1ADD = exports.OP_RESERVED2 = exports.OP_RESERVED1 = exports.OP_EQUALVERIFY = exports.OP_EQUAL = exports.OP_XOR = exports.OP_OR = exports.OP_AND = exports.OP_INVERT = exports.OP_SIZE = exports.OP_BIN2NUM = exports.OP_NUM2BIN = exports.OP_SPLIT = exports.OP_CAT = exports.OP_TUCK = exports.OP_SWAP = exports.OP_ROT = void 0;
|
|
8
|
+
exports.OP_INVALIDOPCODE = exports.OP_PREFIX_END = exports.OP_PREFIX_BEGIN = exports.OP_REVERSEBYTES = exports.OP_CHECKDATASIGVERIFY = exports.OP_CHECKDATASIG = exports.OP_NOP10 = exports.OP_NOP9 = exports.OP_NOP8 = exports.OP_NOP7 = exports.OP_NOP6 = exports.OP_NOP5 = exports.OP_NOP4 = exports.OP_NOP3 = exports.OP_CHECKSEQUENCEVERIFY = exports.OP_NOP2 = exports.OP_CHECKLOCKTIMEVERIFY = exports.OP_NOP1 = exports.OP_CHECKMULTISIGVERIFY = exports.OP_CHECKMULTISIG = exports.OP_CHECKSIGVERIFY = void 0;
|
|
9
|
+
// push value
|
|
10
|
+
exports.OP_0 = 0x00;
|
|
11
|
+
exports.OP_FALSE = exports.OP_0;
|
|
12
|
+
exports.OP_PUSHDATA1 = 0x4c;
|
|
13
|
+
exports.OP_PUSHDATA2 = 0x4d;
|
|
14
|
+
exports.OP_PUSHDATA4 = 0x4e;
|
|
15
|
+
exports.OP_1NEGATE = 0x4f;
|
|
16
|
+
exports.OP_RESERVED = 0x50;
|
|
17
|
+
exports.OP_1 = 0x51;
|
|
18
|
+
exports.OP_TRUE = exports.OP_1;
|
|
19
|
+
exports.OP_2 = 0x52;
|
|
20
|
+
exports.OP_3 = 0x53;
|
|
21
|
+
exports.OP_4 = 0x54;
|
|
22
|
+
exports.OP_5 = 0x55;
|
|
23
|
+
exports.OP_6 = 0x56;
|
|
24
|
+
exports.OP_7 = 0x57;
|
|
25
|
+
exports.OP_8 = 0x58;
|
|
26
|
+
exports.OP_9 = 0x59;
|
|
27
|
+
exports.OP_10 = 0x5a;
|
|
28
|
+
exports.OP_11 = 0x5b;
|
|
29
|
+
exports.OP_12 = 0x5c;
|
|
30
|
+
exports.OP_13 = 0x5d;
|
|
31
|
+
exports.OP_14 = 0x5e;
|
|
32
|
+
exports.OP_15 = 0x5f;
|
|
33
|
+
exports.OP_16 = 0x60;
|
|
34
|
+
// control
|
|
35
|
+
exports.OP_NOP = 0x61;
|
|
36
|
+
exports.OP_VER = 0x62;
|
|
37
|
+
exports.OP_IF = 0x63;
|
|
38
|
+
exports.OP_NOTIF = 0x64;
|
|
39
|
+
exports.OP_VERIF = 0x65;
|
|
40
|
+
exports.OP_VERNOTIF = 0x66;
|
|
41
|
+
exports.OP_ELSE = 0x67;
|
|
42
|
+
exports.OP_ENDIF = 0x68;
|
|
43
|
+
exports.OP_VERIFY = 0x69;
|
|
44
|
+
exports.OP_RETURN = 0x6a;
|
|
45
|
+
// stack ops
|
|
46
|
+
exports.OP_TOALTSTACK = 0x6b;
|
|
47
|
+
exports.OP_FROMALTSTACK = 0x6c;
|
|
48
|
+
exports.OP_2DROP = 0x6d;
|
|
49
|
+
exports.OP_2DUP = 0x6e;
|
|
50
|
+
exports.OP_3DUP = 0x6f;
|
|
51
|
+
exports.OP_2OVER = 0x70;
|
|
52
|
+
exports.OP_2ROT = 0x71;
|
|
53
|
+
exports.OP_2SWAP = 0x72;
|
|
54
|
+
exports.OP_IFDUP = 0x73;
|
|
55
|
+
exports.OP_DEPTH = 0x74;
|
|
56
|
+
exports.OP_DROP = 0x75;
|
|
57
|
+
exports.OP_DUP = 0x76;
|
|
58
|
+
exports.OP_NIP = 0x77;
|
|
59
|
+
exports.OP_OVER = 0x78;
|
|
60
|
+
exports.OP_PICK = 0x79;
|
|
61
|
+
exports.OP_ROLL = 0x7a;
|
|
62
|
+
exports.OP_ROT = 0x7b;
|
|
63
|
+
exports.OP_SWAP = 0x7c;
|
|
64
|
+
exports.OP_TUCK = 0x7d;
|
|
65
|
+
// splice ops
|
|
66
|
+
exports.OP_CAT = 0x7e;
|
|
67
|
+
exports.OP_SPLIT = 0x7f; // after monolith upgrade (May 2018)
|
|
68
|
+
exports.OP_NUM2BIN = 0x80; // after monolith upgrade (May 2018)
|
|
69
|
+
exports.OP_BIN2NUM = 0x81; // after monolith upgrade (May 2018)
|
|
70
|
+
exports.OP_SIZE = 0x82;
|
|
71
|
+
// bit logic
|
|
72
|
+
exports.OP_INVERT = 0x83;
|
|
73
|
+
exports.OP_AND = 0x84;
|
|
74
|
+
exports.OP_OR = 0x85;
|
|
75
|
+
exports.OP_XOR = 0x86;
|
|
76
|
+
exports.OP_EQUAL = 0x87;
|
|
77
|
+
exports.OP_EQUALVERIFY = 0x88;
|
|
78
|
+
exports.OP_RESERVED1 = 0x89;
|
|
79
|
+
exports.OP_RESERVED2 = 0x8a;
|
|
80
|
+
// numeric
|
|
81
|
+
exports.OP_1ADD = 0x8b;
|
|
82
|
+
exports.OP_1SUB = 0x8c;
|
|
83
|
+
exports.OP_2MUL = 0x8d;
|
|
84
|
+
exports.OP_2DIV = 0x8e;
|
|
85
|
+
exports.OP_NEGATE = 0x8f;
|
|
86
|
+
exports.OP_ABS = 0x90;
|
|
87
|
+
exports.OP_NOT = 0x91;
|
|
88
|
+
exports.OP_0NOTEQUAL = 0x92;
|
|
89
|
+
exports.OP_ADD = 0x93;
|
|
90
|
+
exports.OP_SUB = 0x94;
|
|
91
|
+
exports.OP_MUL = 0x95;
|
|
92
|
+
exports.OP_DIV = 0x96;
|
|
93
|
+
exports.OP_MOD = 0x97;
|
|
94
|
+
exports.OP_LSHIFT = 0x98;
|
|
95
|
+
exports.OP_RSHIFT = 0x99;
|
|
96
|
+
exports.OP_BOOLAND = 0x9a;
|
|
97
|
+
exports.OP_BOOLOR = 0x9b;
|
|
98
|
+
exports.OP_NUMEQUAL = 0x9c;
|
|
99
|
+
exports.OP_NUMEQUALVERIFY = 0x9d;
|
|
100
|
+
exports.OP_NUMNOTEQUAL = 0x9e;
|
|
101
|
+
exports.OP_LESSTHAN = 0x9f;
|
|
102
|
+
exports.OP_GREATERTHAN = 0xa0;
|
|
103
|
+
exports.OP_LESSTHANOREQUAL = 0xa1;
|
|
104
|
+
exports.OP_GREATERTHANOREQUAL = 0xa2;
|
|
105
|
+
exports.OP_MIN = 0xa3;
|
|
106
|
+
exports.OP_MAX = 0xa4;
|
|
107
|
+
exports.OP_WITHIN = 0xa5;
|
|
108
|
+
// crypto
|
|
109
|
+
exports.OP_RIPEMD160 = 0xa6;
|
|
110
|
+
exports.OP_SHA1 = 0xa7;
|
|
111
|
+
exports.OP_SHA256 = 0xa8;
|
|
112
|
+
exports.OP_HASH160 = 0xa9;
|
|
113
|
+
exports.OP_HASH256 = 0xaa;
|
|
114
|
+
exports.OP_CODESEPARATOR = 0xab;
|
|
115
|
+
exports.OP_CHECKSIG = 0xac;
|
|
116
|
+
exports.OP_CHECKSIGVERIFY = 0xad;
|
|
117
|
+
exports.OP_CHECKMULTISIG = 0xae;
|
|
118
|
+
exports.OP_CHECKMULTISIGVERIFY = 0xaf;
|
|
119
|
+
// expansion
|
|
120
|
+
exports.OP_NOP1 = 0xb0;
|
|
121
|
+
exports.OP_CHECKLOCKTIMEVERIFY = 0xb1;
|
|
122
|
+
exports.OP_NOP2 = exports.OP_CHECKLOCKTIMEVERIFY;
|
|
123
|
+
exports.OP_CHECKSEQUENCEVERIFY = 0xb2;
|
|
124
|
+
exports.OP_NOP3 = exports.OP_CHECKSEQUENCEVERIFY;
|
|
125
|
+
exports.OP_NOP4 = 0xb3;
|
|
126
|
+
exports.OP_NOP5 = 0xb4;
|
|
127
|
+
exports.OP_NOP6 = 0xb5;
|
|
128
|
+
exports.OP_NOP7 = 0xb6;
|
|
129
|
+
exports.OP_NOP8 = 0xb7;
|
|
130
|
+
exports.OP_NOP9 = 0xb8;
|
|
131
|
+
exports.OP_NOP10 = 0xb9;
|
|
132
|
+
// More crypto
|
|
133
|
+
exports.OP_CHECKDATASIG = 0xba;
|
|
134
|
+
exports.OP_CHECKDATASIGVERIFY = 0xbb;
|
|
135
|
+
// additional byte string operations
|
|
136
|
+
exports.OP_REVERSEBYTES = 0xbc;
|
|
137
|
+
// multi-byte opcodes
|
|
138
|
+
exports.OP_PREFIX_BEGIN = 0xf0;
|
|
139
|
+
exports.OP_PREFIX_END = 0xf7;
|
|
140
|
+
exports.OP_INVALIDOPCODE = 0xff;
|
|
141
|
+
//# sourceMappingURL=opcode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"opcode.js","sourceRoot":"","sources":["../src/opcode.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,10 @@ export declare class Script {
|
|
|
11
11
|
* prepended.
|
|
12
12
|
**/
|
|
13
13
|
writeWithSize(writer: Writer): void;
|
|
14
|
+
static readWithSize(bytes: Bytes): Script;
|
|
14
15
|
/** Build a Script from the given Script Ops */
|
|
15
16
|
static fromOps(ops: Op[]): Script;
|
|
17
|
+
static fromAddress(address: string): Script;
|
|
16
18
|
/** Iterate over the Ops of this Script */
|
|
17
19
|
ops(): ScriptOpIter;
|
|
18
20
|
/** Create a deep copy of this Script */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAIxC,OAAO,EAAE,EAAE,EAAgC,MAAM,SAAS,CAAC;AAS3D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,gDAAgD;AAChD,qBAAa,MAAM;IACR,QAAQ,EAAE,UAAU,CAAC;IAE5B,2DAA2D;gBACxC,QAAQ,CAAC,EAAE,UAAU;IAIxC;;;QAGI;IACG,aAAa,CAAC,MAAM,EAAE,MAAM;WAKrB,YAAY,CAAC,KAAK,EAAE,KAAK;IAKvC,+CAA+C;WACjC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,MAAM;WAc1B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAkClD,0CAA0C;IACnC,GAAG,IAAI,YAAY;IAI1B,wCAAwC;IACjC,IAAI,IAAI,MAAM;IAIrB;;;;;;;;;;;;;;;;;;OAkBG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAe9C;;;QAGI;IACG,MAAM,IAAI,OAAO;IAWxB,oDAAoD;WACtC,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM;IASlD,yDAAyD;WAC3C,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM;IAa5C,oDAAoD;WACtC,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM;CAGpE;AAED,yCAAyC;AACzC,qBAAa,YAAY;IACrB,KAAK,EAAE,KAAK,CAAC;gBAEM,KAAK,EAAE,KAAK;IAI/B;;;OAGG;IACI,IAAI,IAAI,EAAE,GAAG,SAAS;CAMhC"}
|
package/dist/script.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Copyright (c) 2024 The Bitcoin developers
|
|
3
|
+
// Distributed under the MIT software license, see the accompanying
|
|
4
|
+
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
+
if (mod && mod.__esModule) return mod;
|
|
23
|
+
var result = {};
|
|
24
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
+
__setModuleDefault(result, mod);
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.ScriptOpIter = exports.Script = void 0;
|
|
30
|
+
const varsize_js_1 = require("./io/varsize.js");
|
|
31
|
+
const writerlength_js_1 = require("./io/writerlength.js");
|
|
32
|
+
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
33
|
+
const op_js_1 = require("./op.js");
|
|
34
|
+
const opcode_js_1 = require("./opcode.js");
|
|
35
|
+
const bytes_js_1 = require("./io/bytes.js");
|
|
36
|
+
const cashaddr = __importStar(require("ecashaddrjs"));
|
|
37
|
+
/** A Bitcoin Script locking/unlocking a UTXO */
|
|
38
|
+
class Script {
|
|
39
|
+
/** Create a new Script with the given bytecode or empty */
|
|
40
|
+
constructor(bytecode) {
|
|
41
|
+
this.bytecode = bytecode ?? new Uint8Array();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Write the script to the writer with the script size as VARINT
|
|
45
|
+
* prepended.
|
|
46
|
+
**/
|
|
47
|
+
writeWithSize(writer) {
|
|
48
|
+
(0, varsize_js_1.writeVarSize)(this.bytecode.length, writer);
|
|
49
|
+
writer.putBytes(this.bytecode);
|
|
50
|
+
}
|
|
51
|
+
static readWithSize(bytes) {
|
|
52
|
+
const size = (0, varsize_js_1.readVarSize)(bytes);
|
|
53
|
+
return new Script(bytes.readBytes(Number(size)));
|
|
54
|
+
}
|
|
55
|
+
/** Build a Script from the given Script Ops */
|
|
56
|
+
static fromOps(ops) {
|
|
57
|
+
let scriptSize = 0;
|
|
58
|
+
for (const op of ops) {
|
|
59
|
+
const writerLength = new writerlength_js_1.WriterLength();
|
|
60
|
+
(0, op_js_1.writeOp)(op, writerLength);
|
|
61
|
+
scriptSize += writerLength.length;
|
|
62
|
+
}
|
|
63
|
+
const bytecodeWriter = new writerbytes_js_1.WriterBytes(scriptSize);
|
|
64
|
+
for (const op of ops) {
|
|
65
|
+
(0, op_js_1.writeOp)(op, bytecodeWriter);
|
|
66
|
+
}
|
|
67
|
+
return new Script(bytecodeWriter.data);
|
|
68
|
+
}
|
|
69
|
+
static fromAddress(address) {
|
|
70
|
+
// Note that hash is always returned as a string when decode is called with 'true'
|
|
71
|
+
let decodedAddress;
|
|
72
|
+
try {
|
|
73
|
+
decodedAddress = cashaddr.decode(address, false);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
throw new Error(`Error decoding address "${address}": ${err}`);
|
|
77
|
+
}
|
|
78
|
+
if (typeof decodedAddress.hash !== 'string') {
|
|
79
|
+
// cashaddr.decode returns hash as string | uint8array
|
|
80
|
+
// When called with chronikReady=false param, hash is always returned as a uint8array
|
|
81
|
+
// typescript does not know this though so we need this gate to prevent an error
|
|
82
|
+
switch (decodedAddress.type) {
|
|
83
|
+
case 'P2PKH': {
|
|
84
|
+
return Script.p2pkh(decodedAddress.hash);
|
|
85
|
+
}
|
|
86
|
+
case 'P2SH': {
|
|
87
|
+
return Script.p2sh(decodedAddress.hash);
|
|
88
|
+
}
|
|
89
|
+
default: {
|
|
90
|
+
// Note we should never get here, as ecashaddrjs decode method
|
|
91
|
+
// only supports p2pkh and p2sh
|
|
92
|
+
throw new Error(`Unsupported address type: ${decodedAddress.type}`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
// Note we should never get here, as ecashaddrjs decode method
|
|
97
|
+
// always returns hash as a Uint8Array when called with (<addr>, false)
|
|
98
|
+
throw new Error(`Error decoding address "${address}"`);
|
|
99
|
+
}
|
|
100
|
+
/** Iterate over the Ops of this Script */
|
|
101
|
+
ops() {
|
|
102
|
+
return new ScriptOpIter(new bytes_js_1.Bytes(this.bytecode));
|
|
103
|
+
}
|
|
104
|
+
/** Create a deep copy of this Script */
|
|
105
|
+
copy() {
|
|
106
|
+
return new Script(new Uint8Array(this.bytecode));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Find the n-th OP_CODESEPARATOR (0-based) and cut out the bytecode
|
|
110
|
+
* following it. Required for signing BIP143 scripts that have an
|
|
111
|
+
* OP_CODESEPARATOR.
|
|
112
|
+
*
|
|
113
|
+
* Throw an error if the n-th OP_CODESEPARATOR doesn't exist.
|
|
114
|
+
*
|
|
115
|
+
* Historically this opcode has been seen as obscure and useless, but in
|
|
116
|
+
* BIP143 sighash-based covenants, basically every covenant benefits from
|
|
117
|
+
* its usage, by trimming down the sighash preimage size and thus tx size.
|
|
118
|
+
*
|
|
119
|
+
* Really long Scripts will have a big BIP143 preimage, which costs precious
|
|
120
|
+
* bytes (and the preimage might even go over the 520 pushdata limit).
|
|
121
|
+
* This can be trimmed down to just one single byte by ending the covenant
|
|
122
|
+
* in `... OP_CODESEPARATOR OP_CHECKSIG`, in which case the BIP143 signature
|
|
123
|
+
* algo will cut out everything after the OP_CODESEPARATOR, so only the
|
|
124
|
+
* OP_CHECKSIG remains.
|
|
125
|
+
* If the covenant bytecode is 520 or so, this would save 519 bytes.
|
|
126
|
+
*/
|
|
127
|
+
cutOutCodesep(nCodesep) {
|
|
128
|
+
const ops = this.ops();
|
|
129
|
+
let op;
|
|
130
|
+
let nCodesepsFound = 0;
|
|
131
|
+
while ((op = ops.next()) !== undefined) {
|
|
132
|
+
if (op == opcode_js_1.OP_CODESEPARATOR) {
|
|
133
|
+
if (nCodesepsFound == nCodesep) {
|
|
134
|
+
return new Script(this.bytecode.slice(ops.bytes.idx));
|
|
135
|
+
}
|
|
136
|
+
nCodesepsFound++;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
throw new Error('OP_CODESEPARATOR not found');
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Whether the Script is a P2SH Script.
|
|
143
|
+
* Matches CScript::IsPayToScriptHash in /src/script/script.h.
|
|
144
|
+
**/
|
|
145
|
+
isP2sh() {
|
|
146
|
+
if (this.bytecode.length != 23) {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
return (this.bytecode[0] == opcode_js_1.OP_HASH160 &&
|
|
150
|
+
this.bytecode[1] == 20 &&
|
|
151
|
+
this.bytecode[22] == opcode_js_1.OP_EQUAL);
|
|
152
|
+
}
|
|
153
|
+
/** Build a P2SH script for the given script hash */
|
|
154
|
+
static p2sh(scriptHash) {
|
|
155
|
+
if (scriptHash.length !== 20) {
|
|
156
|
+
throw new Error(`scriptHash length must be 20, got ${scriptHash.length}`);
|
|
157
|
+
}
|
|
158
|
+
return Script.fromOps([opcode_js_1.OP_HASH160, (0, op_js_1.pushBytesOp)(scriptHash), opcode_js_1.OP_EQUAL]);
|
|
159
|
+
}
|
|
160
|
+
/** Build a P2PKH script for the given public key hash */
|
|
161
|
+
static p2pkh(pkh) {
|
|
162
|
+
if (pkh.length !== 20) {
|
|
163
|
+
throw new Error(`pkh length must be 20, got ${pkh.length}`);
|
|
164
|
+
}
|
|
165
|
+
return Script.fromOps([
|
|
166
|
+
opcode_js_1.OP_DUP,
|
|
167
|
+
opcode_js_1.OP_HASH160,
|
|
168
|
+
(0, op_js_1.pushBytesOp)(pkh),
|
|
169
|
+
opcode_js_1.OP_EQUALVERIFY,
|
|
170
|
+
opcode_js_1.OP_CHECKSIG,
|
|
171
|
+
]);
|
|
172
|
+
}
|
|
173
|
+
/** Build a scriptSig for spending a P2PKH output */
|
|
174
|
+
static p2pkhSpend(pk, sig) {
|
|
175
|
+
return Script.fromOps([(0, op_js_1.pushBytesOp)(sig), (0, op_js_1.pushBytesOp)(pk)]);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
exports.Script = Script;
|
|
179
|
+
/** Iterator over the Ops of a Script. */
|
|
180
|
+
class ScriptOpIter {
|
|
181
|
+
constructor(bytes) {
|
|
182
|
+
this.bytes = bytes;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Read the next Op and return it, or `undefined` if there are no more Ops.
|
|
186
|
+
* Throws an error if reading the next op failed.
|
|
187
|
+
*/
|
|
188
|
+
next() {
|
|
189
|
+
if (this.bytes.idx >= this.bytes.data.length) {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
return (0, op_js_1.readOp)(this.bytes);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
exports.ScriptOpIter = ScriptOpIter;
|
|
196
|
+
//# sourceMappingURL=script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigHashType.d.ts","sourceRoot":"","sources":["../src/sigHashType.ts"],"names":[],"mappings":"AAIA,6EAA6E;AAC7E,qBAAa,WAAW;IACpB,oDAAoD;IAC7C,OAAO,EAAE,kBAAkB,CAAC;IACnC,wDAAwD;IACjD,SAAS,EAAE,iBAAiB,CAAC;IACpC,uDAAuD;IAChD,UAAU,EAAE,kBAAkB,CAAC;gBAEnB,MAAM,EAAE;QACvB,OAAO,EAAE,kBAAkB,CAAC;QAC5B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,UAAU,EAAE,kBAAkB,CAAC;KAClC;IAMD,+CAA+C;WACjC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IA+B7D,4CAA4C;IACrC,KAAK,IAAI,MAAM;CAGzB;AAED,6BAA6B;AAC7B,oBAAY,kBAAkB;IAC1B,2CAA2C;IAC3C,MAAM,IAAI;IACV,4CAA4C;IAC5C,MAAM,KAAO;CAChB;AAED,+BAA+B;AAC/B,oBAAY,iBAAiB;IACzB,2DAA2D;IAC3D,KAAK,IAAI;IACT,8DAA8D;IAC9D,YAAY,MAAO;CACtB;AAED,gCAAgC;AAChC,oBAAY,kBAAkB;IAC1B,8DAA8D;IAC9D,GAAG,IAAI;IACP,kDAAkD;IAClD,IAAI,IAAI;IACR,kEAAkE;IAClE,MAAM,IAAI;CACb;AAED,iBAAiB;AACjB,eAAO,MAAM,UAAU,EAAE,WAIvB,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,WAIpC,CAAC;AAEH,kBAAkB;AAClB,eAAO,MAAM,WAAW,EAAE,WAIxB,CAAC;AAEH,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,WAIrC,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,aAAa,EAAE,WAI1B,CAAC;AAEH,iCAAiC;AACjC,eAAO,MAAM,0BAA0B,EAAE,WAIvC,CAAC;AAEH,iBAAiB;AACjB,eAAO,MAAM,UAAU,EAAE,WAIvB,CAAC;AAEH,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,EAAE,WAIpC,CAAC;AAEH,kBAAkB;AAClB,eAAO,MAAM,WAAW,EAAE,WAIxB,CAAC;AAEH,+BAA+B;AAC/B,eAAO,MAAM,wBAAwB,EAAE,WAIrC,CAAC;AAEH,oBAAoB;AACpB,eAAO,MAAM,aAAa,EAAE,WAI1B,CAAC;AAEH,iCAAiC;AACjC,eAAO,MAAM,0BAA0B,EAAE,WAIvC,CAAC"}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// Copyright (c) 2024 The Bitcoin developers
|
|
2
3
|
// Distributed under the MIT software license, see the accompanying
|
|
3
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.SINGLE_ANYONECANPAY_LEGACY = exports.SINGLE_LEGACY = exports.NONE_ANYONECANPAY_LEGACY = exports.NONE_LEGACY = exports.ALL_ANYONECANPAY_LEGACY = exports.ALL_LEGACY = exports.SINGLE_ANYONECANPAY_BIP143 = exports.SINGLE_BIP143 = exports.NONE_ANYONECANPAY_BIP143 = exports.NONE_BIP143 = exports.ALL_ANYONECANPAY_BIP143 = exports.ALL_BIP143 = exports.SigHashTypeOutputs = exports.SigHashTypeInputs = exports.SigHashTypeVariant = exports.SigHashType = void 0;
|
|
4
7
|
/** Type of sighash used to sign for an input for a OP_CHECKSIG operation. */
|
|
5
|
-
|
|
8
|
+
class SigHashType {
|
|
6
9
|
constructor(params) {
|
|
7
10
|
this.variant = params.variant;
|
|
8
11
|
this.inputType = params.inputType;
|
|
@@ -41,24 +44,25 @@ export class SigHashType {
|
|
|
41
44
|
return this.variant | this.inputType | this.outputType;
|
|
42
45
|
}
|
|
43
46
|
}
|
|
47
|
+
exports.SigHashType = SigHashType;
|
|
44
48
|
/** Variant of the sighash */
|
|
45
|
-
|
|
49
|
+
var SigHashTypeVariant;
|
|
46
50
|
(function (SigHashTypeVariant) {
|
|
47
51
|
/** Original Satoshi, pre-BIP143 sighash */
|
|
48
52
|
SigHashTypeVariant[SigHashTypeVariant["LEGACY"] = 0] = "LEGACY";
|
|
49
53
|
/** New BIP143 sighash introduced by UAHF */
|
|
50
54
|
SigHashTypeVariant[SigHashTypeVariant["BIP143"] = 64] = "BIP143";
|
|
51
|
-
})(SigHashTypeVariant || (SigHashTypeVariant = {}));
|
|
55
|
+
})(SigHashTypeVariant || (exports.SigHashTypeVariant = SigHashTypeVariant = {}));
|
|
52
56
|
/** How tx inputs are signed */
|
|
53
|
-
|
|
57
|
+
var SigHashTypeInputs;
|
|
54
58
|
(function (SigHashTypeInputs) {
|
|
55
59
|
/** Inputs are fixed, no other inputs can added/removeed */
|
|
56
60
|
SigHashTypeInputs[SigHashTypeInputs["FIXED"] = 0] = "FIXED";
|
|
57
61
|
/** Inputs are arbitrary, other inputs can be added/removed */
|
|
58
62
|
SigHashTypeInputs[SigHashTypeInputs["ANYONECANPAY"] = 128] = "ANYONECANPAY";
|
|
59
|
-
})(SigHashTypeInputs || (SigHashTypeInputs = {}));
|
|
63
|
+
})(SigHashTypeInputs || (exports.SigHashTypeInputs = SigHashTypeInputs = {}));
|
|
60
64
|
/** How tx outputs are signed */
|
|
61
|
-
|
|
65
|
+
var SigHashTypeOutputs;
|
|
62
66
|
(function (SigHashTypeOutputs) {
|
|
63
67
|
/** All outputs are signed, no outputs can be added/removed */
|
|
64
68
|
SigHashTypeOutputs[SigHashTypeOutputs["ALL"] = 1] = "ALL";
|
|
@@ -66,75 +70,75 @@ export var SigHashTypeOutputs;
|
|
|
66
70
|
SigHashTypeOutputs[SigHashTypeOutputs["NONE"] = 2] = "NONE";
|
|
67
71
|
/** The output with the identical index as this input is signed */
|
|
68
72
|
SigHashTypeOutputs[SigHashTypeOutputs["SINGLE"] = 3] = "SINGLE";
|
|
69
|
-
})(SigHashTypeOutputs || (SigHashTypeOutputs = {}));
|
|
73
|
+
})(SigHashTypeOutputs || (exports.SigHashTypeOutputs = SigHashTypeOutputs = {}));
|
|
70
74
|
/** ALL|BIP143 */
|
|
71
|
-
|
|
75
|
+
exports.ALL_BIP143 = new SigHashType({
|
|
72
76
|
variant: SigHashTypeVariant.BIP143,
|
|
73
77
|
inputType: SigHashTypeInputs.FIXED,
|
|
74
78
|
outputType: SigHashTypeOutputs.ALL,
|
|
75
79
|
});
|
|
76
80
|
/** ALL|ANYONECANPAY|BIP143 */
|
|
77
|
-
|
|
81
|
+
exports.ALL_ANYONECANPAY_BIP143 = new SigHashType({
|
|
78
82
|
variant: SigHashTypeVariant.BIP143,
|
|
79
83
|
inputType: SigHashTypeInputs.ANYONECANPAY,
|
|
80
84
|
outputType: SigHashTypeOutputs.ALL,
|
|
81
85
|
});
|
|
82
86
|
/** NONE|BIP143 */
|
|
83
|
-
|
|
87
|
+
exports.NONE_BIP143 = new SigHashType({
|
|
84
88
|
variant: SigHashTypeVariant.BIP143,
|
|
85
89
|
inputType: SigHashTypeInputs.FIXED,
|
|
86
90
|
outputType: SigHashTypeOutputs.NONE,
|
|
87
91
|
});
|
|
88
92
|
/** NONE|ANYONECANPAY|BIP143 */
|
|
89
|
-
|
|
93
|
+
exports.NONE_ANYONECANPAY_BIP143 = new SigHashType({
|
|
90
94
|
variant: SigHashTypeVariant.BIP143,
|
|
91
95
|
inputType: SigHashTypeInputs.ANYONECANPAY,
|
|
92
96
|
outputType: SigHashTypeOutputs.NONE,
|
|
93
97
|
});
|
|
94
98
|
/** SINGLE|BIP143 */
|
|
95
|
-
|
|
99
|
+
exports.SINGLE_BIP143 = new SigHashType({
|
|
96
100
|
variant: SigHashTypeVariant.BIP143,
|
|
97
101
|
inputType: SigHashTypeInputs.FIXED,
|
|
98
102
|
outputType: SigHashTypeOutputs.SINGLE,
|
|
99
103
|
});
|
|
100
104
|
/** SINGLE|ANYONECANPAY|BIP143 */
|
|
101
|
-
|
|
105
|
+
exports.SINGLE_ANYONECANPAY_BIP143 = new SigHashType({
|
|
102
106
|
variant: SigHashTypeVariant.BIP143,
|
|
103
107
|
inputType: SigHashTypeInputs.ANYONECANPAY,
|
|
104
108
|
outputType: SigHashTypeOutputs.SINGLE,
|
|
105
109
|
});
|
|
106
110
|
/** ALL|LEGACY */
|
|
107
|
-
|
|
111
|
+
exports.ALL_LEGACY = new SigHashType({
|
|
108
112
|
variant: SigHashTypeVariant.LEGACY,
|
|
109
113
|
inputType: SigHashTypeInputs.FIXED,
|
|
110
114
|
outputType: SigHashTypeOutputs.ALL,
|
|
111
115
|
});
|
|
112
116
|
/** ALL|ANYONECANPAY|LEGACY */
|
|
113
|
-
|
|
117
|
+
exports.ALL_ANYONECANPAY_LEGACY = new SigHashType({
|
|
114
118
|
variant: SigHashTypeVariant.LEGACY,
|
|
115
119
|
inputType: SigHashTypeInputs.ANYONECANPAY,
|
|
116
120
|
outputType: SigHashTypeOutputs.ALL,
|
|
117
121
|
});
|
|
118
122
|
/** NONE|LEGACY */
|
|
119
|
-
|
|
123
|
+
exports.NONE_LEGACY = new SigHashType({
|
|
120
124
|
variant: SigHashTypeVariant.LEGACY,
|
|
121
125
|
inputType: SigHashTypeInputs.FIXED,
|
|
122
126
|
outputType: SigHashTypeOutputs.NONE,
|
|
123
127
|
});
|
|
124
128
|
/** NONE|ANYONECANPAY|LEGACY */
|
|
125
|
-
|
|
129
|
+
exports.NONE_ANYONECANPAY_LEGACY = new SigHashType({
|
|
126
130
|
variant: SigHashTypeVariant.LEGACY,
|
|
127
131
|
inputType: SigHashTypeInputs.ANYONECANPAY,
|
|
128
132
|
outputType: SigHashTypeOutputs.NONE,
|
|
129
133
|
});
|
|
130
134
|
/** SINGLE|LEGACY */
|
|
131
|
-
|
|
135
|
+
exports.SINGLE_LEGACY = new SigHashType({
|
|
132
136
|
variant: SigHashTypeVariant.LEGACY,
|
|
133
137
|
inputType: SigHashTypeInputs.FIXED,
|
|
134
138
|
outputType: SigHashTypeOutputs.SINGLE,
|
|
135
139
|
});
|
|
136
140
|
/** SINGLE|ANYONECANPAY|LEGACY */
|
|
137
|
-
|
|
141
|
+
exports.SINGLE_ANYONECANPAY_LEGACY = new SigHashType({
|
|
138
142
|
variant: SigHashTypeVariant.LEGACY,
|
|
139
143
|
inputType: SigHashTypeInputs.ANYONECANPAY,
|
|
140
144
|
outputType: SigHashTypeOutputs.SINGLE,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigHashType.js","sourceRoot":"","sources":["../src/sigHashType.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import type { ChronikClient } from 'chronik-client';
|
|
3
|
+
import type { ChildProcess } from 'node:child_process';
|
|
4
|
+
import { Ecc } from '../ecc.js';
|
|
5
|
+
import { Script } from '../script.js';
|
|
6
|
+
import { OutPoint } from '../tx.js';
|
|
7
|
+
export declare class TestRunner {
|
|
8
|
+
ecc: Ecc;
|
|
9
|
+
runner: ChildProcess;
|
|
10
|
+
chronik: ChronikClient;
|
|
11
|
+
private coinsTxid;
|
|
12
|
+
private lastUsedOutIdx;
|
|
13
|
+
private constructor();
|
|
14
|
+
static setup(): Promise<TestRunner>;
|
|
15
|
+
setupCoins(numCoins: number, coinValue: number): Promise<void>;
|
|
16
|
+
getOutpoint(): OutPoint;
|
|
17
|
+
sendToScript(value: number, script: Script): Promise<string>;
|
|
18
|
+
generate(): void;
|
|
19
|
+
stop(): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=testRunner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testRunner.d.ts","sourceRoot":"","sources":["../../src/test/testRunner.ts"],"names":[],"mappings":";AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAKhC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAM,MAAM,UAAU,CAAC;AAUxC,qBAAa,UAAU;IACZ,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,aAAa,CAAC;IAC9B,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO;WAYa,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAkFnC,UAAU,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAgCT,WAAW,IAAI,QAAQ;IAUjB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAclE,QAAQ;IAIR,IAAI;CAGd"}
|