@scure/btc-signer 1.2.2 → 1.3.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.
Files changed (60) hide show
  1. package/README.md +19 -3
  2. package/lib/_type_test.d.ts +2 -0
  3. package/lib/_type_test.d.ts.map +1 -0
  4. package/lib/_type_test.js +59 -0
  5. package/lib/_type_test.js.map +1 -0
  6. package/lib/esm/_type_test.js +57 -0
  7. package/lib/esm/_type_test.js.map +1 -0
  8. package/lib/esm/index.js +13 -3007
  9. package/lib/esm/index.js.map +1 -1
  10. package/lib/esm/payment.js +681 -0
  11. package/lib/esm/payment.js.map +1 -0
  12. package/lib/esm/psbt.js +441 -0
  13. package/lib/esm/psbt.js.map +1 -0
  14. package/lib/esm/script.js +347 -0
  15. package/lib/esm/script.js.map +1 -0
  16. package/lib/esm/transaction.js +1013 -0
  17. package/lib/esm/transaction.js.map +1 -0
  18. package/lib/esm/utils.js +115 -0
  19. package/lib/esm/utils.js.map +1 -0
  20. package/lib/esm/utxo.js +491 -0
  21. package/lib/esm/utxo.js.map +1 -0
  22. package/lib/index.d.ts +18 -1439
  23. package/lib/index.d.ts.map +1 -1
  24. package/lib/index.js +53 -3042
  25. package/lib/index.js.map +1 -0
  26. package/lib/payment.d.ts +167 -0
  27. package/lib/payment.d.ts.map +1 -0
  28. package/lib/payment.js +704 -0
  29. package/lib/payment.js.map +1 -0
  30. package/lib/psbt.d.ts +834 -0
  31. package/lib/psbt.d.ts.map +1 -0
  32. package/lib/psbt.js +446 -0
  33. package/lib/psbt.js.map +1 -0
  34. package/lib/script.d.ts +154 -0
  35. package/lib/script.d.ts.map +1 -0
  36. package/lib/script.js +353 -0
  37. package/lib/script.js.map +1 -0
  38. package/lib/transaction.d.ts +223 -0
  39. package/lib/transaction.d.ts.map +1 -0
  40. package/lib/transaction.js +1022 -0
  41. package/lib/transaction.js.map +1 -0
  42. package/lib/utils.d.ts +30 -0
  43. package/lib/utils.d.ts.map +1 -0
  44. package/lib/utils.js +128 -0
  45. package/lib/utils.js.map +1 -0
  46. package/lib/utxo.d.ts +251 -0
  47. package/lib/utxo.d.ts.map +1 -0
  48. package/lib/utxo.js +501 -0
  49. package/lib/utxo.js.map +1 -0
  50. package/package.json +40 -10
  51. package/src/_type_test.ts +69 -0
  52. package/src/index.ts +28 -0
  53. package/src/package.json +3 -0
  54. package/src/payment.ts +749 -0
  55. package/src/psbt.ts +512 -0
  56. package/src/script.ts +236 -0
  57. package/src/transaction.ts +1065 -0
  58. package/src/utils.ts +118 -0
  59. package/src/utxo.ts +517 -0
  60. package/index.ts +0 -3067
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../src/psbt.ts"],"names":[],"mappings":"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"}
package/lib/psbt.js ADDED
@@ -0,0 +1,446 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RawPSBTV2 = exports.RawPSBTV0 = exports.mergeKeyMap = exports.cleanPSBTFields = exports._DebugPSBT = exports._RawPSBTV2 = exports._RawPSBTV0 = exports.PSBTOutputCoder = exports.PSBTInputCoder = exports.PSBTOutputUnsignedKeys = exports.PSBTOutput = exports.PSBTInputUnsignedKeys = exports.PSBTInputFinalKeys = exports.PSBTInput = exports.PSBTGlobal = exports.TaprootControlBlock = void 0;
4
+ const base_1 = require("@scure/base");
5
+ const P = require("micro-packed");
6
+ const script_js_1 = require("./script.js");
7
+ const transaction_js_1 = require("./transaction.js"); // circular
8
+ const utils_js_1 = require("./utils.js");
9
+ // PSBT BIP174, BIP370, BIP371
10
+ // Can be 33 or 64 bytes
11
+ const PubKeyECDSA = P.validate(P.bytes(null), (pub) => (0, utils_js_1.validatePubkey)(pub, utils_js_1.PubT.ecdsa));
12
+ const PubKeySchnorr = P.validate(P.bytes(32), (pub) => (0, utils_js_1.validatePubkey)(pub, utils_js_1.PubT.schnorr));
13
+ const SignatureSchnorr = P.validate(P.bytes(null), (sig) => {
14
+ if (sig.length !== 64 && sig.length !== 65)
15
+ throw new Error('Schnorr signature should be 64 or 65 bytes long');
16
+ return sig;
17
+ });
18
+ const BIP32Der = P.struct({
19
+ fingerprint: P.U32BE,
20
+ path: P.array(null, P.U32LE),
21
+ });
22
+ const TaprootBIP32Der = P.struct({
23
+ hashes: P.array(script_js_1.CompactSizeLen, P.bytes(32)),
24
+ der: BIP32Der,
25
+ });
26
+ // The 78 byte serialized extended public key as defined by BIP 32.
27
+ const GlobalXPUB = P.bytes(78);
28
+ const tapScriptSigKey = P.struct({ pubKey: PubKeySchnorr, leafHash: P.bytes(32) });
29
+ // Complex structure for PSBT fields
30
+ // <control byte with leaf version and parity bit> <internal key p> <C> <E> <AB>
31
+ const _TaprootControlBlock = P.struct({
32
+ version: P.U8, // With parity :(
33
+ internalKey: P.bytes(32),
34
+ merklePath: P.array(null, P.bytes(32)),
35
+ });
36
+ exports.TaprootControlBlock = P.validate(_TaprootControlBlock, (cb) => {
37
+ if (cb.merklePath.length > 128)
38
+ throw new Error('TaprootControlBlock: merklePath should be of length 0..128 (inclusive)');
39
+ return cb;
40
+ });
41
+ // {<8-bit uint depth> <8-bit uint leaf version> <compact size uint scriptlen> <bytes script>}*
42
+ const tapTree = P.array(null, P.struct({
43
+ depth: P.U8,
44
+ version: P.U8,
45
+ script: script_js_1.VarBytes,
46
+ }));
47
+ const BytesInf = P.bytes(null); // Bytes will conflict with Bytes type
48
+ const Bytes20 = P.bytes(20);
49
+ const Bytes32 = P.bytes(32);
50
+ // versionsRequiringExclusing = !versionsAllowsInclusion (as set)
51
+ // {name: [tag, keyCoder, valueCoder, versionsRequiringInclusion, versionsRequiringExclusing, versionsAllowsInclusion, silentIgnore]}
52
+ // SilentIgnore: we use some v2 fields for v1 representation too, so we just clean them before serialize
53
+ // Tables from BIP-0174 (https://github.com/bitcoin/bips/blob/master/bip-0174.mediawiki)
54
+ // prettier-ignore
55
+ exports.PSBTGlobal = {
56
+ unsignedTx: [0x00, false, script_js_1.RawTx, [0], [0], false],
57
+ xpub: [0x01, GlobalXPUB, BIP32Der, [], [0, 2], false],
58
+ txVersion: [0x02, false, P.U32LE, [2], [2], false],
59
+ fallbackLocktime: [0x03, false, P.U32LE, [], [2], false],
60
+ inputCount: [0x04, false, script_js_1.CompactSizeLen, [2], [2], false],
61
+ outputCount: [0x05, false, script_js_1.CompactSizeLen, [2], [2], false],
62
+ txModifiable: [0x06, false, P.U8, [], [2], false], // TODO: bitfield
63
+ version: [0xfb, false, P.U32LE, [], [0, 2], false],
64
+ proprietary: [0xfc, BytesInf, BytesInf, [], [0, 2], false],
65
+ };
66
+ // prettier-ignore
67
+ exports.PSBTInput = {
68
+ nonWitnessUtxo: [0x00, false, script_js_1.RawTx, [], [0, 2], false],
69
+ witnessUtxo: [0x01, false, script_js_1.RawOutput, [], [0, 2], false],
70
+ partialSig: [0x02, PubKeyECDSA, BytesInf, [], [0, 2], false],
71
+ sighashType: [0x03, false, P.U32LE, [], [0, 2], false],
72
+ redeemScript: [0x04, false, BytesInf, [], [0, 2], false],
73
+ witnessScript: [0x05, false, BytesInf, [], [0, 2], false],
74
+ bip32Derivation: [0x06, PubKeyECDSA, BIP32Der, [], [0, 2], false],
75
+ finalScriptSig: [0x07, false, BytesInf, [], [0, 2], false],
76
+ finalScriptWitness: [0x08, false, script_js_1.RawWitness, [], [0, 2], false],
77
+ porCommitment: [0x09, false, BytesInf, [], [0, 2], false],
78
+ ripemd160: [0x0a, Bytes20, BytesInf, [], [0, 2], false],
79
+ sha256: [0x0b, Bytes32, BytesInf, [], [0, 2], false],
80
+ hash160: [0x0c, Bytes20, BytesInf, [], [0, 2], false],
81
+ hash256: [0x0d, Bytes32, BytesInf, [], [0, 2], false],
82
+ txid: [0x0e, false, Bytes32, [2], [2], true],
83
+ index: [0x0f, false, P.U32LE, [2], [2], true],
84
+ sequence: [0x10, false, P.U32LE, [], [2], true],
85
+ requiredTimeLocktime: [0x11, false, P.U32LE, [], [2], false],
86
+ requiredHeightLocktime: [0x12, false, P.U32LE, [], [2], false],
87
+ tapKeySig: [0x13, false, SignatureSchnorr, [], [0, 2], false],
88
+ tapScriptSig: [0x14, tapScriptSigKey, SignatureSchnorr, [], [0, 2], false],
89
+ tapLeafScript: [0x15, exports.TaprootControlBlock, BytesInf, [], [0, 2], false],
90
+ tapBip32Derivation: [0x16, Bytes32, TaprootBIP32Der, [], [0, 2], false],
91
+ tapInternalKey: [0x17, false, PubKeySchnorr, [], [0, 2], false],
92
+ tapMerkleRoot: [0x18, false, Bytes32, [], [0, 2], false],
93
+ proprietary: [0xfc, BytesInf, BytesInf, [], [0, 2], false],
94
+ };
95
+ // All other keys removed when finalizing
96
+ exports.PSBTInputFinalKeys = [
97
+ 'txid',
98
+ 'sequence',
99
+ 'index',
100
+ 'witnessUtxo',
101
+ 'nonWitnessUtxo',
102
+ 'finalScriptSig',
103
+ 'finalScriptWitness',
104
+ 'unknown',
105
+ ];
106
+ // Can be modified even on signed input
107
+ exports.PSBTInputUnsignedKeys = [
108
+ 'partialSig',
109
+ 'finalScriptSig',
110
+ 'finalScriptWitness',
111
+ 'tapKeySig',
112
+ 'tapScriptSig',
113
+ ];
114
+ // prettier-ignore
115
+ exports.PSBTOutput = {
116
+ redeemScript: [0x00, false, BytesInf, [], [0, 2], false],
117
+ witnessScript: [0x01, false, BytesInf, [], [0, 2], false],
118
+ bip32Derivation: [0x02, PubKeyECDSA, BIP32Der, [], [0, 2], false],
119
+ amount: [0x03, false, P.I64LE, [2], [2], true],
120
+ script: [0x04, false, BytesInf, [2], [2], true],
121
+ tapInternalKey: [0x05, false, PubKeySchnorr, [], [0, 2], false],
122
+ tapTree: [0x06, false, tapTree, [], [0, 2], false],
123
+ tapBip32Derivation: [0x07, PubKeySchnorr, TaprootBIP32Der, [], [0, 2], false],
124
+ proprietary: [0xfc, BytesInf, BytesInf, [], [0, 2], false],
125
+ };
126
+ // Can be modified even on signed input
127
+ exports.PSBTOutputUnsignedKeys = [];
128
+ const PSBTKeyPair = P.array(P.NULL, P.struct({
129
+ // <key> := <keylen> <keytype> <keydata> WHERE keylen = len(keytype)+len(keydata)
130
+ key: P.prefix(script_js_1.CompactSizeLen, P.struct({ type: script_js_1.CompactSizeLen, key: P.bytes(null) })),
131
+ // <value> := <valuelen> <valuedata>
132
+ value: P.bytes(script_js_1.CompactSizeLen),
133
+ }));
134
+ function PSBTKeyInfo(info) {
135
+ const [type, kc, vc, reqInc, allowInc, silentIgnore] = info;
136
+ return { type, kc, vc, reqInc, allowInc, silentIgnore };
137
+ }
138
+ const PSBTUnknownKey = P.struct({ type: script_js_1.CompactSizeLen, key: P.bytes(null) });
139
+ // Key cannot be 'unknown', value coder cannot be array for elements with empty key
140
+ function PSBTKeyMap(psbtEnum) {
141
+ // -> Record<type, [keyName, ...coders]>
142
+ const byType = {};
143
+ for (const k in psbtEnum) {
144
+ const [num, kc, vc] = psbtEnum[k];
145
+ byType[num] = [k, kc, vc];
146
+ }
147
+ return P.wrap({
148
+ encodeStream: (w, value) => {
149
+ let out = [];
150
+ // Because we use order of psbtEnum, keymap is sorted here
151
+ for (const name in psbtEnum) {
152
+ const val = value[name];
153
+ if (val === undefined)
154
+ continue;
155
+ const [type, kc, vc] = psbtEnum[name];
156
+ if (!kc) {
157
+ out.push({ key: { type, key: P.EMPTY }, value: vc.encode(val) });
158
+ }
159
+ else {
160
+ // Low level interface, returns keys as is (with duplicates). Useful for debug
161
+ const kv = val.map(([k, v]) => [
162
+ kc.encode(k),
163
+ vc.encode(v),
164
+ ]);
165
+ // sort by keys
166
+ kv.sort((a, b) => (0, utils_js_1.compareBytes)(a[0], b[0]));
167
+ for (const [key, value] of kv)
168
+ out.push({ key: { key, type }, value });
169
+ }
170
+ }
171
+ if (value.unknown) {
172
+ value.unknown.sort((a, b) => (0, utils_js_1.compareBytes)(a[0].key, b[0].key));
173
+ for (const [k, v] of value.unknown)
174
+ out.push({ key: k, value: v });
175
+ }
176
+ PSBTKeyPair.encodeStream(w, out);
177
+ },
178
+ decodeStream: (r) => {
179
+ const raw = PSBTKeyPair.decodeStream(r);
180
+ const out = {};
181
+ const noKey = {};
182
+ for (const elm of raw) {
183
+ let name = 'unknown';
184
+ let key = elm.key.key;
185
+ let value = elm.value;
186
+ if (byType[elm.key.type]) {
187
+ const [_name, kc, vc] = byType[elm.key.type];
188
+ name = _name;
189
+ if (!kc && key.length) {
190
+ throw new Error(`PSBT: Non-empty key for ${name} (key=${base_1.hex.encode(key)} value=${base_1.hex.encode(value)}`);
191
+ }
192
+ key = kc ? kc.decode(key) : undefined;
193
+ value = vc.decode(value);
194
+ if (!kc) {
195
+ if (out[name])
196
+ throw new Error(`PSBT: Same keys: ${name} (key=${key} value=${value})`);
197
+ out[name] = value;
198
+ noKey[name] = true;
199
+ continue;
200
+ }
201
+ }
202
+ else {
203
+ // For unknown: add key type inside key
204
+ key = { type: elm.key.type, key: elm.key.key };
205
+ }
206
+ // Only keyed elements at this point
207
+ if (noKey[name])
208
+ throw new Error(`PSBT: Key type with empty key and no key=${name} val=${value}`);
209
+ if (!out[name])
210
+ out[name] = [];
211
+ out[name].push([key, value]);
212
+ }
213
+ return out;
214
+ },
215
+ });
216
+ }
217
+ exports.PSBTInputCoder = P.validate(PSBTKeyMap(exports.PSBTInput), (i) => {
218
+ if (i.finalScriptWitness && !i.finalScriptWitness.length)
219
+ throw new Error('validateInput: wmpty finalScriptWitness');
220
+ //if (i.finalScriptSig && !i.finalScriptSig.length) throw new Error('validateInput: empty finalScriptSig');
221
+ if (i.partialSig && !i.partialSig.length)
222
+ throw new Error('Empty partialSig');
223
+ if (i.partialSig)
224
+ for (const [k] of i.partialSig)
225
+ (0, utils_js_1.validatePubkey)(k, utils_js_1.PubT.ecdsa);
226
+ if (i.bip32Derivation)
227
+ for (const [k] of i.bip32Derivation)
228
+ (0, utils_js_1.validatePubkey)(k, utils_js_1.PubT.ecdsa);
229
+ // Locktime = unsigned little endian integer greater than or equal to 500000000 representing
230
+ if (i.requiredTimeLocktime !== undefined && i.requiredTimeLocktime < 500000000)
231
+ throw new Error(`validateInput: wrong timeLocktime=${i.requiredTimeLocktime}`);
232
+ // unsigned little endian integer greater than 0 and less than 500000000
233
+ if (i.requiredHeightLocktime !== undefined &&
234
+ (i.requiredHeightLocktime <= 0 || i.requiredHeightLocktime >= 500000000))
235
+ throw new Error(`validateInput: wrong heighLocktime=${i.requiredHeightLocktime}`);
236
+ if (i.nonWitnessUtxo && i.index !== undefined) {
237
+ const last = i.nonWitnessUtxo.outputs.length - 1;
238
+ if (i.index > last)
239
+ throw new Error(`validateInput: index(${i.index}) not in nonWitnessUtxo`);
240
+ const prevOut = i.nonWitnessUtxo.outputs[i.index];
241
+ if (i.witnessUtxo &&
242
+ (!P.equalBytes(i.witnessUtxo.script, prevOut.script) ||
243
+ i.witnessUtxo.amount !== prevOut.amount))
244
+ throw new Error('validateInput: witnessUtxo different from nonWitnessUtxo');
245
+ }
246
+ if (i.tapLeafScript) {
247
+ // tap leaf version appears here twice: in control block and at the end of script
248
+ for (const [k, v] of i.tapLeafScript) {
249
+ if ((k.version & 254) !== v[v.length - 1])
250
+ throw new Error('validateInput: tapLeafScript version mimatch');
251
+ if (v[v.length - 1] & 1)
252
+ throw new Error('validateInput: tapLeafScript version has parity bit!');
253
+ }
254
+ }
255
+ // Validate txid for nonWitnessUtxo is correct
256
+ if (i.nonWitnessUtxo && i.index !== undefined && i.txid) {
257
+ const outputs = i.nonWitnessUtxo.outputs;
258
+ if (outputs.length - 1 < i.index)
259
+ throw new Error('nonWitnessUtxo: incorect output index');
260
+ // At this point, we are using previous tx output to create new input.
261
+ // Script safety checks are unnecessary:
262
+ // - User has no control over previous tx. If somebody send money in same tx
263
+ // as unspendable output, we still want user able to spend money
264
+ // - We still want some checks to notify user about possible errors early
265
+ // in case user wants to use wrong input by mistake
266
+ // - Worst case: tx will be rejected by nodes. Still better than disallowing user
267
+ // to spend real input, no matter how broken it looks
268
+ const tx = transaction_js_1.Transaction.fromRaw(script_js_1.RawTx.encode(i.nonWitnessUtxo), {
269
+ allowUnknownOutputs: true,
270
+ disableScriptCheck: true,
271
+ allowUnknownInputs: true,
272
+ });
273
+ const txid = base_1.hex.encode(i.txid);
274
+ // PSBTv2 vectors have non-final tx in inputs
275
+ if (tx.isFinal && tx.id !== txid)
276
+ throw new Error(`nonWitnessUtxo: wrong txid, exp=${txid} got=${tx.id}`);
277
+ }
278
+ return i;
279
+ });
280
+ exports.PSBTOutputCoder = P.validate(PSBTKeyMap(exports.PSBTOutput), (o) => {
281
+ if (o.bip32Derivation)
282
+ for (const [k] of o.bip32Derivation)
283
+ (0, utils_js_1.validatePubkey)(k, utils_js_1.PubT.ecdsa);
284
+ return o;
285
+ });
286
+ const PSBTGlobalCoder = P.validate(PSBTKeyMap(exports.PSBTGlobal), (g) => {
287
+ const version = g.version || 0;
288
+ if (version === 0) {
289
+ if (!g.unsignedTx)
290
+ throw new Error('PSBTv0: missing unsignedTx');
291
+ if (g.unsignedTx.segwitFlag || g.unsignedTx.witnesses)
292
+ throw new Error('PSBTv0: witness in unsingedTx');
293
+ for (const inp of g.unsignedTx.inputs)
294
+ if (inp.finalScriptSig && inp.finalScriptSig.length)
295
+ throw new Error('PSBTv0: input scriptSig found in unsignedTx');
296
+ }
297
+ return g;
298
+ });
299
+ exports._RawPSBTV0 = P.struct({
300
+ magic: P.magic(P.string(new Uint8Array([0xff])), 'psbt'),
301
+ global: PSBTGlobalCoder,
302
+ inputs: P.array('global/unsignedTx/inputs/length', exports.PSBTInputCoder),
303
+ outputs: P.array(null, exports.PSBTOutputCoder),
304
+ });
305
+ exports._RawPSBTV2 = P.struct({
306
+ magic: P.magic(P.string(new Uint8Array([0xff])), 'psbt'),
307
+ global: PSBTGlobalCoder,
308
+ inputs: P.array('global/inputCount', exports.PSBTInputCoder),
309
+ outputs: P.array('global/outputCount', exports.PSBTOutputCoder),
310
+ });
311
+ exports._DebugPSBT = P.struct({
312
+ magic: P.magic(P.string(new Uint8Array([0xff])), 'psbt'),
313
+ items: P.array(null, P.apply(P.array(P.NULL, P.tuple([P.hex(script_js_1.CompactSizeLen), P.bytes(script_js_1.CompactSize)])), P.coders.dict())),
314
+ });
315
+ function validatePSBTFields(version, info, lst) {
316
+ for (const k in lst) {
317
+ if (k === 'unknown')
318
+ continue;
319
+ if (!info[k])
320
+ continue;
321
+ const { allowInc } = PSBTKeyInfo(info[k]);
322
+ if (!allowInc.includes(version))
323
+ throw new Error(`PSBTv${version}: field ${k} is not allowed`);
324
+ }
325
+ for (const k in info) {
326
+ const { reqInc } = PSBTKeyInfo(info[k]);
327
+ if (reqInc.includes(version) && lst[k] === undefined)
328
+ throw new Error(`PSBTv${version}: missing required field ${k}`);
329
+ }
330
+ }
331
+ function cleanPSBTFields(version, info, lst) {
332
+ const out = {};
333
+ for (const _k in lst) {
334
+ const k = _k;
335
+ if (k !== 'unknown') {
336
+ if (!info[k])
337
+ continue;
338
+ const { allowInc, silentIgnore } = PSBTKeyInfo(info[k]);
339
+ if (!allowInc.includes(version)) {
340
+ if (silentIgnore)
341
+ continue;
342
+ throw new Error(`Failed to serialize in PSBTv${version}: ${k} but versions allows inclusion=${allowInc}`);
343
+ }
344
+ }
345
+ out[k] = lst[k];
346
+ }
347
+ return out;
348
+ }
349
+ exports.cleanPSBTFields = cleanPSBTFields;
350
+ function validatePSBT(tx) {
351
+ const version = (tx && tx.global && tx.global.version) || 0;
352
+ validatePSBTFields(version, exports.PSBTGlobal, tx.global);
353
+ for (const i of tx.inputs)
354
+ validatePSBTFields(version, exports.PSBTInput, i);
355
+ for (const o of tx.outputs)
356
+ validatePSBTFields(version, exports.PSBTOutput, o);
357
+ // We allow only one empty element at the end of map (compat with bitcoinjs-lib bug)
358
+ const inputCount = !version ? tx.global.unsignedTx.inputs.length : tx.global.inputCount;
359
+ if (tx.inputs.length < inputCount)
360
+ throw new Error('Not enough inputs');
361
+ const inputsLeft = tx.inputs.slice(inputCount);
362
+ if (inputsLeft.length > 1 || (inputsLeft.length && Object.keys(inputsLeft[0]).length))
363
+ throw new Error(`Unexpected inputs left in tx=${inputsLeft}`);
364
+ // Same for inputs
365
+ const outputCount = !version ? tx.global.unsignedTx.outputs.length : tx.global.outputCount;
366
+ if (tx.outputs.length < outputCount)
367
+ throw new Error('Not outputs inputs');
368
+ const outputsLeft = tx.outputs.slice(outputCount);
369
+ if (outputsLeft.length > 1 || (outputsLeft.length && Object.keys(outputsLeft[0]).length))
370
+ throw new Error(`Unexpected outputs left in tx=${outputsLeft}`);
371
+ return tx;
372
+ }
373
+ function mergeKeyMap(psbtEnum, val, cur, allowedFields) {
374
+ const res = { ...cur, ...val };
375
+ // All arguments can be provided as hex
376
+ for (const k in psbtEnum) {
377
+ const key = k;
378
+ const [_, kC, vC] = psbtEnum[key];
379
+ const cannotChange = allowedFields && !allowedFields.includes(k);
380
+ if (val[k] === undefined && k in val) {
381
+ if (cannotChange)
382
+ throw new Error(`Cannot remove signed field=${k}`);
383
+ delete res[k];
384
+ }
385
+ else if (kC) {
386
+ const oldKV = (cur && cur[k] ? cur[k] : []);
387
+ let newKV = val[key];
388
+ if (newKV) {
389
+ if (!Array.isArray(newKV))
390
+ throw new Error(`keyMap(${k}): KV pairs should be [k, v][]`);
391
+ // Decode hex in k-v
392
+ newKV = newKV.map((val) => {
393
+ if (val.length !== 2)
394
+ throw new Error(`keyMap(${k}): KV pairs should be [k, v][]`);
395
+ return [
396
+ typeof val[0] === 'string' ? kC.decode(base_1.hex.decode(val[0])) : val[0],
397
+ typeof val[1] === 'string' ? vC.decode(base_1.hex.decode(val[1])) : val[1],
398
+ ];
399
+ });
400
+ const map = {};
401
+ const add = (kStr, k, v) => {
402
+ if (map[kStr] === undefined) {
403
+ map[kStr] = [k, v];
404
+ return;
405
+ }
406
+ const oldVal = base_1.hex.encode(vC.encode(map[kStr][1]));
407
+ const newVal = base_1.hex.encode(vC.encode(v));
408
+ if (oldVal !== newVal)
409
+ throw new Error(`keyMap(${key}): same key=${kStr} oldVal=${oldVal} newVal=${newVal}`);
410
+ };
411
+ for (const [k, v] of oldKV) {
412
+ const kStr = base_1.hex.encode(kC.encode(k));
413
+ add(kStr, k, v);
414
+ }
415
+ for (const [k, v] of newKV) {
416
+ const kStr = base_1.hex.encode(kC.encode(k));
417
+ // undefined removes previous value
418
+ if (v === undefined) {
419
+ if (cannotChange)
420
+ throw new Error(`Cannot remove signed field=${key}/${k}`);
421
+ delete map[kStr];
422
+ }
423
+ else
424
+ add(kStr, k, v);
425
+ }
426
+ res[key] = Object.values(map);
427
+ }
428
+ }
429
+ else if (typeof res[k] === 'string') {
430
+ res[k] = vC.decode(base_1.hex.decode(res[k]));
431
+ }
432
+ else if (cannotChange && k in val && cur && cur[k] !== undefined) {
433
+ if (!P.equalBytes(vC.encode(val[k]), vC.encode(cur[k])))
434
+ throw new Error(`Cannot change signed field=${k}`);
435
+ }
436
+ }
437
+ // Remove unknown keys
438
+ for (const k in res)
439
+ if (!psbtEnum[k])
440
+ delete res[k];
441
+ return res;
442
+ }
443
+ exports.mergeKeyMap = mergeKeyMap;
444
+ exports.RawPSBTV0 = P.validate(exports._RawPSBTV0, validatePSBT);
445
+ exports.RawPSBTV2 = P.validate(exports._RawPSBTV2, validatePSBT);
446
+ //# sourceMappingURL=psbt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psbt.js","sourceRoot":"","sources":["../src/psbt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,154 @@
1
+ import * as P from 'micro-packed';
2
+ export declare const MAX_SCRIPT_BYTE_LENGTH = 520;
3
+ export declare enum OP {
4
+ OP_0 = 0,
5
+ PUSHDATA1 = 76,
6
+ PUSHDATA2 = 77,
7
+ PUSHDATA4 = 78,
8
+ '1NEGATE' = 79,
9
+ RESERVED = 80,
10
+ OP_1 = 81,
11
+ OP_2 = 82,
12
+ OP_3 = 83,
13
+ OP_4 = 84,
14
+ OP_5 = 85,
15
+ OP_6 = 86,
16
+ OP_7 = 87,
17
+ OP_8 = 88,
18
+ OP_9 = 89,
19
+ OP_10 = 90,
20
+ OP_11 = 91,
21
+ OP_12 = 92,
22
+ OP_13 = 93,
23
+ OP_14 = 94,
24
+ OP_15 = 95,
25
+ OP_16 = 96,
26
+ NOP = 97,
27
+ VER = 98,
28
+ IF = 99,
29
+ NOTIF = 100,
30
+ VERIF = 101,
31
+ VERNOTIF = 102,
32
+ ELSE = 103,
33
+ ENDIF = 104,
34
+ VERIFY = 105,
35
+ RETURN = 106,
36
+ TOALTSTACK = 107,
37
+ FROMALTSTACK = 108,
38
+ '2DROP' = 109,
39
+ '2DUP' = 110,
40
+ '3DUP' = 111,
41
+ '2OVER' = 112,
42
+ '2ROT' = 113,
43
+ '2SWAP' = 114,
44
+ IFDUP = 115,
45
+ DEPTH = 116,
46
+ DROP = 117,
47
+ DUP = 118,
48
+ NIP = 119,
49
+ OVER = 120,
50
+ PICK = 121,
51
+ ROLL = 122,
52
+ ROT = 123,
53
+ SWAP = 124,
54
+ TUCK = 125,
55
+ CAT = 126,
56
+ SUBSTR = 127,
57
+ LEFT = 128,
58
+ RIGHT = 129,
59
+ SIZE = 130,
60
+ INVERT = 131,
61
+ AND = 132,
62
+ OR = 133,
63
+ XOR = 134,
64
+ EQUAL = 135,
65
+ EQUALVERIFY = 136,
66
+ RESERVED1 = 137,
67
+ RESERVED2 = 138,
68
+ '1ADD' = 139,
69
+ '1SUB' = 140,
70
+ '2MUL' = 141,
71
+ '2DIV' = 142,
72
+ NEGATE = 143,
73
+ ABS = 144,
74
+ NOT = 145,
75
+ '0NOTEQUAL' = 146,
76
+ ADD = 147,
77
+ SUB = 148,
78
+ MUL = 149,
79
+ DIV = 150,
80
+ MOD = 151,
81
+ LSHIFT = 152,
82
+ RSHIFT = 153,
83
+ BOOLAND = 154,
84
+ BOOLOR = 155,
85
+ NUMEQUAL = 156,
86
+ NUMEQUALVERIFY = 157,
87
+ NUMNOTEQUAL = 158,
88
+ LESSTHAN = 159,
89
+ GREATERTHAN = 160,
90
+ LESSTHANOREQUAL = 161,
91
+ GREATERTHANOREQUAL = 162,
92
+ MIN = 163,
93
+ MAX = 164,
94
+ WITHIN = 165,
95
+ RIPEMD160 = 166,
96
+ SHA1 = 167,
97
+ SHA256 = 168,
98
+ HASH160 = 169,
99
+ HASH256 = 170,
100
+ CODESEPARATOR = 171,
101
+ CHECKSIG = 172,
102
+ CHECKSIGVERIFY = 173,
103
+ CHECKMULTISIG = 174,
104
+ CHECKMULTISIGVERIFY = 175,
105
+ NOP1 = 176,
106
+ CHECKLOCKTIMEVERIFY = 177,
107
+ CHECKSEQUENCEVERIFY = 178,
108
+ NOP4 = 179,
109
+ NOP5 = 180,
110
+ NOP6 = 181,
111
+ NOP7 = 182,
112
+ NOP8 = 183,
113
+ NOP9 = 184,
114
+ NOP10 = 185,
115
+ CHECKSIGADD = 186,
116
+ INVALID = 255
117
+ }
118
+ export type ScriptOP = keyof typeof OP | Uint8Array | number;
119
+ export type ScriptType = ScriptOP[];
120
+ export declare function ScriptNum(bytesLimit?: number, forceMinimal?: boolean): P.CoderType<bigint>;
121
+ export declare function OpToNum(op: ScriptOP, bytesLimit?: number, forceMinimal?: boolean): number | undefined;
122
+ export declare const Script: P.CoderType<ScriptType>;
123
+ export declare const CompactSize: P.CoderType<bigint>;
124
+ export declare const CompactSizeLen: P.CoderType<number>;
125
+ export declare const VarBytes: P.CoderType<Uint8Array>;
126
+ export declare const RawWitness: P.CoderType<Uint8Array[]>;
127
+ export declare const BTCArray: <T>(t: P.CoderType<T>) => P.CoderType<T[]>;
128
+ export declare const RawInput: P.CoderType<P.StructInput<{
129
+ txid: Uint8Array;
130
+ index: number;
131
+ finalScriptSig: Uint8Array;
132
+ sequence: number;
133
+ }>>;
134
+ export declare const RawOutput: P.CoderType<P.StructInput<{
135
+ amount: bigint;
136
+ script: Uint8Array;
137
+ }>>;
138
+ export declare const RawTx: P.CoderType<P.StructInput<{
139
+ version: number;
140
+ segwitFlag: boolean;
141
+ inputs: P.StructInput<{
142
+ txid: any;
143
+ index: any;
144
+ finalScriptSig: any;
145
+ sequence: any;
146
+ }>[];
147
+ outputs: P.StructInput<{
148
+ amount: any;
149
+ script: any;
150
+ }>[];
151
+ witnesses: P.Option<Uint8Array[][]>;
152
+ lockTime: number;
153
+ }>>;
154
+ //# sourceMappingURL=script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"}