@btc-vision/bitcoin 7.0.0-beta.0 → 7.0.0-beta.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.
Files changed (116) hide show
  1. package/README.md +112 -13
  2. package/benchmark-compare/BENCHMARK.md +74 -59
  3. package/benchmark-compare/compare.bench.ts +249 -96
  4. package/benchmark-compare/harness.ts +23 -25
  5. package/benchmark-compare/package.json +1 -0
  6. package/browser/address.d.ts +4 -4
  7. package/browser/address.d.ts.map +1 -1
  8. package/browser/chunks/{psbt-parallel-B-dfm5GZ.js → psbt-parallel-jZ6QcCnM.js} +3128 -2731
  9. package/browser/index.d.ts +1 -1
  10. package/browser/index.d.ts.map +1 -1
  11. package/browser/index.js +603 -585
  12. package/browser/io/base58check.d.ts +1 -25
  13. package/browser/io/base58check.d.ts.map +1 -1
  14. package/browser/io/base64.d.ts.map +1 -1
  15. package/browser/networks.d.ts +1 -0
  16. package/browser/networks.d.ts.map +1 -1
  17. package/browser/payments/bip341.d.ts +17 -0
  18. package/browser/payments/bip341.d.ts.map +1 -1
  19. package/browser/payments/index.d.ts +3 -2
  20. package/browser/payments/index.d.ts.map +1 -1
  21. package/browser/payments/p2mr.d.ts +169 -0
  22. package/browser/payments/p2mr.d.ts.map +1 -0
  23. package/browser/payments/types.d.ts +11 -1
  24. package/browser/payments/types.d.ts.map +1 -1
  25. package/browser/psbt/bip371.d.ts +30 -0
  26. package/browser/psbt/bip371.d.ts.map +1 -1
  27. package/browser/psbt/psbtutils.d.ts +1 -0
  28. package/browser/psbt/psbtutils.d.ts.map +1 -1
  29. package/browser/psbt.d.ts.map +1 -1
  30. package/browser/workers/index.js +9 -9
  31. package/build/address.d.ts +4 -4
  32. package/build/address.d.ts.map +1 -1
  33. package/build/address.js +11 -1
  34. package/build/address.js.map +1 -1
  35. package/build/index.d.ts +1 -1
  36. package/build/index.d.ts.map +1 -1
  37. package/build/index.js.map +1 -1
  38. package/build/io/base58check.d.ts +1 -25
  39. package/build/io/base58check.d.ts.map +1 -1
  40. package/build/io/base58check.js +1 -31
  41. package/build/io/base58check.js.map +1 -1
  42. package/build/io/base64.d.ts.map +1 -1
  43. package/build/io/base64.js +3 -0
  44. package/build/io/base64.js.map +1 -1
  45. package/build/networks.d.ts +1 -0
  46. package/build/networks.d.ts.map +1 -1
  47. package/build/networks.js +12 -0
  48. package/build/networks.js.map +1 -1
  49. package/build/payments/bip341.d.ts +17 -0
  50. package/build/payments/bip341.d.ts.map +1 -1
  51. package/build/payments/bip341.js +32 -1
  52. package/build/payments/bip341.js.map +1 -1
  53. package/build/payments/index.d.ts +3 -2
  54. package/build/payments/index.d.ts.map +1 -1
  55. package/build/payments/index.js +2 -1
  56. package/build/payments/index.js.map +1 -1
  57. package/build/payments/p2mr.d.ts +178 -0
  58. package/build/payments/p2mr.d.ts.map +1 -0
  59. package/build/payments/p2mr.js +555 -0
  60. package/build/payments/p2mr.js.map +1 -0
  61. package/build/payments/types.d.ts +11 -1
  62. package/build/payments/types.d.ts.map +1 -1
  63. package/build/payments/types.js +1 -0
  64. package/build/payments/types.js.map +1 -1
  65. package/build/psbt/bip371.d.ts +30 -0
  66. package/build/psbt/bip371.d.ts.map +1 -1
  67. package/build/psbt/bip371.js +80 -15
  68. package/build/psbt/bip371.js.map +1 -1
  69. package/build/psbt/psbtutils.d.ts +1 -0
  70. package/build/psbt/psbtutils.d.ts.map +1 -1
  71. package/build/psbt/psbtutils.js +2 -0
  72. package/build/psbt/psbtutils.js.map +1 -1
  73. package/build/psbt.d.ts.map +1 -1
  74. package/build/psbt.js +3 -2
  75. package/build/psbt.js.map +1 -1
  76. package/build/pubkey.js +1 -1
  77. package/build/pubkey.js.map +1 -1
  78. package/build/tsconfig.build.tsbuildinfo +1 -1
  79. package/documentation/README.md +122 -0
  80. package/documentation/address.md +820 -0
  81. package/documentation/block.md +679 -0
  82. package/documentation/crypto.md +461 -0
  83. package/documentation/ecc.md +584 -0
  84. package/documentation/errors.md +656 -0
  85. package/documentation/io.md +942 -0
  86. package/documentation/networks.md +625 -0
  87. package/documentation/p2mr.md +380 -0
  88. package/documentation/payments.md +1485 -0
  89. package/documentation/psbt.md +1400 -0
  90. package/documentation/script.md +730 -0
  91. package/documentation/taproot.md +670 -0
  92. package/documentation/transaction.md +943 -0
  93. package/documentation/types.md +587 -0
  94. package/documentation/workers.md +1007 -0
  95. package/eslint.config.js +3 -0
  96. package/package.json +17 -14
  97. package/src/address.ts +22 -10
  98. package/src/index.ts +1 -0
  99. package/src/io/base58check.ts +1 -35
  100. package/src/io/base64.ts +5 -0
  101. package/src/networks.ts +13 -0
  102. package/src/payments/bip341.ts +36 -1
  103. package/src/payments/index.ts +4 -0
  104. package/src/payments/p2mr.ts +660 -0
  105. package/src/payments/types.ts +12 -0
  106. package/src/psbt/bip371.ts +84 -13
  107. package/src/psbt/psbtutils.ts +2 -0
  108. package/src/psbt.ts +4 -2
  109. package/src/pubkey.ts +1 -1
  110. package/test/bitcoin.core.spec.ts +1 -1
  111. package/test/fixtures/p2mr.json +270 -0
  112. package/test/integration/taproot.spec.ts +7 -3
  113. package/test/opnetTestnet.spec.ts +302 -0
  114. package/test/payments.spec.ts +3 -1
  115. package/test/psbt.spec.ts +297 -2
  116. package/test/tsconfig.json +2 -2
