@scure/btc-signer 1.8.1 → 2.0.0
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 +8 -5
- package/index.js +17 -61
- package/index.js.map +1 -1
- package/musig2.d.ts +2 -2
- package/musig2.d.ts.map +1 -1
- package/musig2.js +93 -90
- package/musig2.js.map +1 -1
- package/p2p.d.ts +7 -8
- package/p2p.d.ts.map +1 -1
- package/p2p.js +32 -38
- package/p2p.js.map +1 -1
- package/package.json +33 -103
- package/payment.js +73 -96
- package/payment.js.map +1 -1
- package/psbt.d.ts +224 -224
- package/psbt.d.ts.map +1 -1
- package/psbt.js +58 -63
- package/psbt.js.map +1 -1
- package/script.d.ts +125 -120
- package/script.d.ts.map +1 -1
- package/script.js +46 -146
- package/script.js.map +1 -1
- package/src/musig2.ts +43 -50
- package/src/p2p.ts +28 -40
- package/src/psbt.ts +7 -7
- package/src/script.ts +29 -26
- package/src/transaction.ts +21 -21
- package/src/utils.ts +41 -22
- package/transaction.d.ts +22 -28
- package/transaction.d.ts.map +1 -1
- package/transaction.js +134 -151
- package/transaction.js.map +1 -1
- package/utils.d.ts +11 -5
- package/utils.d.ts.map +1 -1
- package/utils.js +60 -62
- package/utils.js.map +1 -1
- package/utxo.d.ts +45 -45
- package/utxo.d.ts.map +1 -1
- package/utxo.js +62 -58
- package/utxo.js.map +1 -1
- package/_type_test.d.ts +0 -2
- package/_type_test.d.ts.map +0 -1
- package/_type_test.js +0 -59
- package/_type_test.js.map +0 -1
- package/esm/_type_test.d.ts +0 -2
- package/esm/_type_test.d.ts.map +0 -1
- package/esm/_type_test.js +0 -57
- package/esm/_type_test.js.map +0 -1
- package/esm/index.d.ts +0 -22
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -22
- package/esm/index.js.map +0 -1
- package/esm/musig2.d.ts +0 -148
- package/esm/musig2.d.ts.map +0 -1
- package/esm/musig2.js +0 -404
- package/esm/musig2.js.map +0 -1
- package/esm/p2p.d.ts +0 -38
- package/esm/p2p.d.ts.map +0 -1
- package/esm/p2p.js +0 -156
- package/esm/p2p.js.map +0 -1
- package/esm/package.json +0 -1
- package/esm/payment.d.ts +0 -200
- package/esm/payment.d.ts.map +0 -1
- package/esm/payment.js +0 -697
- package/esm/payment.js.map +0 -1
- package/esm/psbt.d.ts +0 -820
- package/esm/psbt.d.ts.map +0 -1
- package/esm/psbt.js +0 -409
- package/esm/psbt.js.map +0 -1
- package/esm/script.d.ts +0 -170
- package/esm/script.d.ts.map +0 -1
- package/esm/script.js +0 -356
- package/esm/script.js.map +0 -1
- package/esm/transaction.d.ts +0 -172
- package/esm/transaction.d.ts.map +0 -1
- package/esm/transaction.js +0 -1185
- package/esm/transaction.js.map +0 -1
- package/esm/utils.d.ts +0 -35
- package/esm/utils.d.ts.map +0 -1
- package/esm/utils.js +0 -118
- package/esm/utils.js.map +0 -1
- package/esm/utxo.d.ts +0 -198
- package/esm/utxo.d.ts.map +0 -1
- package/esm/utxo.js +0 -461
- package/esm/utxo.js.map +0 -1
- package/src/_type_test.ts +0 -69
- package/src/package.json +0 -3
package/esm/script.js
DELETED
|
@@ -1,356 +0,0 @@
|
|
|
1
|
-
import * as P from 'micro-packed';
|
|
2
|
-
import { isBytes } from "./utils.js";
|
|
3
|
-
export const MAX_SCRIPT_BYTE_LENGTH = 520;
|
|
4
|
-
// prettier-ignore
|
|
5
|
-
export var OP;
|
|
6
|
-
(function (OP) {
|
|
7
|
-
OP[OP["OP_0"] = 0] = "OP_0";
|
|
8
|
-
OP[OP["PUSHDATA1"] = 76] = "PUSHDATA1";
|
|
9
|
-
OP[OP["PUSHDATA2"] = 77] = "PUSHDATA2";
|
|
10
|
-
OP[OP["PUSHDATA4"] = 78] = "PUSHDATA4";
|
|
11
|
-
OP[OP["1NEGATE"] = 79] = "1NEGATE";
|
|
12
|
-
OP[OP["RESERVED"] = 80] = "RESERVED";
|
|
13
|
-
OP[OP["OP_1"] = 81] = "OP_1";
|
|
14
|
-
OP[OP["OP_2"] = 82] = "OP_2";
|
|
15
|
-
OP[OP["OP_3"] = 83] = "OP_3";
|
|
16
|
-
OP[OP["OP_4"] = 84] = "OP_4";
|
|
17
|
-
OP[OP["OP_5"] = 85] = "OP_5";
|
|
18
|
-
OP[OP["OP_6"] = 86] = "OP_6";
|
|
19
|
-
OP[OP["OP_7"] = 87] = "OP_7";
|
|
20
|
-
OP[OP["OP_8"] = 88] = "OP_8";
|
|
21
|
-
OP[OP["OP_9"] = 89] = "OP_9";
|
|
22
|
-
OP[OP["OP_10"] = 90] = "OP_10";
|
|
23
|
-
OP[OP["OP_11"] = 91] = "OP_11";
|
|
24
|
-
OP[OP["OP_12"] = 92] = "OP_12";
|
|
25
|
-
OP[OP["OP_13"] = 93] = "OP_13";
|
|
26
|
-
OP[OP["OP_14"] = 94] = "OP_14";
|
|
27
|
-
OP[OP["OP_15"] = 95] = "OP_15";
|
|
28
|
-
OP[OP["OP_16"] = 96] = "OP_16";
|
|
29
|
-
// Control
|
|
30
|
-
OP[OP["NOP"] = 97] = "NOP";
|
|
31
|
-
OP[OP["VER"] = 98] = "VER";
|
|
32
|
-
OP[OP["IF"] = 99] = "IF";
|
|
33
|
-
OP[OP["NOTIF"] = 100] = "NOTIF";
|
|
34
|
-
OP[OP["VERIF"] = 101] = "VERIF";
|
|
35
|
-
OP[OP["VERNOTIF"] = 102] = "VERNOTIF";
|
|
36
|
-
OP[OP["ELSE"] = 103] = "ELSE";
|
|
37
|
-
OP[OP["ENDIF"] = 104] = "ENDIF";
|
|
38
|
-
OP[OP["VERIFY"] = 105] = "VERIFY";
|
|
39
|
-
OP[OP["RETURN"] = 106] = "RETURN";
|
|
40
|
-
// Stack
|
|
41
|
-
OP[OP["TOALTSTACK"] = 107] = "TOALTSTACK";
|
|
42
|
-
OP[OP["FROMALTSTACK"] = 108] = "FROMALTSTACK";
|
|
43
|
-
OP[OP["2DROP"] = 109] = "2DROP";
|
|
44
|
-
OP[OP["2DUP"] = 110] = "2DUP";
|
|
45
|
-
OP[OP["3DUP"] = 111] = "3DUP";
|
|
46
|
-
OP[OP["2OVER"] = 112] = "2OVER";
|
|
47
|
-
OP[OP["2ROT"] = 113] = "2ROT";
|
|
48
|
-
OP[OP["2SWAP"] = 114] = "2SWAP";
|
|
49
|
-
OP[OP["IFDUP"] = 115] = "IFDUP";
|
|
50
|
-
OP[OP["DEPTH"] = 116] = "DEPTH";
|
|
51
|
-
OP[OP["DROP"] = 117] = "DROP";
|
|
52
|
-
OP[OP["DUP"] = 118] = "DUP";
|
|
53
|
-
OP[OP["NIP"] = 119] = "NIP";
|
|
54
|
-
OP[OP["OVER"] = 120] = "OVER";
|
|
55
|
-
OP[OP["PICK"] = 121] = "PICK";
|
|
56
|
-
OP[OP["ROLL"] = 122] = "ROLL";
|
|
57
|
-
OP[OP["ROT"] = 123] = "ROT";
|
|
58
|
-
OP[OP["SWAP"] = 124] = "SWAP";
|
|
59
|
-
OP[OP["TUCK"] = 125] = "TUCK";
|
|
60
|
-
// Splice
|
|
61
|
-
OP[OP["CAT"] = 126] = "CAT";
|
|
62
|
-
OP[OP["SUBSTR"] = 127] = "SUBSTR";
|
|
63
|
-
OP[OP["LEFT"] = 128] = "LEFT";
|
|
64
|
-
OP[OP["RIGHT"] = 129] = "RIGHT";
|
|
65
|
-
OP[OP["SIZE"] = 130] = "SIZE";
|
|
66
|
-
// Boolean logic
|
|
67
|
-
OP[OP["INVERT"] = 131] = "INVERT";
|
|
68
|
-
OP[OP["AND"] = 132] = "AND";
|
|
69
|
-
OP[OP["OR"] = 133] = "OR";
|
|
70
|
-
OP[OP["XOR"] = 134] = "XOR";
|
|
71
|
-
OP[OP["EQUAL"] = 135] = "EQUAL";
|
|
72
|
-
OP[OP["EQUALVERIFY"] = 136] = "EQUALVERIFY";
|
|
73
|
-
OP[OP["RESERVED1"] = 137] = "RESERVED1";
|
|
74
|
-
OP[OP["RESERVED2"] = 138] = "RESERVED2";
|
|
75
|
-
// Numbers
|
|
76
|
-
OP[OP["1ADD"] = 139] = "1ADD";
|
|
77
|
-
OP[OP["1SUB"] = 140] = "1SUB";
|
|
78
|
-
OP[OP["2MUL"] = 141] = "2MUL";
|
|
79
|
-
OP[OP["2DIV"] = 142] = "2DIV";
|
|
80
|
-
OP[OP["NEGATE"] = 143] = "NEGATE";
|
|
81
|
-
OP[OP["ABS"] = 144] = "ABS";
|
|
82
|
-
OP[OP["NOT"] = 145] = "NOT";
|
|
83
|
-
OP[OP["0NOTEQUAL"] = 146] = "0NOTEQUAL";
|
|
84
|
-
OP[OP["ADD"] = 147] = "ADD";
|
|
85
|
-
OP[OP["SUB"] = 148] = "SUB";
|
|
86
|
-
OP[OP["MUL"] = 149] = "MUL";
|
|
87
|
-
OP[OP["DIV"] = 150] = "DIV";
|
|
88
|
-
OP[OP["MOD"] = 151] = "MOD";
|
|
89
|
-
OP[OP["LSHIFT"] = 152] = "LSHIFT";
|
|
90
|
-
OP[OP["RSHIFT"] = 153] = "RSHIFT";
|
|
91
|
-
OP[OP["BOOLAND"] = 154] = "BOOLAND";
|
|
92
|
-
OP[OP["BOOLOR"] = 155] = "BOOLOR";
|
|
93
|
-
OP[OP["NUMEQUAL"] = 156] = "NUMEQUAL";
|
|
94
|
-
OP[OP["NUMEQUALVERIFY"] = 157] = "NUMEQUALVERIFY";
|
|
95
|
-
OP[OP["NUMNOTEQUAL"] = 158] = "NUMNOTEQUAL";
|
|
96
|
-
OP[OP["LESSTHAN"] = 159] = "LESSTHAN";
|
|
97
|
-
OP[OP["GREATERTHAN"] = 160] = "GREATERTHAN";
|
|
98
|
-
OP[OP["LESSTHANOREQUAL"] = 161] = "LESSTHANOREQUAL";
|
|
99
|
-
OP[OP["GREATERTHANOREQUAL"] = 162] = "GREATERTHANOREQUAL";
|
|
100
|
-
OP[OP["MIN"] = 163] = "MIN";
|
|
101
|
-
OP[OP["MAX"] = 164] = "MAX";
|
|
102
|
-
OP[OP["WITHIN"] = 165] = "WITHIN";
|
|
103
|
-
// Crypto
|
|
104
|
-
OP[OP["RIPEMD160"] = 166] = "RIPEMD160";
|
|
105
|
-
OP[OP["SHA1"] = 167] = "SHA1";
|
|
106
|
-
OP[OP["SHA256"] = 168] = "SHA256";
|
|
107
|
-
OP[OP["HASH160"] = 169] = "HASH160";
|
|
108
|
-
OP[OP["HASH256"] = 170] = "HASH256";
|
|
109
|
-
OP[OP["CODESEPARATOR"] = 171] = "CODESEPARATOR";
|
|
110
|
-
OP[OP["CHECKSIG"] = 172] = "CHECKSIG";
|
|
111
|
-
OP[OP["CHECKSIGVERIFY"] = 173] = "CHECKSIGVERIFY";
|
|
112
|
-
OP[OP["CHECKMULTISIG"] = 174] = "CHECKMULTISIG";
|
|
113
|
-
OP[OP["CHECKMULTISIGVERIFY"] = 175] = "CHECKMULTISIGVERIFY";
|
|
114
|
-
// Expansion
|
|
115
|
-
OP[OP["NOP1"] = 176] = "NOP1";
|
|
116
|
-
OP[OP["CHECKLOCKTIMEVERIFY"] = 177] = "CHECKLOCKTIMEVERIFY";
|
|
117
|
-
OP[OP["CHECKSEQUENCEVERIFY"] = 178] = "CHECKSEQUENCEVERIFY";
|
|
118
|
-
OP[OP["NOP4"] = 179] = "NOP4";
|
|
119
|
-
OP[OP["NOP5"] = 180] = "NOP5";
|
|
120
|
-
OP[OP["NOP6"] = 181] = "NOP6";
|
|
121
|
-
OP[OP["NOP7"] = 182] = "NOP7";
|
|
122
|
-
OP[OP["NOP8"] = 183] = "NOP8";
|
|
123
|
-
OP[OP["NOP9"] = 184] = "NOP9";
|
|
124
|
-
OP[OP["NOP10"] = 185] = "NOP10";
|
|
125
|
-
// BIP 342
|
|
126
|
-
OP[OP["CHECKSIGADD"] = 186] = "CHECKSIGADD";
|
|
127
|
-
// Invalid
|
|
128
|
-
OP[OP["INVALID"] = 255] = "INVALID";
|
|
129
|
-
})(OP || (OP = {}));
|
|
130
|
-
// We can encode almost any number as ScriptNum, however, parsing will be a problem
|
|
131
|
-
// since we can't know if buffer is a number or something else.
|
|
132
|
-
export function ScriptNum(bytesLimit = 6, forceMinimal = false) {
|
|
133
|
-
return P.wrap({
|
|
134
|
-
encodeStream: (w, value) => {
|
|
135
|
-
if (value === 0n)
|
|
136
|
-
return;
|
|
137
|
-
const neg = value < 0;
|
|
138
|
-
const val = BigInt(value);
|
|
139
|
-
const nums = [];
|
|
140
|
-
for (let abs = neg ? -val : val; abs; abs >>= 8n)
|
|
141
|
-
nums.push(Number(abs & 0xffn));
|
|
142
|
-
if (nums[nums.length - 1] >= 0x80)
|
|
143
|
-
nums.push(neg ? 0x80 : 0);
|
|
144
|
-
else if (neg)
|
|
145
|
-
nums[nums.length - 1] |= 0x80;
|
|
146
|
-
w.bytes(new Uint8Array(nums));
|
|
147
|
-
},
|
|
148
|
-
decodeStream: (r) => {
|
|
149
|
-
const len = r.leftBytes;
|
|
150
|
-
if (len > bytesLimit)
|
|
151
|
-
throw new Error(`ScriptNum: number (${len}) bigger than limit=${bytesLimit}`);
|
|
152
|
-
if (len === 0)
|
|
153
|
-
return 0n;
|
|
154
|
-
if (forceMinimal) {
|
|
155
|
-
const data = r.bytes(len, true);
|
|
156
|
-
// MSB is zero (without sign bit) -> not minimally encoded
|
|
157
|
-
if ((data[data.length - 1] & 0x7f) === 0) {
|
|
158
|
-
// exception
|
|
159
|
-
if (len <= 1 || (data[data.length - 2] & 0x80) === 0)
|
|
160
|
-
throw new Error('Non-minimally encoded ScriptNum');
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
let last = 0;
|
|
164
|
-
let res = 0n;
|
|
165
|
-
for (let i = 0; i < len; ++i) {
|
|
166
|
-
last = r.byte();
|
|
167
|
-
res |= BigInt(last) << (8n * BigInt(i));
|
|
168
|
-
}
|
|
169
|
-
if (last >= 0x80) {
|
|
170
|
-
res &= (2n ** BigInt(len * 8) - 1n) >> 1n;
|
|
171
|
-
res = -res;
|
|
172
|
-
}
|
|
173
|
-
return res;
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
export function OpToNum(op, bytesLimit = 4, forceMinimal = true) {
|
|
178
|
-
if (typeof op === 'number')
|
|
179
|
-
return op;
|
|
180
|
-
if (isBytes(op)) {
|
|
181
|
-
try {
|
|
182
|
-
const val = ScriptNum(bytesLimit, forceMinimal).decode(op);
|
|
183
|
-
if (val > Number.MAX_SAFE_INTEGER)
|
|
184
|
-
return;
|
|
185
|
-
return Number(val);
|
|
186
|
-
}
|
|
187
|
-
catch (e) {
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
}
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
// Converts script bytes to parsed script
|
|
194
|
-
// 5221030000000000000000000000000000000000000000000000000000000000000001210300000000000000000000000000000000000000000000000000000000000000022103000000000000000000000000000000000000000000000000000000000000000353ae
|
|
195
|
-
// =>
|
|
196
|
-
// OP_2
|
|
197
|
-
// 030000000000000000000000000000000000000000000000000000000000000001
|
|
198
|
-
// 030000000000000000000000000000000000000000000000000000000000000002
|
|
199
|
-
// 030000000000000000000000000000000000000000000000000000000000000003
|
|
200
|
-
// OP_3
|
|
201
|
-
// CHECKMULTISIG
|
|
202
|
-
export const Script = P.wrap({
|
|
203
|
-
encodeStream: (w, value) => {
|
|
204
|
-
for (let o of value) {
|
|
205
|
-
if (typeof o === 'string') {
|
|
206
|
-
if (OP[o] === undefined)
|
|
207
|
-
throw new Error(`Unknown opcode=${o}`);
|
|
208
|
-
w.byte(OP[o]);
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
else if (typeof o === 'number') {
|
|
212
|
-
if (o === 0x00) {
|
|
213
|
-
w.byte(0x00);
|
|
214
|
-
continue;
|
|
215
|
-
}
|
|
216
|
-
else if (1 <= o && o <= 16) {
|
|
217
|
-
w.byte(OP.OP_1 - 1 + o);
|
|
218
|
-
continue;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
// Encode big numbers
|
|
222
|
-
if (typeof o === 'number')
|
|
223
|
-
o = ScriptNum().encode(BigInt(o));
|
|
224
|
-
if (!isBytes(o))
|
|
225
|
-
throw new Error(`Wrong Script OP=${o} (${typeof o})`);
|
|
226
|
-
// Bytes
|
|
227
|
-
const len = o.length;
|
|
228
|
-
if (len < OP.PUSHDATA1)
|
|
229
|
-
w.byte(len);
|
|
230
|
-
else if (len <= 0xff) {
|
|
231
|
-
w.byte(OP.PUSHDATA1);
|
|
232
|
-
w.byte(len);
|
|
233
|
-
}
|
|
234
|
-
else if (len <= 0xffff) {
|
|
235
|
-
w.byte(OP.PUSHDATA2);
|
|
236
|
-
w.bytes(P.U16LE.encode(len));
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
w.byte(OP.PUSHDATA4);
|
|
240
|
-
w.bytes(P.U32LE.encode(len));
|
|
241
|
-
}
|
|
242
|
-
w.bytes(o);
|
|
243
|
-
}
|
|
244
|
-
},
|
|
245
|
-
decodeStream: (r) => {
|
|
246
|
-
const out = [];
|
|
247
|
-
while (!r.isEnd()) {
|
|
248
|
-
const cur = r.byte();
|
|
249
|
-
// if 0 < cur < 78
|
|
250
|
-
if (OP.OP_0 < cur && cur <= OP.PUSHDATA4) {
|
|
251
|
-
let len;
|
|
252
|
-
if (cur < OP.PUSHDATA1)
|
|
253
|
-
len = cur;
|
|
254
|
-
else if (cur === OP.PUSHDATA1)
|
|
255
|
-
len = P.U8.decodeStream(r);
|
|
256
|
-
else if (cur === OP.PUSHDATA2)
|
|
257
|
-
len = P.U16LE.decodeStream(r);
|
|
258
|
-
else if (cur === OP.PUSHDATA4)
|
|
259
|
-
len = P.U32LE.decodeStream(r);
|
|
260
|
-
else
|
|
261
|
-
throw new Error('Should be not possible');
|
|
262
|
-
out.push(r.bytes(len));
|
|
263
|
-
}
|
|
264
|
-
else if (cur === 0x00) {
|
|
265
|
-
out.push(0);
|
|
266
|
-
}
|
|
267
|
-
else if (OP.OP_1 <= cur && cur <= OP.OP_16) {
|
|
268
|
-
out.push(cur - (OP.OP_1 - 1));
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
const op = OP[cur];
|
|
272
|
-
if (op === undefined)
|
|
273
|
-
throw new Error(`Unknown opcode=${cur.toString(16)}`);
|
|
274
|
-
out.push(op);
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
return out;
|
|
278
|
-
},
|
|
279
|
-
});
|
|
280
|
-
// BTC specific variable length integer encoding
|
|
281
|
-
// https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer
|
|
282
|
-
const CSLimits = {
|
|
283
|
-
0xfd: [0xfd, 2, 253n, 65535n],
|
|
284
|
-
0xfe: [0xfe, 4, 65536n, 4294967295n],
|
|
285
|
-
0xff: [0xff, 8, 4294967296n, 18446744073709551615n],
|
|
286
|
-
};
|
|
287
|
-
export const CompactSize = P.wrap({
|
|
288
|
-
encodeStream: (w, value) => {
|
|
289
|
-
if (typeof value === 'number')
|
|
290
|
-
value = BigInt(value);
|
|
291
|
-
if (0n <= value && value <= 252n)
|
|
292
|
-
return w.byte(Number(value));
|
|
293
|
-
for (const [flag, bytes, start, stop] of Object.values(CSLimits)) {
|
|
294
|
-
if (start > value || value > stop)
|
|
295
|
-
continue;
|
|
296
|
-
w.byte(flag);
|
|
297
|
-
for (let i = 0; i < bytes; i++)
|
|
298
|
-
w.byte(Number((value >> (8n * BigInt(i))) & 0xffn));
|
|
299
|
-
return;
|
|
300
|
-
}
|
|
301
|
-
throw w.err(`VarInt too big: ${value}`);
|
|
302
|
-
},
|
|
303
|
-
decodeStream: (r) => {
|
|
304
|
-
const b0 = r.byte();
|
|
305
|
-
if (b0 <= 0xfc)
|
|
306
|
-
return BigInt(b0);
|
|
307
|
-
const [_, bytes, start] = CSLimits[b0];
|
|
308
|
-
let num = 0n;
|
|
309
|
-
for (let i = 0; i < bytes; i++)
|
|
310
|
-
num |= BigInt(r.byte()) << (8n * BigInt(i));
|
|
311
|
-
if (num < start)
|
|
312
|
-
throw r.err(`Wrong CompactSize(${8 * bytes})`);
|
|
313
|
-
return num;
|
|
314
|
-
},
|
|
315
|
-
});
|
|
316
|
-
// Same thing, but in number instead of bigint. Checks for safe integer inside
|
|
317
|
-
export const CompactSizeLen = P.apply(CompactSize, P.coders.numberBigint);
|
|
318
|
-
// ui8a of size <CompactSize>
|
|
319
|
-
export const VarBytes = P.bytes(CompactSize);
|
|
320
|
-
// SegWit v0 stack of witness buffers
|
|
321
|
-
export const RawWitness = P.array(CompactSizeLen, VarBytes);
|
|
322
|
-
// Array of size <CompactSize>
|
|
323
|
-
export const BTCArray = (t) => P.array(CompactSize, t);
|
|
324
|
-
export const RawInput = P.struct({
|
|
325
|
-
txid: P.bytes(32, true), // hash(prev_tx),
|
|
326
|
-
index: P.U32LE, // output number of previous tx
|
|
327
|
-
finalScriptSig: VarBytes, // btc merges input and output script, executes it. If ok = tx passes
|
|
328
|
-
sequence: P.U32LE, // ?
|
|
329
|
-
});
|
|
330
|
-
export const RawOutput = P.struct({ amount: P.U64LE, script: VarBytes });
|
|
331
|
-
// https://en.bitcoin.it/wiki/Protocol_documentation#tx
|
|
332
|
-
const _RawTx = P.struct({
|
|
333
|
-
version: P.I32LE,
|
|
334
|
-
segwitFlag: P.flag(new Uint8Array([0x00, 0x01])),
|
|
335
|
-
inputs: BTCArray(RawInput),
|
|
336
|
-
outputs: BTCArray(RawOutput),
|
|
337
|
-
witnesses: P.flagged('segwitFlag', P.array('inputs/length', RawWitness)),
|
|
338
|
-
// < 500000000 Block number at which this transaction is unlocked
|
|
339
|
-
// >= 500000000 UNIX timestamp at which this transaction is unlocked
|
|
340
|
-
// Handled as part of PSBTv2
|
|
341
|
-
lockTime: P.U32LE,
|
|
342
|
-
});
|
|
343
|
-
function validateRawTx(tx) {
|
|
344
|
-
if (tx.segwitFlag && tx.witnesses && !tx.witnesses.length)
|
|
345
|
-
throw new Error('Segwit flag with empty witnesses array');
|
|
346
|
-
return tx;
|
|
347
|
-
}
|
|
348
|
-
export const RawTx = P.validate(_RawTx, validateRawTx);
|
|
349
|
-
// Pre-SegWit serialization format (for PSBTv0)
|
|
350
|
-
export const RawOldTx = P.struct({
|
|
351
|
-
version: P.I32LE,
|
|
352
|
-
inputs: BTCArray(RawInput),
|
|
353
|
-
outputs: BTCArray(RawOutput),
|
|
354
|
-
lockTime: P.U32LE,
|
|
355
|
-
});
|
|
356
|
-
//# sourceMappingURL=script.js.map
|
package/esm/script.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAE1C,kBAAkB;AAClB,MAAM,CAAN,IAAY,EA6BX;AA7BD,WAAY,EAAE;IACZ,2BAAW,CAAA;IAAE,sCAAgB,CAAA;IAAE,sCAAS,CAAA;IAAE,sCAAS,CAAA;IAAE,kCAAS,CAAA;IAC9D,oCAAe,CAAA;IACf,4BAAI,CAAA;IAAE,4BAAI,CAAA;IAAE,4BAAI,CAAA;IAAE,4BAAI,CAAA;IAAE,4BAAI,CAAA;IAAE,4BAAI,CAAA;IAAE,4BAAI,CAAA;IAAE,4BAAI,CAAA;IAC9C,4BAAI,CAAA;IAAE,8BAAK,CAAA;IAAE,8BAAK,CAAA;IAAE,8BAAK,CAAA;IAAE,8BAAK,CAAA;IAAE,8BAAK,CAAA;IAAE,8BAAK,CAAA;IAAE,8BAAK,CAAA;IACrD,UAAU;IACV,0BAAG,CAAA;IAAE,0BAAG,CAAA;IAAE,wBAAE,CAAA;IAAE,+BAAK,CAAA;IAAE,+BAAK,CAAA;IAAE,qCAAQ,CAAA;IAAE,6BAAI,CAAA;IAAE,+BAAK,CAAA;IAAE,iCAAM,CAAA;IAAE,iCAAM,CAAA;IACjE,QAAQ;IACR,yCAAU,CAAA;IAAE,6CAAY,CAAA;IAAE,+BAAO,CAAA;IAAE,6BAAM,CAAA;IAAE,6BAAM,CAAA;IAAE,+BAAO,CAAA;IAAE,6BAAM,CAAA;IAAE,+BAAO,CAAA;IAC3E,+BAAK,CAAA;IAAE,+BAAK,CAAA;IAAE,6BAAI,CAAA;IAAE,2BAAG,CAAA;IAAE,2BAAG,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAAE,2BAAG,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAC/D,SAAS;IACT,2BAAG,CAAA;IAAE,iCAAM,CAAA;IAAE,6BAAI,CAAA;IAAE,+BAAK,CAAA;IAAE,6BAAI,CAAA;IAC9B,gBAAgB;IAChB,iCAAM,CAAA;IAAE,2BAAG,CAAA;IAAE,yBAAE,CAAA;IAAE,2BAAG,CAAA;IAAE,+BAAK,CAAA;IAAE,2CAAW,CAAA;IAAE,uCAAS,CAAA;IAAE,uCAAS,CAAA;IAC9D,UAAU;IACV,6BAAM,CAAA;IAAE,6BAAM,CAAA;IAAE,6BAAM,CAAA;IAAE,6BAAM,CAAA;IAC9B,iCAAM,CAAA;IAAE,2BAAG,CAAA;IAAE,2BAAG,CAAA;IAAE,uCAAW,CAAA;IAC7B,2BAAG,CAAA;IAAE,2BAAG,CAAA;IAAE,2BAAG,CAAA;IAAE,2BAAG,CAAA;IAAE,2BAAG,CAAA;IAAE,iCAAM,CAAA;IAAE,iCAAM,CAAA;IAAE,mCAAO,CAAA;IAAE,iCAAM,CAAA;IACxD,qCAAQ,CAAA;IAAE,iDAAc,CAAA;IAAE,2CAAW,CAAA;IAAE,qCAAQ,CAAA;IAAE,2CAAW,CAAA;IAC5D,mDAAe,CAAA;IAAE,yDAAkB,CAAA;IAAE,2BAAG,CAAA;IAAE,2BAAG,CAAA;IAAE,iCAAM,CAAA;IACrD,SAAS;IACT,uCAAS,CAAA;IAAE,6BAAI,CAAA;IAAE,iCAAM,CAAA;IAAE,mCAAO,CAAA;IAAE,mCAAO,CAAA;IAAE,+CAAa,CAAA;IACxD,qCAAQ,CAAA;IAAE,iDAAc,CAAA;IAAE,+CAAa,CAAA;IAAE,2DAAmB,CAAA;IAC5D,YAAY;IACZ,6BAAI,CAAA;IAAE,2DAAmB,CAAA;IAAE,2DAAmB,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAAE,6BAAI,CAAA;IAAE,+BAAK,CAAA;IACzF,UAAU;IACV,2CAAW,CAAA;IACX,UAAU;IACV,mCAAc,CAAA;AAChB,CAAC,EA7BW,EAAE,KAAF,EAAE,QA6Bb;AAKD,mFAAmF;AACnF,+DAA+D;AAC/D,MAAM,UAAU,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,KAAK;IAC5D,OAAO,CAAC,CAAC,IAAI,CAAC;QACZ,YAAY,EAAE,CAAC,CAAW,EAAE,KAAa,EAAE,EAAE;YAC3C,IAAI,KAAK,KAAK,EAAE;gBAAE,OAAO;YACzB,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;YACtB,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;YACjF,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI;gBAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxD,IAAI,GAAG;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;YAC5C,CAAC,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAChC,CAAC;QACD,YAAY,EAAE,CAAC,CAAW,EAAU,EAAE;YACpC,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC;YACxB,IAAI,GAAG,GAAG,UAAU;gBAClB,MAAM,IAAI,KAAK,CAAC,sBAAsB,GAAG,uBAAuB,UAAU,EAAE,CAAC,CAAC;YAChF,IAAI,GAAG,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACzB,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChC,0DAA0D;gBAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzC,YAAY;oBACZ,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;wBAClD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAChB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;gBACjB,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC1C,GAAG,GAAG,CAAC,GAAG,CAAC;YACb,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAY,EAAE,UAAU,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI;IACvE,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,SAAS,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,GAAG,GAAG,MAAM,CAAC,gBAAgB;gBAAE,OAAO;YAC1C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;QACT,CAAC;IACH,CAAC;IACD,OAAO;AACT,CAAC;AAED,yCAAyC;AACzC,qNAAqN;AACrN,KAAK;AACL,OAAO;AACP,uEAAuE;AACvE,uEAAuE;AACvE,uEAAuE;AACvE,SAAS;AACT,kBAAkB;AAClB,MAAM,CAAC,MAAM,MAAM,GAA4B,CAAC,CAAC,IAAI,CAAC;IACpD,YAAY,EAAE,CAAC,CAAW,EAAE,KAAiB,EAAE,EAAE;QAC/C,KAAK,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;YACpB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBAChE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBACd,SAAS;YACX,CAAC;iBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACjC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACb,SAAS;gBACX,CAAC;qBAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;oBAC7B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;oBACxB,SAAS;gBACX,CAAC;YACH,CAAC;YACD,qBAAqB;YACrB,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,CAAC,GAAG,SAAS,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;YACvE,QAAQ;YACR,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;YACrB,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS;gBAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAC/B,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBACzB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC;YACD,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,YAAY,EAAE,CAAC,CAAW,EAAc,EAAE;QACxC,MAAM,GAAG,GAAe,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACrB,kBAAkB;YAClB,IAAI,EAAE,CAAC,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBACzC,IAAI,GAAG,CAAC;gBACR,IAAI,GAAG,GAAG,EAAE,CAAC,SAAS;oBAAE,GAAG,GAAG,GAAG,CAAC;qBAC7B,IAAI,GAAG,KAAK,EAAE,CAAC,SAAS;oBAAE,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;qBACrD,IAAI,GAAG,KAAK,EAAE,CAAC,SAAS;oBAAE,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;qBACxD,IAAI,GAAG,KAAK,EAAE,CAAC,SAAS;oBAAE,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;oBACxD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBAC/C,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACd,CAAC;iBAAM,IAAI,EAAE,CAAC,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;gBAC7C,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAoB,CAAC;gBACtC,IAAI,EAAE,KAAK,SAAS;oBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC5E,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,CAAC;AAEH,gDAAgD;AAChD,4EAA4E;AAC5E,MAAM,QAAQ,GAAqD;IACjE,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC;IAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC;IACpC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,qBAAqB,CAAC;CACpD,CAAC;AACF,MAAM,CAAC,MAAM,WAAW,GAAwB,CAAC,CAAC,IAAI,CAAC;IACrD,YAAY,EAAE,CAAC,CAAW,EAAE,KAAa,EAAE,EAAE;QAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,EAAE,IAAI,KAAK,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjE,IAAI,KAAK,GAAG,KAAK,IAAI,KAAK,GAAG,IAAI;gBAAE,SAAS;YAC5C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;gBAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QACD,MAAM,CAAC,CAAC,GAAG,CAAC,mBAAmB,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IACD,YAAY,EAAE,CAAC,CAAW,EAAU,EAAE;QACpC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,EAAE,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE;YAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,GAAG,GAAG,KAAK;YAAE,MAAM,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAC,CAAC;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,cAAc,GAAwB,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AAE/F,6BAA6B;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAEtE,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAA8B,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AAEvF,8BAA8B;AAC9B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,CAAiB,EAAoB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAE5F,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,iBAAiB;IAC1C,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,+BAA+B;IAC/C,cAAc,EAAE,QAAQ,EAAE,qEAAqE;IAC/F,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI;CACxB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AAEzE,uDAAuD;AACvD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,KAAK;IAChB,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5B,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACxE,iEAAiE;IACjE,oEAAoE;IACpE,4BAA4B;IAC5B,QAAQ,EAAE,CAAC,CAAC,KAAK;CAClB,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,EAAgC;IACrD,IAAI,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM;QACvD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC5D,OAAO,EAAE,CAAC;AACZ,CAAC;AACD,MAAM,CAAC,MAAM,KAAK,GAAkB,CAAC,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACtE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,KAAK;IAChB,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC;IAC5B,QAAQ,EAAE,CAAC,CAAC,KAAK;CAClB,CAAC,CAAC"}
|
package/esm/transaction.d.ts
DELETED
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
import * as P from 'micro-packed';
|
|
2
|
-
import { type CustomScript } from './payment.ts';
|
|
3
|
-
import * as psbt from './psbt.ts';
|
|
4
|
-
import { RawOutput } from './script.ts';
|
|
5
|
-
import * as u from './utils.ts';
|
|
6
|
-
import { type Bytes } from './utils.ts';
|
|
7
|
-
export declare const toVsize: (weight: number) => number;
|
|
8
|
-
interface HDKey {
|
|
9
|
-
publicKey: Bytes;
|
|
10
|
-
privateKey: Bytes;
|
|
11
|
-
fingerprint: number;
|
|
12
|
-
derive(path: string): HDKey;
|
|
13
|
-
deriveChild(index: number): HDKey;
|
|
14
|
-
sign(hash: Bytes): Bytes;
|
|
15
|
-
}
|
|
16
|
-
export type Signer = Bytes | HDKey;
|
|
17
|
-
export declare const PRECISION = 8;
|
|
18
|
-
export declare const DEFAULT_VERSION = 2;
|
|
19
|
-
export declare const DEFAULT_LOCKTIME = 0;
|
|
20
|
-
export declare const DEFAULT_SEQUENCE = 4294967295;
|
|
21
|
-
export declare const Decimal: P.Coder<bigint, string>;
|
|
22
|
-
export declare const def: <T>(value: T | undefined, def: T) => T;
|
|
23
|
-
export declare function cloneDeep<T>(obj: T): T;
|
|
24
|
-
export interface TxOpts {
|
|
25
|
-
version?: number;
|
|
26
|
-
lockTime?: number;
|
|
27
|
-
PSBTVersion?: number;
|
|
28
|
-
allowUnknownVersion?: boolean;
|
|
29
|
-
/** @deprecated Use `allowUnknownOutputs` */
|
|
30
|
-
allowUnknowOutput?: boolean;
|
|
31
|
-
allowUnknownOutputs?: boolean;
|
|
32
|
-
/** @deprecated Use `allowUnknownInputs` */
|
|
33
|
-
allowUnknowInput?: boolean;
|
|
34
|
-
allowUnknownInputs?: boolean;
|
|
35
|
-
disableScriptCheck?: boolean;
|
|
36
|
-
bip174jsCompat?: boolean;
|
|
37
|
-
allowLegacyWitnessUtxo?: boolean;
|
|
38
|
-
lowR?: boolean;
|
|
39
|
-
customScripts?: CustomScript[];
|
|
40
|
-
allowUnknown?: boolean;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Internal, exported only for backwards-compat. Use `SigHash` instead.
|
|
44
|
-
* @deprecated
|
|
45
|
-
*/
|
|
46
|
-
export declare enum SignatureHash {
|
|
47
|
-
DEFAULT = 0,
|
|
48
|
-
ALL = 1,
|
|
49
|
-
NONE = 2,
|
|
50
|
-
SINGLE = 3,
|
|
51
|
-
ANYONECANPAY = 128
|
|
52
|
-
}
|
|
53
|
-
export declare enum SigHash {
|
|
54
|
-
DEFAULT = 0,
|
|
55
|
-
ALL = 1,
|
|
56
|
-
NONE = 2,
|
|
57
|
-
SINGLE = 3,
|
|
58
|
-
DEFAULT_ANYONECANPAY = 128,
|
|
59
|
-
ALL_ANYONECANPAY = 129,
|
|
60
|
-
NONE_ANYONECANPAY = 130,
|
|
61
|
-
SINGLE_ANYONECANPAY = 131
|
|
62
|
-
}
|
|
63
|
-
export type TransactionInputRequired = {
|
|
64
|
-
txid: Bytes;
|
|
65
|
-
index: number;
|
|
66
|
-
sequence: number;
|
|
67
|
-
finalScriptSig: Bytes;
|
|
68
|
-
};
|
|
69
|
-
export declare function inputBeforeSign(i: psbt.TransactionInput): TransactionInputRequired;
|
|
70
|
-
declare function validateOpts(opts: TxOpts): Readonly<TxOpts>;
|
|
71
|
-
export type PSBTInputs = psbt.PSBTKeyMapKeys<typeof psbt.PSBTInput>;
|
|
72
|
-
export declare function getPrevOut(input: psbt.TransactionInput): P.UnwrapCoder<typeof RawOutput>;
|
|
73
|
-
export declare function normalizeInput(i: psbt.TransactionInputUpdate, cur?: psbt.TransactionInput, allowedFields?: (keyof psbt.TransactionInput)[], disableScriptCheck?: boolean, allowUnknown?: boolean): psbt.TransactionInput;
|
|
74
|
-
export declare function getInputType(input: psbt.TransactionInput, allowLegacyWitnessUtxo?: boolean): {
|
|
75
|
-
type: string;
|
|
76
|
-
txType: string;
|
|
77
|
-
last: {
|
|
78
|
-
type: "p2a";
|
|
79
|
-
script: Bytes;
|
|
80
|
-
} | {
|
|
81
|
-
type: "pk";
|
|
82
|
-
pubkey: Bytes;
|
|
83
|
-
} | {
|
|
84
|
-
type: "pkh";
|
|
85
|
-
hash: Bytes;
|
|
86
|
-
} | {
|
|
87
|
-
type: "wpkh";
|
|
88
|
-
hash: Bytes;
|
|
89
|
-
} | {
|
|
90
|
-
type: "ms";
|
|
91
|
-
pubkeys: Bytes[];
|
|
92
|
-
m: number;
|
|
93
|
-
} | {
|
|
94
|
-
type: "tr";
|
|
95
|
-
pubkey: Bytes;
|
|
96
|
-
} | {
|
|
97
|
-
type: "tr_ns";
|
|
98
|
-
pubkeys: Bytes[];
|
|
99
|
-
} | {
|
|
100
|
-
type: "tr_ms";
|
|
101
|
-
pubkeys: Bytes[];
|
|
102
|
-
m: number;
|
|
103
|
-
} | {
|
|
104
|
-
type: "unknown";
|
|
105
|
-
script: Bytes;
|
|
106
|
-
};
|
|
107
|
-
lastScript: P.Bytes;
|
|
108
|
-
defaultSighash: SignatureHash.ALL;
|
|
109
|
-
sighash: number;
|
|
110
|
-
} | {
|
|
111
|
-
txType: string;
|
|
112
|
-
type: string;
|
|
113
|
-
last: {
|
|
114
|
-
type: "tr";
|
|
115
|
-
pubkey: Bytes;
|
|
116
|
-
};
|
|
117
|
-
lastScript: Uint8Array<ArrayBufferLike>;
|
|
118
|
-
defaultSighash: SignatureHash.DEFAULT;
|
|
119
|
-
sighash: number;
|
|
120
|
-
};
|
|
121
|
-
export declare class Transaction {
|
|
122
|
-
private global;
|
|
123
|
-
private inputs;
|
|
124
|
-
private outputs;
|
|
125
|
-
readonly opts: ReturnType<typeof validateOpts>;
|
|
126
|
-
constructor(opts?: TxOpts);
|
|
127
|
-
static fromRaw(raw: Bytes, opts?: TxOpts): Transaction;
|
|
128
|
-
static fromPSBT(psbt_: Bytes, opts?: TxOpts): Transaction;
|
|
129
|
-
toPSBT(PSBTVersion?: number | undefined): Uint8Array;
|
|
130
|
-
get lockTime(): number;
|
|
131
|
-
get version(): number;
|
|
132
|
-
private inputStatus;
|
|
133
|
-
private inputSighash;
|
|
134
|
-
private signStatus;
|
|
135
|
-
get isFinal(): boolean;
|
|
136
|
-
get hasWitnesses(): boolean;
|
|
137
|
-
get weight(): number;
|
|
138
|
-
get vsize(): number;
|
|
139
|
-
toBytes(withScriptSig?: boolean, withWitness?: boolean): Uint8Array;
|
|
140
|
-
get unsignedTx(): Bytes;
|
|
141
|
-
get hex(): string;
|
|
142
|
-
get hash(): string;
|
|
143
|
-
get id(): string;
|
|
144
|
-
private checkInputIdx;
|
|
145
|
-
getInput(idx: number): psbt.TransactionInput;
|
|
146
|
-
get inputsLength(): number;
|
|
147
|
-
addInput(input: psbt.TransactionInputUpdate, _ignoreSignStatus?: boolean): number;
|
|
148
|
-
updateInput(idx: number, input: psbt.TransactionInputUpdate, _ignoreSignStatus?: boolean): void;
|
|
149
|
-
private checkOutputIdx;
|
|
150
|
-
getOutput(idx: number): psbt.TransactionOutput;
|
|
151
|
-
getOutputAddress(idx: number, network?: u.BTC_NETWORK): string | undefined;
|
|
152
|
-
get outputsLength(): number;
|
|
153
|
-
private normalizeOutput;
|
|
154
|
-
addOutput(o: psbt.TransactionOutputUpdate, _ignoreSignStatus?: boolean): number;
|
|
155
|
-
updateOutput(idx: number, output: psbt.TransactionOutputUpdate, _ignoreSignStatus?: boolean): void;
|
|
156
|
-
addOutputAddress(address: string, amount: bigint, network?: u.BTC_NETWORK): number;
|
|
157
|
-
get fee(): bigint;
|
|
158
|
-
private preimageLegacy;
|
|
159
|
-
preimageWitnessV0(idx: number, prevOutScript: Bytes, hashType: number, amount: bigint): Uint8Array;
|
|
160
|
-
preimageWitnessV1(idx: number, prevOutScript: Bytes[], hashType: number, amount: bigint[], codeSeparator?: number, leafScript?: Bytes, leafVer?: number, annex?: Bytes): Uint8Array;
|
|
161
|
-
signIdx(privateKey: Signer, idx: number, allowedSighash?: SigHash[], _auxRand?: Bytes): boolean;
|
|
162
|
-
sign(privateKey: Signer, allowedSighash?: number[], _auxRand?: Bytes): number;
|
|
163
|
-
finalizeIdx(idx: number): void;
|
|
164
|
-
finalize(): void;
|
|
165
|
-
extract(): Uint8Array;
|
|
166
|
-
combine(other: Transaction): this;
|
|
167
|
-
clone(): Transaction;
|
|
168
|
-
}
|
|
169
|
-
export declare function PSBTCombine(psbts: Bytes[]): Bytes;
|
|
170
|
-
export declare function bip32Path(path: string): number[];
|
|
171
|
-
export {};
|
|
172
|
-
//# sourceMappingURL=transaction.d.ts.map
|
package/esm/transaction.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"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"}
|