@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.
- package/README.md +112 -13
- package/benchmark-compare/BENCHMARK.md +74 -59
- package/benchmark-compare/compare.bench.ts +249 -96
- package/benchmark-compare/harness.ts +23 -25
- package/benchmark-compare/package.json +1 -0
- package/browser/address.d.ts +4 -4
- package/browser/address.d.ts.map +1 -1
- package/browser/chunks/{psbt-parallel-B-dfm5GZ.js → psbt-parallel-jZ6QcCnM.js} +3128 -2731
- package/browser/index.d.ts +1 -1
- package/browser/index.d.ts.map +1 -1
- package/browser/index.js +603 -585
- package/browser/io/base58check.d.ts +1 -25
- package/browser/io/base58check.d.ts.map +1 -1
- package/browser/io/base64.d.ts.map +1 -1
- package/browser/networks.d.ts +1 -0
- package/browser/networks.d.ts.map +1 -1
- package/browser/payments/bip341.d.ts +17 -0
- package/browser/payments/bip341.d.ts.map +1 -1
- package/browser/payments/index.d.ts +3 -2
- package/browser/payments/index.d.ts.map +1 -1
- package/browser/payments/p2mr.d.ts +169 -0
- package/browser/payments/p2mr.d.ts.map +1 -0
- package/browser/payments/types.d.ts +11 -1
- package/browser/payments/types.d.ts.map +1 -1
- package/browser/psbt/bip371.d.ts +30 -0
- package/browser/psbt/bip371.d.ts.map +1 -1
- package/browser/psbt/psbtutils.d.ts +1 -0
- package/browser/psbt/psbtutils.d.ts.map +1 -1
- package/browser/psbt.d.ts.map +1 -1
- package/browser/workers/index.js +9 -9
- package/build/address.d.ts +4 -4
- package/build/address.d.ts.map +1 -1
- package/build/address.js +11 -1
- package/build/address.js.map +1 -1
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js.map +1 -1
- package/build/io/base58check.d.ts +1 -25
- package/build/io/base58check.d.ts.map +1 -1
- package/build/io/base58check.js +1 -31
- package/build/io/base58check.js.map +1 -1
- package/build/io/base64.d.ts.map +1 -1
- package/build/io/base64.js +3 -0
- package/build/io/base64.js.map +1 -1
- package/build/networks.d.ts +1 -0
- package/build/networks.d.ts.map +1 -1
- package/build/networks.js +12 -0
- package/build/networks.js.map +1 -1
- package/build/payments/bip341.d.ts +17 -0
- package/build/payments/bip341.d.ts.map +1 -1
- package/build/payments/bip341.js +32 -1
- package/build/payments/bip341.js.map +1 -1
- package/build/payments/index.d.ts +3 -2
- package/build/payments/index.d.ts.map +1 -1
- package/build/payments/index.js +2 -1
- package/build/payments/index.js.map +1 -1
- package/build/payments/p2mr.d.ts +178 -0
- package/build/payments/p2mr.d.ts.map +1 -0
- package/build/payments/p2mr.js +555 -0
- package/build/payments/p2mr.js.map +1 -0
- package/build/payments/types.d.ts +11 -1
- package/build/payments/types.d.ts.map +1 -1
- package/build/payments/types.js +1 -0
- package/build/payments/types.js.map +1 -1
- package/build/psbt/bip371.d.ts +30 -0
- package/build/psbt/bip371.d.ts.map +1 -1
- package/build/psbt/bip371.js +80 -15
- package/build/psbt/bip371.js.map +1 -1
- package/build/psbt/psbtutils.d.ts +1 -0
- package/build/psbt/psbtutils.d.ts.map +1 -1
- package/build/psbt/psbtutils.js +2 -0
- package/build/psbt/psbtutils.js.map +1 -1
- package/build/psbt.d.ts.map +1 -1
- package/build/psbt.js +3 -2
- package/build/psbt.js.map +1 -1
- package/build/pubkey.js +1 -1
- package/build/pubkey.js.map +1 -1
- package/build/tsconfig.build.tsbuildinfo +1 -1
- package/documentation/README.md +122 -0
- package/documentation/address.md +820 -0
- package/documentation/block.md +679 -0
- package/documentation/crypto.md +461 -0
- package/documentation/ecc.md +584 -0
- package/documentation/errors.md +656 -0
- package/documentation/io.md +942 -0
- package/documentation/networks.md +625 -0
- package/documentation/p2mr.md +380 -0
- package/documentation/payments.md +1485 -0
- package/documentation/psbt.md +1400 -0
- package/documentation/script.md +730 -0
- package/documentation/taproot.md +670 -0
- package/documentation/transaction.md +943 -0
- package/documentation/types.md +587 -0
- package/documentation/workers.md +1007 -0
- package/eslint.config.js +3 -0
- package/package.json +17 -14
- package/src/address.ts +22 -10
- package/src/index.ts +1 -0
- package/src/io/base58check.ts +1 -35
- package/src/io/base64.ts +5 -0
- package/src/networks.ts +13 -0
- package/src/payments/bip341.ts +36 -1
- package/src/payments/index.ts +4 -0
- package/src/payments/p2mr.ts +660 -0
- package/src/payments/types.ts +12 -0
- package/src/psbt/bip371.ts +84 -13
- package/src/psbt/psbtutils.ts +2 -0
- package/src/psbt.ts +4 -2
- package/src/pubkey.ts +1 -1
- package/test/bitcoin.core.spec.ts +1 -1
- package/test/fixtures/p2mr.json +270 -0
- package/test/integration/taproot.spec.ts +7 -3
- package/test/opnetTestnet.spec.ts +302 -0
- package/test/payments.spec.ts +3 -1
- package/test/psbt.spec.ts +297 -2
- 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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAgB,MAAM,gBAAgB,CAAC;AAC1E,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAGH,WAAW,EACX,oBAAoB,GAEvB,MAAM,aAAa,CAAC;AACrB,OAAO,EACH,cAAc,EAEd,sBAAsB,EACtB,oBAAoB,EACpB,WAAW,EACX,UAAU,GACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAsC,WAAW,EAAqB,MAAM,YAAY,CAAC;AAEhG,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,YAAY,GAAG,IAAI,CAAC;AAE1B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,IAAI;IACb,MAAM,CAAU,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;IAE/B,QAAQ,CAAU;IAClB,KAAK,CAAwB;IAEtC,aAAa,CAAsB;IACnC,UAAU,CAA0B;IACpC,gBAAgB,CAAuB;IACvC,YAAY,CAA0B;IACtC,aAAa,CAA4B;IACzC,YAAY,CAA4B;IACxC,mBAAmB,CAAsB;IAEzC,QAAQ,CAAsB;IAC9B,KAAK,CAAuB;IAC5B,OAAO,CAAsB;IAC7B,OAAO,CAA4B;IACnC,cAAc,CAAsB;IACpC,QAAQ,CAA4B;IAEpC,gBAAgB,GAAG,KAAK,CAAC;IACzB,aAAa,GAAG,KAAK,CAAC;IACtB,eAAe,GAAG,KAAK,CAAC;IACxB,eAAe,GAAG,KAAK,CAAC;IACxB,sBAAsB,GAAG,KAAK,CAAC;IAC/B,gBAAgB,GAAG,KAAK,CAAC;IAEzB,eAAe,CAAqE;IACpF,uBAAuB,GAAG,KAAK,CAAC;IAEhC,oBAAoB,CAA4B;IAChD,4BAA4B,GAAG,KAAK,CAAC;IAErC,SAAS,CAAwB;IACjC,iBAAiB,GAAG,KAAK,CAAC;IAE1B;;;;;;;;;;;;;;;;OAgBG;IACH,YACI,MASC,EACD,IAAkB;QAElB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,IAAI,eAAe,CAAC;QAClD,IAAI,CAAC,KAAK,GAAG;YACT,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,IAAI;YAChC,eAAe,EAAE,IAAI,EAAE,eAAe,IAAI,KAAK;SAClD,CAAC;QAEF,mBAAmB;QACnB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC1C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC;QAEhD,wBAAwB;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACrB,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,IAAI,IAAI;QACJ,OAAO,WAAW,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,IAAI,OAAO;QACP,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;OAKG;IACH,IAAI,IAAI;QACJ,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC9B,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACN,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACN,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,IAAI,aAAa;QACb,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,IAAI,sBAAsB,CAAC;IACzD,CAAC;IAED;;;;;OAKG;IACH,IAAI,OAAO;QACP,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,cAAc,CAAC,UAAmB,EAAE,OAAiB;QACxD,OAAO,IAAI,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,WAAW,CAAC,OAAe,EAAE,OAAiB;QACjD,OAAO,IAAI,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAC,MAAkB,EAAE,OAAiB;QACnD,OAAO,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAa,EAAE,OAAiB;QAC5C,OAAO,IAAI,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,SAAS;QACL,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,IAAI,CAAC,gBAAgB;YACjC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;SACxB,CAAC;IACN,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAChC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC/C,IAAI,OAAO,EAAE,CAAC;oBACV,IAAI,CAAC,eAAe,GAAG;wBACnB,OAAO,EAAE,OAAO,CAAC,OAAO;wBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;wBACtB,IAAI,EAAE,OAAO,CAAC,IAAI;qBACrB,CAAC;gBACN,CAAC;YACL,CAAC;YACD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,uBAAuB;QACnB,IAAI,CAAC,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,0BAA0B;gBAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACtE,IACI,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC;oBAC9B,WAAW,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,YAAY,EAChD,CAAC;oBACC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChE,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;gBAC3D,CAAC;YACL,CAAC;YACD,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IAED,YAAY;QACR,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACvD,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzB,IAAI,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAqB,EAAE,CAAC;YAC1D,CAAC;YACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IAC1B,CAAC;IAED,eAAe;QACX,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACpC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,YAAY;QACR,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC,UAAqB,CAAC;QACtC,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACX,OAAO,QAAQ,CAAC,IAAI,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAY,CAAC;QACpD,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAA2B,CAAC;QAClE,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAe,CAAC;YACnD,MAAM,WAAW,GAAI,YAAY,CAAC,CAAC,CAAY,GAAG,oBAAoB,CAAC;YACvE,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAe,CAAC;YAC7C,MAAM,QAAQ,GAAG,WAAW,CAAC;gBACzB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,WAAW;aACvB,CAAC,CAAC;YACH,OAAO,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAsB,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QACpB,IAAI,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;QAEzB,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,cAAc;QACV,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC;QAC7B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAe,CAAC;QAC9D,OAAO;YACH,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAW;YAC7C,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,aAAa,EAAG,WAAW,CAAC,CAAC,CAAY,GAAG,oBAAoB;SACnE,CAAC;IACN,CAAC;IAED,qBAAqB;QACjB,IAAI,IAAI,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,IAAI,CAAC,mBAAmB,CAAC;QACpC,CAAC;QACD,IACI,IAAI,CAAC,YAAY;YACjB,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK,SAAS;YAC7C,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK,IAAI,EAC1C,CAAC;YACC,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;QAC3C,CAAC;QACD,OAAO,sBAAsB,CAAC;IAClC,CAAC;IAED,eAAe;QACX,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACrC,IAAI,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,WAAW,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,OAAO,EAAE,IAAI,CAAC,aAAa;aAC9B,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAChD,IAAI,CAAC,IAAI;gBAAE,OAAO,SAAS,CAAC;YAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;YAC3C,sDAAsD;YACtD,6CAA6C;YAC7C,MAAM,YAAY,GAAG,MAAM,CAAC;gBACxB,IAAI,UAAU,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;gBAChC,GAAG,IAAI;aACV,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,SAAS;QACL,IAAI,SAAS,GAAe,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAE9C,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACR,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxD,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;YAC9D,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,oBAAoB,EAAE,CAAC;gBACxC,MAAM,IAAI,SAAS,CAAC,yBAAyB,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAC;YAChD,CAAC;YACD,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IACI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI;gBACjC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,EAC/B,CAAC;gBACC,MAAM,IAAI,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9C,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;gBAChC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,UAAU,IAAI,QAAQ,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,SAAS,CAAC,eAAe,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,QAAQ,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,WAAW,CAAC;gBACzB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,OAAO,EAAE,IAAI,CAAC,aAAa;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;gBACtC,MAAM,IAAI,SAAS,CAAC,2BAA2B,CAAC,CAAC;YACrD,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/C,qDAAqD;QACrD,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;gBAClC,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;oBAChE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC;YAED,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzC,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;gBACpD,CAAC;gBAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9E,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,CAAC;gBAC9D,CAAC;YACL,CAAC;YACD,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;gBAC5B,IACI,IAAI,CAAC,MAAM,CAAC,OAAO;oBACnB,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAC9D,CAAC;oBACC,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;gBAC/D,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,wDAAwD;YACxD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,SAAS,CACf,iEAAiE,CACpE,CAAC;YACN,CAAC;YAED,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAe,CAAC;YAC/D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CACf,8CAA8C,YAAY,CAAC,MAAM,mBAAmB,CACvF,CAAC;YACN,CAAC;YAED,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC;gBACvC,MAAM,IAAI,SAAS,CACf,+BAA+B,YAAY,CAAC,MAAM,gBAAgB,CACrE,CAAC;YACN,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;gBACV,MAAM,IAAI,SAAS,CAAC,oCAAoC,CAAC,qBAAqB,CAAC,CAAC;YACpF,CAAC;YAED,MAAM,qBAAqB,GAAG,YAAY,CAAC,CAAC,CAAW,CAAC;YAExD,4BAA4B;YAC5B,IAAI,CAAC,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,SAAS,CAAC,wCAAwC,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,WAAW,GAAG,qBAAqB,GAAG,oBAAoB,CAAC;YACjE,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAe,CAAC;YAEzD,MAAM,QAAQ,GAAG,WAAW,CAAC;gBACzB,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,WAAW;aACvB,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,oBAAoB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAElE,iDAAiD;YACjD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,SAAS,CAAC,uCAAuC,CAAC,CAAC;YACjE,CAAC;QACL,CAAC;IACL,CAAC;;AAGL;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,IAAI,CAAC,CAA4B,EAAE,IAAkB;IACjE,IACI,CAAC,CAAC,CAAC,OAAO;QACV,CAAC,CAAC,CAAC,MAAM;QACT,CAAC,CAAC,CAAC,IAAI;QACP,CAAC,CAAC,CAAC,UAAU;QACb,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EACtC,CAAC;QACC,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,IAAI,CACrB;QACI,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,aAAa,EAAE,CAAC,CAAC,aAAa;QAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;KACrB,EACD,IAAI,CACP,CAAC;IAEF,qDAAqD;IACrD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -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":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EACR,OAAO,EACP,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,MAAM,EACN,SAAS,EACT,OAAO,EACP,cAAc,EACjB,MAAM,aAAa,CAAC;AAErB,eAAO,MAAM,WAAW
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/payments/types.ts"],"names":[],"mappings":"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"}
|
package/build/payments/types.js
CHANGED
|
@@ -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"}
|