@@ -0,0 +1,555 @@
1
+ /**
2
+ * Pay-to-Merkle-Root (P2MR) payment class.
3
+ *
4
+ * P2MR is a SegWit version 2 output type (BIP 360). It commits directly to
5
+ * the Merkle root of a script tree, removing the quantum-vulnerable key-path
6
+ * spend found in P2TR. There is no internal pubkey or tweaking.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ import { bech32m } from 'bech32';
11
+ import { fromBech32 } from '../bech32utils.js';
12
+ import { bitcoin as BITCOIN_NETWORK } from '../networks.js';
13
+ import * as bscript from '../script.js';
14
+ import { stacksEqual, TAPLEAF_VERSION_MASK, } from '../types.js';
15
+ import { findScriptPath, LEAF_VERSION_TAPSCRIPT, rootHashFromPathP2MR, tapleafHash, toHashTree, } from './bip341.js';
16
+ import { concat, equals } from '../io/index.js';
17
+ import { PaymentType } from './types.js';
18
+ const OPS = bscript.opcodes;
19
+ const P2MR_WITNESS_VERSION = 0x02;
20
+ const ANNEX_PREFIX = 0x50;
21
+ /**
22
+ * Pay-to-Merkle-Root (P2MR) payment class.
23
+ *
24
+ * Creates locking scripts of the form: `OP_2 {32-byte merkle root}`
25
+ *
26
+ * Script-path spending witness: `[script inputs..., script, control block]`
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * import { P2MR } from '@btc-vision/bitcoin';
31
+ *
32
+ * // From script tree
33
+ * const p2mr = P2MR.fromScriptTree(scriptTree);
34
+ * console.log(p2mr.address); // bc1z... address
35
+ *
36
+ * // From merkle root hash
37
+ * const fromHash = P2MR.fromHash(merkleRoot);
38
+ *
39
+ * // Decode an existing output
40
+ * const decoded = P2MR.fromOutput(scriptPubKey);
41
+ * console.log(decoded.hash); // 32-byte merkle root
42
+ * ```
43
+ */
44
+ export class P2MR {
45
+ static NAME = PaymentType.P2MR;
46
+ #network;
47
+ #opts;
48
+ #inputAddress;
49
+ #inputHash;
50
+ #inputScriptTree;
51
+ #inputOutput;
52
+ #inputWitness;
53
+ #inputRedeem;
54
+ #inputRedeemVersion;
55
+ #address;
56
+ #hash;
57
+ #output;
58
+ #redeem;
59
+ #redeemVersion;
60
+ #witness;
61
+ #addressComputed = false;
62
+ #hashComputed = false;
63
+ #outputComputed = false;
64
+ #redeemComputed = false;
65
+ #redeemVersionComputed = false;
66
+ #witnessComputed = false;
67
+ #decodedAddress;
68
+ #decodedAddressComputed = false;
69
+ #witnessWithoutAnnex;
70
+ #witnessWithoutAnnexComputed = false;
71
+ #hashTree;
72
+ #hashTreeComputed = false;
73
+ /**
74
+ * Creates a new P2MR payment instance.
75
+ *
76
+ * @param params - Payment parameters
77
+ * @param params.address - Bech32m encoded address (bc1z...)
78
+ * @param params.hash - Merkle root (32 bytes, = witness program)
79
+ * @param params.scriptTree - Full script tree definition
80
+ * @param params.output - The scriptPubKey
81
+ * @param params.witness - The witness stack
82
+ * @param params.redeem - Redeem script for script-path spending
83
+ * @param params.redeemVersion - Leaf version (defaults to LEAF_VERSION_TAPSCRIPT)
84
+ * @param params.network - Network parameters (defaults to mainnet)
85
+ * @param opts - Payment options
86
+ * @param opts.validate - Whether to validate inputs (default: true)
87
+ *
88
+ * @throws {TypeError} If validation is enabled and data is invalid
89
+ */
90
+ constructor(params, opts) {
91
+ this.#network = params.network ?? BITCOIN_NETWORK;
92
+ this.#opts = {
93
+ validate: opts?.validate ?? true,
94
+ allowIncomplete: opts?.allowIncomplete ?? false,
95
+ };
96
+ // Store input data
97
+ this.#inputAddress = params.address;
98
+ this.#inputHash = params.hash;
99
+ this.#inputScriptTree = params.scriptTree;
100
+ this.#inputOutput = params.output;
101
+ this.#inputWitness = params.witness;
102
+ this.#inputRedeem = params.redeem;
103
+ this.#inputRedeemVersion = params.redeemVersion;
104
+ // Validate if requested
105
+ if (this.#opts.validate) {
106
+ this.#validate();
107
+ }
108
+ }
109
+ /**
110
+ * Payment type discriminant.
111
+ *
112
+ * @returns The P2MR payment type constant.
113
+ */
114
+ get name() {
115
+ return PaymentType.P2MR;
116
+ }
117
+ /**
118
+ * Network parameters used for address encoding.
119
+ *
120
+ * @returns The network configuration (mainnet, testnet, or regtest).
121
+ */
122
+ get network() {
123
+ return this.#network;
124
+ }
125
+ /**
126
+ * Bech32m encoded address (bc1z... for mainnet).
127
+ *
128
+ * @returns The bech32m-encoded address, or `undefined` if insufficient data.
129
+ */
130
+ get address() {
131
+ if (!this.#addressComputed) {
132
+ this.#address = this.#computeAddress();
133
+ this.#addressComputed = true;
134
+ }
135
+ return this.#address;
136
+ }
137
+ /**
138
+ * Merkle root hash (32 bytes). This is the witness program and directly
139
+ * appears in the output script.
140
+ *
141
+ * @returns The 32-byte merkle root, or `undefined` if insufficient data.
142
+ */
143
+ get hash() {
144
+ if (!this.#hashComputed) {
145
+ this.#hash = this.#computeHash();
146
+ this.#hashComputed = true;
147
+ }
148
+ return this.#hash;
149
+ }
150
+ /**
151
+ * The scriptPubKey: `OP_2 <32-byte merkle root>` (34 bytes total).
152
+ *
153
+ * @returns The output script, or `undefined` if insufficient data.
154
+ */
155
+ get output() {
156
+ if (!this.#outputComputed) {
157
+ this.#output = this.#computeOutput();
158
+ this.#outputComputed = true;
159
+ }
160
+ return this.#output;
161
+ }
162
+ /**
163
+ * Redeem script information for script-path spending.
164
+ *
165
+ * @returns The redeem script data, or `undefined` if not available.
166
+ */
167
+ get redeem() {
168
+ if (!this.#redeemComputed) {
169
+ this.#redeem = this.#computeRedeem();
170
+ this.#redeemComputed = true;
171
+ }
172
+ return this.#redeem;
173
+ }
174
+ /**
175
+ * Leaf version used for script-path hashing.
176
+ *
177
+ * @returns The leaf version byte (defaults to LEAF_VERSION_TAPSCRIPT = 0xc0).
178
+ */
179
+ get redeemVersion() {
180
+ if (!this.#redeemVersionComputed) {
181
+ this.#redeemVersion = this.#computeRedeemVersion();
182
+ this.#redeemVersionComputed = true;
183
+ }
184
+ return this.#redeemVersion ?? LEAF_VERSION_TAPSCRIPT;
185
+ }
186
+ /**
187
+ * Witness stack for script-path spending.
188
+ * Format: `[script inputs..., script, control block]`
189
+ *
190
+ * @returns The witness stack array, or `undefined` if insufficient data.
191
+ */
192
+ get witness() {
193
+ if (!this.#witnessComputed) {
194
+ this.#witness = this.#computeWitness();
195
+ this.#witnessComputed = true;
196
+ }
197
+ return this.#witness;
198
+ }
199
+ /**
200
+ * Creates a P2MR payment from a script tree.
201
+ *
202
+ * @param scriptTree - The script tree
203
+ * @param network - Network parameters (defaults to mainnet)
204
+ * @returns A new P2MR payment instance
205
+ */
206
+ static fromScriptTree(scriptTree, network) {
207
+ return new P2MR({ scriptTree, network });
208
+ }
209
+ /**
210
+ * Creates a P2MR payment from a bech32m address.
211
+ *
212
+ * @param address - Bech32m encoded address (bc1z...)
213
+ * @param network - Network parameters (defaults to mainnet)
214
+ * @returns A new P2MR payment instance
215
+ */
216
+ static fromAddress(address, network) {
217
+ return new P2MR({ address, network });
218
+ }
219
+ /**
220
+ * Creates a P2MR payment from a scriptPubKey.
221
+ *
222
+ * @param output - The scriptPubKey
223
+ * @param network - Network parameters (defaults to mainnet)
224
+ * @returns A new P2MR payment instance
225
+ */
226
+ static fromOutput(output, network) {
227
+ return new P2MR({ output, network });
228
+ }
229
+ /**
230
+ * Creates a P2MR payment from a merkle root hash.
231
+ *
232
+ * @param hash - The 32-byte merkle root
233
+ * @param network - Network parameters (defaults to mainnet)
234
+ * @returns A new P2MR payment instance
235
+ */
236
+ static fromHash(hash, network) {
237
+ return new P2MR({ hash, network });
238
+ }
239
+ /**
240
+ * Converts to a plain P2MRPayment object for backwards compatibility.
241
+ *
242
+ * @returns A P2MRPayment object
243
+ */
244
+ toPayment() {
245
+ return {
246
+ name: this.name,
247
+ network: this.network,
248
+ address: this.address,
249
+ hash: this.hash,
250
+ scriptTree: this.#inputScriptTree,
251
+ output: this.output,
252
+ redeem: this.redeem,
253
+ redeemVersion: this.redeemVersion,
254
+ witness: this.witness,
255
+ };
256
+ }
257
+ #getDecodedAddress() {
258
+ if (!this.#decodedAddressComputed) {
259
+ if (this.#inputAddress) {
260
+ const decoded = fromBech32(this.#inputAddress);
261
+ if (decoded) {
262
+ this.#decodedAddress = {
263
+ version: decoded.version,
264
+ prefix: decoded.prefix,
265
+ data: decoded.data,
266
+ };
267
+ }
268
+ }
269
+ this.#decodedAddressComputed = true;
270
+ }
271
+ return this.#decodedAddress;
272
+ }
273
+ #getWitnessWithoutAnnex() {
274
+ if (!this.#witnessWithoutAnnexComputed) {
275
+ if (this.#inputWitness && this.#inputWitness.length > 0) {
276
+ // Remove annex if present
277
+ const lastWitness = this.#inputWitness[this.#inputWitness.length - 1];
278
+ if (this.#inputWitness.length >= 2 &&
279
+ lastWitness && lastWitness[0] === ANNEX_PREFIX) {
280
+ this.#witnessWithoutAnnex = this.#inputWitness.slice(0, -1);
281
+ }
282
+ else {
283
+ this.#witnessWithoutAnnex = this.#inputWitness.slice();
284
+ }
285
+ }
286
+ this.#witnessWithoutAnnexComputed = true;
287
+ }
288
+ return this.#witnessWithoutAnnex;
289
+ }
290
+ #getHashTree() {
291
+ if (!this.#hashTreeComputed) {
292
+ if (this.#inputScriptTree) {
293
+ this.#hashTree = toHashTree(this.#inputScriptTree);
294
+ }
295
+ else if (this.#inputHash) {
296
+ this.#hashTree = { hash: this.#inputHash };
297
+ }
298
+ this.#hashTreeComputed = true;
299
+ }
300
+ return this.#hashTree;
301
+ }
302
+ #computeAddress() {
303
+ if (this.#inputAddress) {
304
+ return this.#inputAddress;
305
+ }
306
+ const h = this.hash;
307
+ if (!h)
308
+ return undefined;
309
+ const words = bech32m.toWords(h);
310
+ words.unshift(P2MR_WITNESS_VERSION);
311
+ return bech32m.encode(this.#network.bech32, words);
312
+ }
313
+ #computeHash() {
314
+ if (this.#inputHash) {
315
+ return this.#inputHash;
316
+ }
317
+ const hashTree = this.#getHashTree();
318
+ if (hashTree) {
319
+ return hashTree.hash;
320
+ }
321
+ if (this.#inputOutput) {
322
+ return this.#inputOutput.subarray(2);
323
+ }
324
+ if (this.#inputAddress) {
325
+ return this.#getDecodedAddress()?.data;
326
+ }
327
+ const w = this.#getWitnessWithoutAnnex();
328
+ if (w && w.length > 1) {
329
+ const controlBlock = w[w.length - 1];
330
+ const leafVersion = controlBlock[0] & TAPLEAF_VERSION_MASK;
331
+ const script = w[w.length - 2];
332
+ const leafHash = tapleafHash({
333
+ output: script,
334
+ version: leafVersion,
335
+ });
336
+ return rootHashFromPathP2MR(controlBlock, leafHash);
337
+ }
338
+ return undefined;
339
+ }
340
+ #computeOutput() {
341
+ if (this.#inputOutput) {
342
+ return this.#inputOutput;
343
+ }
344
+ const h = this.hash;
345
+ if (!h)
346
+ return undefined;
347
+ return bscript.compile([OPS.OP_2, h]);
348
+ }
349
+ #computeRedeem() {
350
+ if (this.#inputRedeem) {
351
+ return this.#inputRedeem;
352
+ }
353
+ const witness = this.#getWitnessWithoutAnnex();
354
+ if (!witness || witness.length < 2) {
355
+ return undefined;
356
+ }
357
+ const lastWitness = witness[witness.length - 1];
358
+ return {
359
+ output: witness[witness.length - 2],
360
+ witness: witness.slice(0, -2),
361
+ redeemVersion: lastWitness[0] & TAPLEAF_VERSION_MASK,
362
+ };
363
+ }
364
+ #computeRedeemVersion() {
365
+ if (this.#inputRedeemVersion !== undefined) {
366
+ return this.#inputRedeemVersion;
367
+ }
368
+ if (this.#inputRedeem &&
369
+ this.#inputRedeem.redeemVersion !== undefined &&
370
+ this.#inputRedeem.redeemVersion !== null) {
371
+ return this.#inputRedeem.redeemVersion;
372
+ }
373
+ return LEAF_VERSION_TAPSCRIPT;
374
+ }
375
+ #computeWitness() {
376
+ if (this.#inputWitness) {
377
+ return this.#inputWitness;
378
+ }
379
+ const hashTree = this.#getHashTree();
380
+ if (hashTree && this.#inputRedeem?.output) {
381
+ const leafHash = tapleafHash({
382
+ output: this.#inputRedeem.output,
383
+ version: this.redeemVersion,
384
+ });
385
+ const path = findScriptPath(hashTree, leafHash);
386
+ if (!path)
387
+ return undefined;
388
+ const version = this.redeemVersion ?? 0xc0;
389
+ // P2MR control block: [version | 0x01, ...merklePath]
390
+ // Parity bit is always 1, no internal pubkey
391
+ const controlBlock = concat([
392
+ new Uint8Array([version | 0x01]),
393
+ ...path,
394
+ ]);
395
+ return [this.#inputRedeem.output, controlBlock];
396
+ }
397
+ return undefined;
398
+ }
399
+ #validate() {
400
+ let knownHash = new Uint8Array(0);
401
+ if (this.#inputAddress) {
402
+ const addr = this.#getDecodedAddress();
403
+ if (!addr) {
404
+ throw new TypeError('Invalid address');
405
+ }
406
+ if (this.#network && this.#network.bech32 !== addr.prefix) {
407
+ throw new TypeError('Invalid prefix or Network mismatch');
408
+ }
409
+ if (addr.version !== P2MR_WITNESS_VERSION) {
410
+ throw new TypeError('Invalid address version');
411
+ }
412
+ if (addr.data.length !== 32) {
413
+ throw new TypeError('Invalid address data');
414
+ }
415
+ knownHash = addr.data;
416
+ }
417
+ if (this.#inputOutput) {
418
+ if (this.#inputOutput.length !== 34 ||
419
+ this.#inputOutput[0] !== OPS.OP_2 ||
420
+ this.#inputOutput[1] !== 0x20) {
421
+ throw new TypeError('Output is invalid');
422
+ }
423
+ if (knownHash.length > 0 && !equals(knownHash, this.#inputOutput.subarray(2))) {
424
+ throw new TypeError('Hash mismatch');
425
+ }
426
+ else {
427
+ knownHash = this.#inputOutput.subarray(2);
428
+ }
429
+ }
430
+ if (this.#inputHash) {
431
+ if (this.#inputHash.length !== 32) {
432
+ throw new TypeError('Invalid hash length');
433
+ }
434
+ if (knownHash.length > 0 && !equals(knownHash, this.#inputHash)) {
435
+ throw new TypeError('Hash mismatch');
436
+ }
437
+ }
438
+ const hashTree = this.#getHashTree();
439
+ if (this.#inputHash && hashTree) {
440
+ if (!equals(this.#inputHash, hashTree.hash)) {
441
+ throw new TypeError('Hash mismatch');
442
+ }
443
+ }
444
+ if (this.#inputRedeem?.output && hashTree) {
445
+ const leafHash = tapleafHash({
446
+ output: this.#inputRedeem.output,
447
+ version: this.redeemVersion,
448
+ });
449
+ if (!findScriptPath(hashTree, leafHash)) {
450
+ throw new TypeError('Redeem script not in tree');
451
+ }
452
+ }
453
+ const witness = this.#getWitnessWithoutAnnex();
454
+ // Compare provided redeem with computed from witness
455
+ if (this.#inputRedeem && this.redeem) {
456
+ if (this.#inputRedeem.redeemVersion) {
457
+ if (this.#inputRedeem.redeemVersion !== this.redeem.redeemVersion) {
458
+ throw new TypeError('Redeem.redeemVersion and witness mismatch');
459
+ }
460
+ }
461
+ if (this.#inputRedeem.output) {
462
+ const decompiled = bscript.decompile(this.#inputRedeem.output);
463
+ if (!decompiled || decompiled.length === 0) {
464
+ throw new TypeError('Redeem.output is invalid');
465
+ }
466
+ if (this.redeem.output && !equals(this.#inputRedeem.output, this.redeem.output)) {
467
+ throw new TypeError('Redeem.output and witness mismatch');
468
+ }
469
+ }
470
+ if (this.#inputRedeem.witness) {
471
+ if (this.redeem.witness &&
472
+ !stacksEqual(this.#inputRedeem.witness, this.redeem.witness)) {
473
+ throw new TypeError('Redeem.witness and witness mismatch');
474
+ }
475
+ }
476
+ }
477
+ if (witness && witness.length > 0) {
478
+ // P2MR only supports script-path spending (no key-path)
479
+ if (witness.length < 2) {
480
+ throw new TypeError('P2MR requires at least 2 witness items (script + control block)');
481
+ }
482
+ const controlBlock = witness[witness.length - 1];
483
+ if (controlBlock.length < 1) {
484
+ throw new TypeError(`The control-block length is too small. Got ${controlBlock.length}, expected min 1.`);
485
+ }
486
+ if ((controlBlock.length - 1) % 32 !== 0) {
487
+ throw new TypeError(`The control-block length of ${controlBlock.length} is incorrect!`);
488
+ }
489
+ const m = (controlBlock.length - 1) / 32;
490
+ if (m > 128) {
491
+ throw new TypeError(`The script path is too long. Got ${m}, expected max 128.`);
492
+ }
493
+ const controlBlockFirstByte = controlBlock[0];
494
+ // P2MR parity bit must be 1
495
+ if ((controlBlockFirstByte & 1) !== 1) {
496
+ throw new TypeError('P2MR control byte parity bit must be 1');
497
+ }
498
+ const leafVersion = controlBlockFirstByte & TAPLEAF_VERSION_MASK;
499
+ const script = witness[witness.length - 2];
500
+ const leafHash = tapleafHash({
501
+ output: script,
502
+ version: leafVersion,
503
+ });
504
+ const computedHash = rootHashFromPathP2MR(controlBlock, leafHash);
505
+ // Verify merkle root matches the witness program
506
+ if (knownHash.length > 0 && !equals(knownHash, computedHash)) {
507
+ throw new TypeError('Merkle root mismatch for p2mr witness');
508
+ }
509
+ }
510
+ }
511
+ }
512
+ /**
513
+ * Creates a Pay-to-Merkle-Root (P2MR) payment object.
514
+ *
515
+ * This is the legacy factory function for backwards compatibility.
516
+ * For new code, prefer using the P2MR class directly.
517
+ *
518
+ * @param a - The payment object containing the necessary data
519
+ * @param opts - Optional payment options
520
+ * @returns The P2MR payment object
521
+ * @throws {TypeError} If the required data is not provided or if the data is invalid
522
+ *
523
+ * @example
524
+ * ```typescript
525
+ * import { p2mr } from '@btc-vision/bitcoin';
526
+ *
527
+ * // From script tree
528
+ * const payment = p2mr({ scriptTree });
529
+ *
530
+ * // From merkle root hash
531
+ * const fromHash = p2mr({ hash: merkleRoot });
532
+ * ```
533
+ */
534
+ export function p2mr(a, opts) {
535
+ if (!a.address &&
536
+ !a.output &&
537
+ !a.hash &&
538
+ !a.scriptTree &&
539
+ !(a.witness && a.witness.length > 1)) {
540
+ throw new TypeError('Not enough data');
541
+ }
542
+ const instance = new P2MR({
543
+ address: a.address,
544
+ hash: a.hash,
545
+ scriptTree: a.scriptTree,
546
+ output: a.output,
547
+ witness: a.witness,
548
+ redeem: a.redeem,
549
+ redeemVersion: a.redeemVersion,
550
+ network: a.network,
551
+ }, opts);
552
+ // Return a merged object for backwards compatibility
553
+ return Object.assign(instance.toPayment(), a);
554
+ }
555
+ //# sourceMappingURL=p2mr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"p2mr.js","sourceRoot":"","sources":["../../src/payments/p2mr.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare const PaymentType: {
12
12
  readonly P2WPKH: "p2wpkh";
13
13
  readonly P2WSH: "p2wsh";
14
14
  readonly P2TR: "p2tr";
15
+ readonly P2MR: "p2mr";
15
16
  readonly P2OP: "p2op";
16
17
  readonly Embed: "embed";
17
18
  readonly ScriptRedeem: "scriptRedeem";
@@ -101,6 +102,15 @@ export interface P2TRPayment extends BasePayment {
101
102
  readonly redeemVersion?: number | undefined;
102
103
  readonly redeem?: ScriptRedeem | undefined;
103
104
  }
105
+ export interface P2MRPayment extends BasePayment {
106
+ readonly name: typeof PaymentType.P2MR;
107
+ /** Merkle root of the script tree (= witness program). */
108
+ readonly hash?: Bytes32 | undefined;
109
+ /** Full taptree description (optional, dev-side). */
110
+ readonly scriptTree?: Taptree | undefined;
111
+ readonly redeemVersion?: number | undefined;
112
+ readonly redeem?: ScriptRedeem | undefined;
113
+ }
104
114
  export interface P2OPPayment extends BasePayment {
105
115
  readonly name: typeof PaymentType.P2OP;
106
116
  /** <deploymentVersion || HASH160(payload)> (2–40 bytes). */
@@ -118,7 +128,7 @@ export interface EmbedPayment extends BasePayment {
118
128
  /** Raw pushed chunks after OP_RETURN. */
119
129
  readonly data: Uint8Array[];
120
130
  }
121
- export type Payment = P2PKPayment | P2PKHPayment | P2SHPayment | P2MSPayment | P2WPKHPayment | P2WSHPayment | P2TRPayment | P2OPPayment | EmbedPayment | ScriptRedeem;
131
+ export type Payment = P2PKPayment | P2PKHPayment | P2SHPayment | P2MSPayment | P2WPKHPayment | P2WSHPayment | P2TRPayment | P2MRPayment | P2OPPayment | EmbedPayment | ScriptRedeem;
122
132
  export type PaymentCreator = <T extends BasePayment>(a: T, opts?: PaymentOpts) => T;
123
133
  export interface PaymentOpts {
124
134
  readonly validate?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export const PaymentType = {
10
10
  P2WPKH: 'p2wpkh',
11
11
  P2WSH: 'p2wsh',
12
12
  P2TR: 'p2tr',
13
+ P2MR: 'p2mr',
13
14
  P2OP: 'p2op',
14
15
  Embed: 'embed',
15
16
  ScriptRedeem: 'scriptRedeem',
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;CACtB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,cAAc;CACtB,CAAC"}