@scure/btc-signer 1.8.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -5
- package/index.js +17 -61
- package/index.js.map +1 -1
- package/musig2.d.ts +2 -2
- package/musig2.d.ts.map +1 -1
- package/musig2.js +93 -90
- package/musig2.js.map +1 -1
- package/p2p.d.ts +7 -8
- package/p2p.d.ts.map +1 -1
- package/p2p.js +32 -38
- package/p2p.js.map +1 -1
- package/package.json +33 -103
- package/payment.js +73 -96
- package/payment.js.map +1 -1
- package/psbt.d.ts +224 -224
- package/psbt.d.ts.map +1 -1
- package/psbt.js +58 -63
- package/psbt.js.map +1 -1
- package/script.d.ts +125 -120
- package/script.d.ts.map +1 -1
- package/script.js +46 -146
- package/script.js.map +1 -1
- package/src/musig2.ts +43 -50
- package/src/p2p.ts +28 -40
- package/src/psbt.ts +7 -7
- package/src/script.ts +29 -26
- package/src/transaction.ts +21 -21
- package/src/utils.ts +41 -22
- package/transaction.d.ts +22 -28
- package/transaction.d.ts.map +1 -1
- package/transaction.js +134 -151
- package/transaction.js.map +1 -1
- package/utils.d.ts +11 -5
- package/utils.d.ts.map +1 -1
- package/utils.js +60 -62
- package/utils.js.map +1 -1
- package/utxo.d.ts +45 -45
- package/utxo.d.ts.map +1 -1
- package/utxo.js +62 -58
- package/utxo.js.map +1 -1
- package/_type_test.d.ts +0 -2
- package/_type_test.d.ts.map +0 -1
- package/_type_test.js +0 -59
- package/_type_test.js.map +0 -1
- package/esm/_type_test.d.ts +0 -2
- package/esm/_type_test.d.ts.map +0 -1
- package/esm/_type_test.js +0 -57
- package/esm/_type_test.js.map +0 -1
- package/esm/index.d.ts +0 -22
- package/esm/index.d.ts.map +0 -1
- package/esm/index.js +0 -22
- package/esm/index.js.map +0 -1
- package/esm/musig2.d.ts +0 -148
- package/esm/musig2.d.ts.map +0 -1
- package/esm/musig2.js +0 -404
- package/esm/musig2.js.map +0 -1
- package/esm/p2p.d.ts +0 -38
- package/esm/p2p.d.ts.map +0 -1
- package/esm/p2p.js +0 -156
- package/esm/p2p.js.map +0 -1
- package/esm/package.json +0 -1
- package/esm/payment.d.ts +0 -200
- package/esm/payment.d.ts.map +0 -1
- package/esm/payment.js +0 -697
- package/esm/payment.js.map +0 -1
- package/esm/psbt.d.ts +0 -820
- package/esm/psbt.d.ts.map +0 -1
- package/esm/psbt.js +0 -409
- package/esm/psbt.js.map +0 -1
- package/esm/script.d.ts +0 -170
- package/esm/script.d.ts.map +0 -1
- package/esm/script.js +0 -356
- package/esm/script.js.map +0 -1
- package/esm/transaction.d.ts +0 -172
- package/esm/transaction.d.ts.map +0 -1
- package/esm/transaction.js +0 -1185
- package/esm/transaction.js.map +0 -1
- package/esm/utils.d.ts +0 -35
- package/esm/utils.d.ts.map +0 -1
- package/esm/utils.js +0 -118
- package/esm/utils.js.map +0 -1
- package/esm/utxo.d.ts +0 -198
- package/esm/utxo.d.ts.map +0 -1
- package/esm/utxo.js +0 -461
- package/esm/utxo.js.map +0 -1
- package/src/_type_test.ts +0 -69
- package/src/package.json +0 -3
package/README.md
CHANGED
|
@@ -41,8 +41,6 @@ _Check out all web3 utility libraries:_ [ETH](https://github.com/paulmillr/micro
|
|
|
41
41
|
|
|
42
42
|
> `deno add jsr:@scure/btc-signer`
|
|
43
43
|
|
|
44
|
-
> `deno doc jsr:@scure/btc-signer` # command-line documentation
|
|
45
|
-
|
|
46
44
|
We support all major platforms and runtimes.
|
|
47
45
|
For [Deno](https://deno.land), ensure to use [npm specifier](https://deno.land/manual@v1.28.0/node/npm_specifiers).
|
|
48
46
|
For React Native, you may need a [polyfill for crypto.getRandomValues](https://github.com/LinusU/react-native-get-random-values).
|
|
@@ -89,8 +87,8 @@ BTC has several UTXO types:
|
|
|
89
87
|
|
|
90
88
|
- P2PK: Legacy, from 2010
|
|
91
89
|
- P2PKH, P2SH, P2MS: Classic
|
|
92
|
-
- P2WPKH, P2WSH:
|
|
93
|
-
- P2TR: Taproot
|
|
90
|
+
- P2WPKH, P2WSH: SegWit (signature is removed from tx hash calculation)
|
|
91
|
+
- P2TR: Taproot (schnorr signatures instead of ECDSA)
|
|
94
92
|
|
|
95
93
|
For test examples, the usage is as following:
|
|
96
94
|
|
|
@@ -158,7 +156,11 @@ deepStrictEqual(btc.p2sh(btc.p2wsh(btc.p2pkh(PubKey))), {
|
|
|
158
156
|
|
|
159
157
|
### P2WPKH (Witness Public Key Hash)
|
|
160
158
|
|
|
161
|
-
SegWit V0 version of [P2PKH](#p2pkh-public-key-hash).
|
|
159
|
+
SegWit V0 version of [P2PKH](#p2pkh-public-key-hash).
|
|
160
|
+
In SegWit, signature is removed from tx hash calculation.
|
|
161
|
+
|
|
162
|
+
Uses bech32 address.
|
|
163
|
+
Can't be wrapped in [P2WSH](#p2wsh-witness-script-hash).
|
|
162
164
|
|
|
163
165
|
```ts
|
|
164
166
|
const PubKey = hex.decode('030000000000000000000000000000000000000000000000000000000000000001');
|
|
@@ -196,6 +198,7 @@ deepStrictEqual(btc.p2sh(btc.p2pkh(PubKey)), {
|
|
|
196
198
|
### P2WSH (Witness Script Hash)
|
|
197
199
|
|
|
198
200
|
SegWit V0 version of [P2SH](#p2sh-script-hash).
|
|
201
|
+
In SegWit, signature is removed from tx hash calculation.
|
|
199
202
|
|
|
200
203
|
Required tx input fields to make it spendable: `witnessScript`
|
|
201
204
|
|
package/index.js
CHANGED
|
@@ -1,66 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports._Estimator = exports._cmpBig = exports.SigHash = exports.PSBTCombine = exports.DEFAULT_SEQUENCE = exports.Decimal = exports.bip32Path = exports.TaprootControlBlock = exports._DebugPSBT = exports.WIF = exports.taprootListToTree = exports.sortedMultisig = exports.OutScript = exports.getAddress = exports.combinations = exports.Address = exports._sortPubkeys = exports.utils = exports.selectUTXO = exports.TEST_NETWORK = exports.TAPROOT_UNSPENDABLE_KEY = exports.NETWORK = exports.Transaction = exports.getInputType = exports.ScriptNum = exports.Script = exports.RawWitness = exports.RawTx = exports.OP = exports.MAX_SCRIPT_BYTE_LENGTH = exports.CompactSize = exports.p2wsh = exports.p2wpkh = exports.p2tr_pk = exports.p2tr_ns = exports.p2tr_ms = exports.p2tr = exports.p2sh = exports.p2pkh = exports.p2pk = exports.p2ms = exports.multisig = void 0;
|
|
4
1
|
/*! scure-btc-signer - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
5
|
-
|
|
2
|
+
import { compareBytes, concatBytes, isBytes, pubSchnorr, randomPrivateKeyBytes, taprootTweakPubkey, } from "./utils.js";
|
|
6
3
|
// should multisig be exported as classicMultisig?
|
|
7
4
|
// prettier-ignore
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var script_ts_1 = require("./script.js");
|
|
21
|
-
Object.defineProperty(exports, "CompactSize", { enumerable: true, get: function () { return script_ts_1.CompactSize; } });
|
|
22
|
-
Object.defineProperty(exports, "MAX_SCRIPT_BYTE_LENGTH", { enumerable: true, get: function () { return script_ts_1.MAX_SCRIPT_BYTE_LENGTH; } });
|
|
23
|
-
Object.defineProperty(exports, "OP", { enumerable: true, get: function () { return script_ts_1.OP; } });
|
|
24
|
-
Object.defineProperty(exports, "RawTx", { enumerable: true, get: function () { return script_ts_1.RawTx; } });
|
|
25
|
-
Object.defineProperty(exports, "RawWitness", { enumerable: true, get: function () { return script_ts_1.RawWitness; } });
|
|
26
|
-
Object.defineProperty(exports, "Script", { enumerable: true, get: function () { return script_ts_1.Script; } });
|
|
27
|
-
Object.defineProperty(exports, "ScriptNum", { enumerable: true, get: function () { return script_ts_1.ScriptNum; } });
|
|
28
|
-
var transaction_ts_1 = require("./transaction.js");
|
|
29
|
-
Object.defineProperty(exports, "getInputType", { enumerable: true, get: function () { return transaction_ts_1.getInputType; } });
|
|
30
|
-
Object.defineProperty(exports, "Transaction", { enumerable: true, get: function () { return transaction_ts_1.Transaction; } });
|
|
31
|
-
var utils_ts_2 = require("./utils.js");
|
|
32
|
-
Object.defineProperty(exports, "NETWORK", { enumerable: true, get: function () { return utils_ts_2.NETWORK; } });
|
|
33
|
-
Object.defineProperty(exports, "TAPROOT_UNSPENDABLE_KEY", { enumerable: true, get: function () { return utils_ts_2.TAPROOT_UNSPENDABLE_KEY; } });
|
|
34
|
-
Object.defineProperty(exports, "TEST_NETWORK", { enumerable: true, get: function () { return utils_ts_2.TEST_NETWORK; } });
|
|
35
|
-
var utxo_ts_1 = require("./utxo.js");
|
|
36
|
-
Object.defineProperty(exports, "selectUTXO", { enumerable: true, get: function () { return utxo_ts_1.selectUTXO; } });
|
|
37
|
-
exports.utils = {
|
|
38
|
-
isBytes: utils_ts_1.isBytes,
|
|
39
|
-
concatBytes: utils_ts_1.concatBytes,
|
|
40
|
-
compareBytes: utils_ts_1.compareBytes,
|
|
41
|
-
pubSchnorr: utils_ts_1.pubSchnorr,
|
|
42
|
-
randomPrivateKeyBytes: utils_ts_1.randomPrivateKeyBytes,
|
|
43
|
-
taprootTweakPubkey: utils_ts_1.taprootTweakPubkey,
|
|
5
|
+
export { multisig, p2ms, p2pk, p2pkh, p2sh, p2tr, p2tr_ms, p2tr_ns, p2tr_pk, p2wpkh, p2wsh } from "./payment.js";
|
|
6
|
+
export { CompactSize, MAX_SCRIPT_BYTE_LENGTH, OP, RawTx, RawWitness, Script, ScriptNum, } from "./script.js";
|
|
7
|
+
export { getInputType, Transaction } from "./transaction.js";
|
|
8
|
+
export { NETWORK, TAPROOT_UNSPENDABLE_KEY, TEST_NETWORK } from "./utils.js";
|
|
9
|
+
export { selectUTXO } from "./utxo.js";
|
|
10
|
+
export const utils = {
|
|
11
|
+
isBytes,
|
|
12
|
+
concatBytes,
|
|
13
|
+
compareBytes,
|
|
14
|
+
pubSchnorr,
|
|
15
|
+
randomPrivateKeyBytes,
|
|
16
|
+
taprootTweakPubkey,
|
|
44
17
|
};
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
Object.defineProperty(exports, "getAddress", { enumerable: true, get: function () { return payment_ts_2.getAddress; } });
|
|
50
|
-
Object.defineProperty(exports, "OutScript", { enumerable: true, get: function () { return payment_ts_2.OutScript; } });
|
|
51
|
-
Object.defineProperty(exports, "sortedMultisig", { enumerable: true, get: function () { return payment_ts_2.sortedMultisig; } });
|
|
52
|
-
Object.defineProperty(exports, "taprootListToTree", { enumerable: true, get: function () { return payment_ts_2.taprootListToTree; } });
|
|
53
|
-
Object.defineProperty(exports, "WIF", { enumerable: true, get: function () { return payment_ts_2.WIF; } });
|
|
54
|
-
var psbt_ts_1 = require("./psbt.js"); // remove
|
|
55
|
-
Object.defineProperty(exports, "_DebugPSBT", { enumerable: true, get: function () { return psbt_ts_1._DebugPSBT; } });
|
|
56
|
-
Object.defineProperty(exports, "TaprootControlBlock", { enumerable: true, get: function () { return psbt_ts_1.TaprootControlBlock; } });
|
|
57
|
-
var transaction_ts_2 = require("./transaction.js"); // remove
|
|
58
|
-
Object.defineProperty(exports, "bip32Path", { enumerable: true, get: function () { return transaction_ts_2.bip32Path; } });
|
|
59
|
-
Object.defineProperty(exports, "Decimal", { enumerable: true, get: function () { return transaction_ts_2.Decimal; } });
|
|
60
|
-
Object.defineProperty(exports, "DEFAULT_SEQUENCE", { enumerable: true, get: function () { return transaction_ts_2.DEFAULT_SEQUENCE; } });
|
|
61
|
-
Object.defineProperty(exports, "PSBTCombine", { enumerable: true, get: function () { return transaction_ts_2.PSBTCombine; } });
|
|
62
|
-
Object.defineProperty(exports, "SigHash", { enumerable: true, get: function () { return transaction_ts_2.SigHash; } });
|
|
63
|
-
var utxo_ts_2 = require("./utxo.js");
|
|
64
|
-
Object.defineProperty(exports, "_cmpBig", { enumerable: true, get: function () { return utxo_ts_2._cmpBig; } });
|
|
65
|
-
Object.defineProperty(exports, "_Estimator", { enumerable: true, get: function () { return utxo_ts_2._Estimator; } });
|
|
18
|
+
export { _sortPubkeys, Address, combinations, getAddress, OutScript, sortedMultisig, taprootListToTree, WIF, } from "./payment.js"; // remove
|
|
19
|
+
export { _DebugPSBT, TaprootControlBlock } from "./psbt.js"; // remove
|
|
20
|
+
export { bip32Path, Decimal, DEFAULT_SEQUENCE, PSBTCombine, SigHash } from "./transaction.js"; // remove
|
|
21
|
+
export { _cmpBig, _Estimator } from "./utxo.js";
|
|
66
22
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,OAAO,EACL,YAAY,EACZ,WAAW,EACX,OAAO,EACP,UAAU,EACV,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AACpB,kDAAkD;AAClD,kBAAkB;AAClB,OAAO,EACL,QAAQ,EACR,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EACxE,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,EAAE,EACF,KAAK,EACL,UAAU,EACV,MAAM,EACN,SAAS,GACV,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,OAAO;IACP,WAAW;IACX,YAAY;IACZ,UAAU;IACV,qBAAqB;IACrB,kBAAkB;CACnB,CAAC;AAEF,OAAO,EACL,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,GAAG,GACJ,MAAM,cAAc,CAAC,CAAC,SAAS;AAGhC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC,CAAC,SAAS;AACtE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC,CAAC,SAAS;AACxG,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC"}
|
package/musig2.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export declare function sortKeys(publicKeys: Uint8Array[]): Uint8Array[];
|
|
|
38
38
|
* @throws {InvalidContributionErr} If any of the public keys are invalid and cannot be processed.
|
|
39
39
|
*/
|
|
40
40
|
export declare function keyAggregate(publicKeys: Uint8Array[], tweaks?: Uint8Array[], isXonly?: boolean[]): {
|
|
41
|
-
aggPublicKey: import("@noble/curves/abstract/weierstrass").
|
|
41
|
+
aggPublicKey: import("@noble/curves/abstract/weierstrass.js").WeierstrassPoint<bigint>;
|
|
42
42
|
gAcc: bigint;
|
|
43
43
|
tweakAcc: bigint;
|
|
44
44
|
};
|
|
@@ -47,7 +47,7 @@ export declare function keyAggregate(publicKeys: Uint8Array[], tweaks?: Uint8Arr
|
|
|
47
47
|
* @param ctx The result of the keyAggregate function.
|
|
48
48
|
* @returns The aggregate public key as a byte array.
|
|
49
49
|
*/
|
|
50
|
-
export declare function keyAggExport(ctx: ReturnType<typeof keyAggregate>): Uint8Array
|
|
50
|
+
export declare function keyAggExport(ctx: ReturnType<typeof keyAggregate>): Uint8Array;
|
|
51
51
|
/**
|
|
52
52
|
* Generates a nonce pair (public and secret) for MuSig2 signing.
|
|
53
53
|
* @param publicKey The individual public key of the signer (Uint8Array).
|
package/musig2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"musig2.d.ts","sourceRoot":"","sources":["src/musig2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"musig2.d.ts","sourceRoot":"","sources":["src/musig2.ts"],"names":[],"mappings":"AAkBA;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAChE;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG;IAAE,WAAW,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,CAAC;AAC3E;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;CAInC;AA6CD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE/D;AASD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,UAAU,EAAE,CAG/D;AA0BD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,UAAU,EAAE,EACxB,MAAM,GAAE,UAAU,EAAO,EACzB,OAAO,GAAE,OAAO,EAAO;;;;EA+BxB;AACD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,GAAG,UAAU,CAE7E;AA+BD;;;;;;;;;;GAUG;AACH,wBAAgB,QAAQ,CACtB,SAAS,EAAE,UAAU,EACrB,SAAS,CAAC,EAAE,UAAU,EACtB,YAAY,GAAE,UAA8B,EAC5C,GAAG,CAAC,EAAE,UAAU,EAChB,OAAO,GAAE,UAA8B,EACvC,IAAI,GAAE,UAA4B,GACjC,MAAM,CAoBR;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,EAAE,GAAG,UAAU,CAgBlE;AAID,qBAAa,OAAO;IAClB,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,CAAC,CAAQ;IACjB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,CAAC,CAAS;IAClB,OAAO,CAAC,CAAC,CAAQ;IACjB,OAAO,CAAC,CAAC,CAAS;IAClB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,CAAC,CAAa;IACtB,OAAO,CAAC,SAAS,CAAa;IAC9B;;;;;;;;;;OAUG;gBAED,QAAQ,EAAE,UAAU,EACpB,UAAU,EAAE,UAAU,EAAE,EACxB,GAAG,EAAE,UAAU,EACf,MAAM,GAAE,UAAU,EAAO,EACzB,OAAO,GAAE,OAAO,EAAO;IAuBzB;;;;;;OAMG;IACH,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,wBAAwB;IAmBhC;;;;;;;;OAQG;IACH,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,UAAQ,GAAG,UAAU;IAkC/E;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAerF;;;;;;OAMG;IACH,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU;CAarD;AAmBD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,aAAa,EAAE,UAAU,EACzB,UAAU,EAAE,UAAU,EAAE,EACxB,GAAG,EAAE,UAAU,EACf,MAAM,GAAE,UAAU,EAAO,EACzB,OAAO,GAAE,OAAO,EAAO,EACvB,IAAI,CAAC,EAAE,UAAU,EACjB,QAAQ,UAAQ,GACf,QAAQ,CAmBV"}
|
package/musig2.js
CHANGED
|
@@ -1,56 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.keyAggregate = keyAggregate;
|
|
7
|
-
exports.keyAggExport = keyAggExport;
|
|
8
|
-
exports.nonceGen = nonceGen;
|
|
9
|
-
exports.nonceAggregate = nonceAggregate;
|
|
10
|
-
exports.deterministicSign = deterministicSign;
|
|
11
|
-
const modular_js_1 = require("@noble/curves/abstract/modular.js");
|
|
12
|
-
const utils_js_1 = require("@noble/curves/abstract/utils.js");
|
|
13
|
-
const secp256k1_js_1 = require("@noble/curves/secp256k1.js");
|
|
14
|
-
const utils_js_2 = require("@noble/hashes/utils.js");
|
|
15
|
-
const P = require("micro-packed");
|
|
16
|
-
const utils_ts_1 = require("./utils.js");
|
|
1
|
+
import { schnorr, secp256k1 } from '@noble/curves/secp256k1.js';
|
|
2
|
+
import { aInRange, concatBytes, equalBytes, numberToBytesBE } from '@noble/curves/utils.js';
|
|
3
|
+
import { abytes, anumber, randomBytes } from '@noble/hashes/utils.js';
|
|
4
|
+
import * as P from 'micro-packed';
|
|
5
|
+
import { compareBytes, hasEven } from "./utils.js";
|
|
17
6
|
/**
|
|
18
7
|
* Represents an error indicating an invalid contribution from a signer.
|
|
19
8
|
* This allows pointing out which participant is malicious and what specifically is wrong.
|
|
20
9
|
*/
|
|
21
|
-
class InvalidContributionErr extends Error {
|
|
10
|
+
export class InvalidContributionErr extends Error {
|
|
11
|
+
idx; // Indice of participant
|
|
22
12
|
constructor(idx, m) {
|
|
23
13
|
super(m);
|
|
24
14
|
this.idx = idx;
|
|
25
15
|
}
|
|
26
16
|
}
|
|
27
|
-
exports.InvalidContributionErr = InvalidContributionErr;
|
|
28
17
|
// Utils
|
|
29
|
-
const { taggedHash, pointToBytes } =
|
|
30
|
-
const Point =
|
|
31
|
-
const
|
|
18
|
+
const { taggedHash, pointToBytes } = schnorr.utils;
|
|
19
|
+
const Point = secp256k1.Point;
|
|
20
|
+
const Fn = Point.Fn;
|
|
21
|
+
const PUBKEY_LEN = secp256k1.lengths.publicKey;
|
|
32
22
|
const ZERO = new Uint8Array(PUBKEY_LEN); // Compressed zero point
|
|
33
|
-
const SECP_N = secp256k1_js_1.secp256k1.CURVE.n;
|
|
34
23
|
// Encoding
|
|
35
24
|
// TODO: re-use in PSBT?
|
|
36
25
|
const compressed = P.apply(P.bytes(33), {
|
|
37
|
-
decode: (p) => (isZero(p) ? ZERO : p.
|
|
38
|
-
encode: (b) => (
|
|
26
|
+
decode: (p) => (isZero(p) ? ZERO : p.toBytes(true)),
|
|
27
|
+
encode: (b) => (equalBytes(b, ZERO) ? Point.ZERO : Point.fromBytes(b)),
|
|
39
28
|
});
|
|
40
29
|
const scalar = P.validate(P.U256BE, (n) => {
|
|
41
|
-
|
|
30
|
+
aInRange('n', n, 1n, Fn.ORDER);
|
|
42
31
|
return n;
|
|
43
32
|
});
|
|
44
33
|
const PubNonce = P.struct({ R1: compressed, R2: compressed });
|
|
45
34
|
const SecretNonce = P.struct({ k1: scalar, k2: scalar, publicKey: P.bytes(PUBKEY_LEN) });
|
|
46
35
|
function abytesOptional(b, ...lengths) {
|
|
47
36
|
if (b !== undefined)
|
|
48
|
-
|
|
37
|
+
abytes(b, ...lengths);
|
|
49
38
|
}
|
|
50
39
|
function abytesArray(lst, ...lengths) {
|
|
51
40
|
if (!Array.isArray(lst))
|
|
52
41
|
throw new Error('expected array');
|
|
53
|
-
lst.forEach((i) =>
|
|
42
|
+
lst.forEach((i) => abytes(i, ...lengths));
|
|
54
43
|
}
|
|
55
44
|
function aXonly(lst) {
|
|
56
45
|
if (!Array.isArray(lst))
|
|
@@ -60,12 +49,11 @@ function aXonly(lst) {
|
|
|
60
49
|
throw new Error('expected boolean in xOnly array, got' + i + '(' + j + ')');
|
|
61
50
|
});
|
|
62
51
|
}
|
|
63
|
-
const
|
|
64
|
-
const
|
|
65
|
-
const evenScalar = (p, n) => (p.hasEvenY() ? n : modN(-n));
|
|
52
|
+
const taggedInt = (tag, ...messages) => Fn.create(Fn.fromBytes(taggedHash(tag, ...messages), true));
|
|
53
|
+
const evenScalar = (p, n) => (hasEven(p.y) ? n : Fn.neg(n));
|
|
66
54
|
// Short utility for compat with reference implementation
|
|
67
|
-
function IndividualPubkey(seckey) {
|
|
68
|
-
return
|
|
55
|
+
export function IndividualPubkey(seckey) {
|
|
56
|
+
return secp256k1.getPublicKey(seckey, true);
|
|
69
57
|
}
|
|
70
58
|
// Same, but returns Point
|
|
71
59
|
function mulBase(n) {
|
|
@@ -80,15 +68,15 @@ function isZero(point) {
|
|
|
80
68
|
* @returns A new array containing the sorted public keys.
|
|
81
69
|
* @throws {Error} If the input is not an array or if any element is not a Uint8Array of the correct length.
|
|
82
70
|
*/
|
|
83
|
-
function sortKeys(publicKeys) {
|
|
71
|
+
export function sortKeys(publicKeys) {
|
|
84
72
|
abytesArray(publicKeys, PUBKEY_LEN);
|
|
85
|
-
return publicKeys.sort(
|
|
73
|
+
return publicKeys.sort(compareBytes);
|
|
86
74
|
}
|
|
87
75
|
// Finds second distinct key (to make coefficient 1)
|
|
88
76
|
function getSecondKey(publicKeys) {
|
|
89
77
|
abytesArray(publicKeys, PUBKEY_LEN);
|
|
90
78
|
for (let j = 1; j < publicKeys.length; j++)
|
|
91
|
-
if (!
|
|
79
|
+
if (!equalBytes(publicKeys[j], publicKeys[0]))
|
|
92
80
|
return publicKeys[j];
|
|
93
81
|
return ZERO;
|
|
94
82
|
}
|
|
@@ -97,9 +85,9 @@ function keyAggL(publicKeys) {
|
|
|
97
85
|
return taggedHash('KeyAgg list', ...publicKeys);
|
|
98
86
|
}
|
|
99
87
|
function keyAggCoeffInternal(publicKey1, publicKey2, L) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (
|
|
88
|
+
abytes(publicKey1, PUBKEY_LEN);
|
|
89
|
+
abytes(publicKey2, PUBKEY_LEN);
|
|
90
|
+
if (equalBytes(publicKey1, publicKey2))
|
|
103
91
|
return 1n;
|
|
104
92
|
return taggedInt('KeyAgg coefficient', L, publicKey1);
|
|
105
93
|
}
|
|
@@ -112,7 +100,7 @@ function keyAggCoeffInternal(publicKey1, publicKey2, L) {
|
|
|
112
100
|
* @throws {Error} If the input is invalid, such as non array publicKeys, tweaks and isXonly array length not matching.
|
|
113
101
|
* @throws {InvalidContributionErr} If any of the public keys are invalid and cannot be processed.
|
|
114
102
|
*/
|
|
115
|
-
function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
|
|
103
|
+
export function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
|
|
116
104
|
abytesArray(publicKeys, PUBKEY_LEN);
|
|
117
105
|
abytesArray(tweaks, 32);
|
|
118
106
|
if (tweaks.length !== isXonly.length)
|
|
@@ -124,25 +112,24 @@ function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
|
|
|
124
112
|
for (let i = 0; i < publicKeys.length; i++) {
|
|
125
113
|
let Pi;
|
|
126
114
|
try {
|
|
127
|
-
Pi = Point.
|
|
115
|
+
Pi = Point.fromBytes(publicKeys[i]);
|
|
128
116
|
}
|
|
129
117
|
catch (error) {
|
|
130
118
|
throw new InvalidContributionErr(i, 'pubkey');
|
|
131
119
|
}
|
|
132
120
|
aggPublicKey = aggPublicKey.add(Pi.multiply(keyAggCoeffInternal(publicKeys[i], pk2, L)));
|
|
133
121
|
}
|
|
134
|
-
let gAcc =
|
|
135
|
-
let tweakAcc =
|
|
122
|
+
let gAcc = Fn.ONE;
|
|
123
|
+
let tweakAcc = Fn.ZERO;
|
|
136
124
|
// Apply tweaks
|
|
137
125
|
for (let i = 0; i < tweaks.length; i++) {
|
|
138
|
-
const g = isXonly[i] && !aggPublicKey.
|
|
139
|
-
const t =
|
|
140
|
-
(0, utils_js_1.aInRange)('tweak', t, 0n, SECP_N);
|
|
126
|
+
const g = isXonly[i] && !hasEven(aggPublicKey.y) ? Fn.neg(Fn.ONE) : Fn.ONE;
|
|
127
|
+
const t = Fn.fromBytes(tweaks[i]);
|
|
141
128
|
aggPublicKey = aggPublicKey.multiply(g).add(mulBase(t));
|
|
142
129
|
if (isZero(aggPublicKey))
|
|
143
130
|
throw new Error('The result of tweaking cannot be infinity');
|
|
144
|
-
gAcc =
|
|
145
|
-
tweakAcc =
|
|
131
|
+
gAcc = Fn.mul(g, gAcc);
|
|
132
|
+
tweakAcc = Fn.add(t, Fn.mul(g, tweakAcc));
|
|
146
133
|
}
|
|
147
134
|
return { aggPublicKey, gAcc, tweakAcc };
|
|
148
135
|
}
|
|
@@ -151,7 +138,7 @@ function keyAggregate(publicKeys, tweaks = [], isXonly = []) {
|
|
|
151
138
|
* @param ctx The result of the keyAggregate function.
|
|
152
139
|
* @returns The aggregate public key as a byte array.
|
|
153
140
|
*/
|
|
154
|
-
function keyAggExport(ctx) {
|
|
141
|
+
export function keyAggExport(ctx) {
|
|
155
142
|
return pointToBytes(ctx.aggPublicKey);
|
|
156
143
|
}
|
|
157
144
|
function aux(secret, rand) {
|
|
@@ -163,7 +150,7 @@ function aux(secret, rand) {
|
|
|
163
150
|
res[i] = secret[i] ^ rand2[i];
|
|
164
151
|
return res;
|
|
165
152
|
}
|
|
166
|
-
const nonceHash = (rand, publicKey, aggPublicKey, i, msgPrefixed, extraIn) => taggedInt('MuSig/nonce', rand, new Uint8Array([publicKey.length]), publicKey, new Uint8Array([aggPublicKey.length]), aggPublicKey, msgPrefixed,
|
|
153
|
+
const nonceHash = (rand, publicKey, aggPublicKey, i, msgPrefixed, extraIn) => taggedInt('MuSig/nonce', rand, new Uint8Array([publicKey.length]), publicKey, new Uint8Array([aggPublicKey.length]), aggPublicKey, msgPrefixed, numberToBytesBE(extraIn.length, 4), extraIn, new Uint8Array([i]));
|
|
167
154
|
/**
|
|
168
155
|
* Generates a nonce pair (public and secret) for MuSig2 signing.
|
|
169
156
|
* @param publicKey The individual public key of the signer (Uint8Array).
|
|
@@ -175,18 +162,20 @@ const nonceHash = (rand, publicKey, aggPublicKey, i, msgPrefixed, extraIn) => ta
|
|
|
175
162
|
* @returns An object containing the public and secret nonces.
|
|
176
163
|
* @throws {Error} If the input is invalid, such as non array publicKey, secretKey, aggPublicKey.
|
|
177
164
|
*/
|
|
178
|
-
function nonceGen(publicKey, secretKey, aggPublicKey = new Uint8Array(0), msg, extraIn = new Uint8Array(0), rand =
|
|
179
|
-
|
|
165
|
+
export function nonceGen(publicKey, secretKey, aggPublicKey = new Uint8Array(0), msg, extraIn = new Uint8Array(0), rand = randomBytes(32)) {
|
|
166
|
+
abytes(publicKey, PUBKEY_LEN);
|
|
180
167
|
abytesOptional(secretKey, 32);
|
|
181
|
-
|
|
168
|
+
abytes(aggPublicKey);
|
|
169
|
+
if (![0, 32].includes(aggPublicKey.length))
|
|
170
|
+
throw new Error('wrong aggPublicKey');
|
|
182
171
|
abytesOptional(msg);
|
|
183
|
-
|
|
184
|
-
|
|
172
|
+
abytes(extraIn);
|
|
173
|
+
abytes(rand, 32);
|
|
185
174
|
if (secretKey !== undefined)
|
|
186
175
|
rand = aux(secretKey, rand);
|
|
187
176
|
const msgPrefixed = msg !== undefined
|
|
188
|
-
?
|
|
189
|
-
:
|
|
177
|
+
? concatBytes(Uint8Array.of(1), numberToBytesBE(msg.length, 8), msg)
|
|
178
|
+
: Uint8Array.of(0);
|
|
190
179
|
const k1 = nonceHash(rand, publicKey, aggPublicKey, 0, msgPrefixed, extraIn);
|
|
191
180
|
const k2 = nonceHash(rand, publicKey, aggPublicKey, 1, msgPrefixed, extraIn);
|
|
192
181
|
return {
|
|
@@ -201,7 +190,7 @@ function nonceGen(publicKey, secretKey, aggPublicKey = new Uint8Array(0), msg, e
|
|
|
201
190
|
* @throws {Error} If the input is not an array or if any element is not a Uint8Array of the correct length.
|
|
202
191
|
* @throws {InvalidContributionErr} If any of the public nonces are invalid and cannot be processed.
|
|
203
192
|
*/
|
|
204
|
-
function nonceAggregate(pubNonces) {
|
|
193
|
+
export function nonceAggregate(pubNonces) {
|
|
205
194
|
abytesArray(pubNonces, 66);
|
|
206
195
|
let R1 = Point.ZERO;
|
|
207
196
|
let R2 = Point.ZERO;
|
|
@@ -222,7 +211,18 @@ function nonceAggregate(pubNonces) {
|
|
|
222
211
|
}
|
|
223
212
|
// Class allows us re-use pre-computed stuff
|
|
224
213
|
// NOTE: it would be nice to aggregate nonce in construdctor, but there is test that passes already aggregated nonce here.
|
|
225
|
-
class Session {
|
|
214
|
+
export class Session {
|
|
215
|
+
publicKeys;
|
|
216
|
+
Q;
|
|
217
|
+
gAcc;
|
|
218
|
+
tweakAcc;
|
|
219
|
+
b;
|
|
220
|
+
R;
|
|
221
|
+
e;
|
|
222
|
+
tweaks;
|
|
223
|
+
isXonly;
|
|
224
|
+
L;
|
|
225
|
+
secondKey;
|
|
226
226
|
/**
|
|
227
227
|
* Constructor for the Session class.
|
|
228
228
|
* It precomputes and stores values derived from the aggregate nonce, public keys,
|
|
@@ -238,7 +238,7 @@ class Session {
|
|
|
238
238
|
abytesArray(publicKeys, 33);
|
|
239
239
|
abytesArray(tweaks, 32);
|
|
240
240
|
aXonly(isXonly);
|
|
241
|
-
|
|
241
|
+
abytes(msg);
|
|
242
242
|
if (tweaks.length !== isXonly.length)
|
|
243
243
|
throw new Error('The tweaks and isXonly arrays must have the same length');
|
|
244
244
|
const { aggPublicKey, gAcc, tweakAcc } = keyAggregate(publicKeys, tweaks, isXonly);
|
|
@@ -265,25 +265,25 @@ class Session {
|
|
|
265
265
|
*/
|
|
266
266
|
getSessionKeyAggCoeff(P) {
|
|
267
267
|
const { publicKeys } = this;
|
|
268
|
-
const pk = P.
|
|
269
|
-
const found = publicKeys.some((p) =>
|
|
268
|
+
const pk = P.toBytes(true);
|
|
269
|
+
const found = publicKeys.some((p) => equalBytes(p, pk));
|
|
270
270
|
if (!found)
|
|
271
271
|
throw new Error("The signer's pubkey must be included in the list of pubkeys");
|
|
272
272
|
return keyAggCoeffInternal(pk, this.secondKey, this.L);
|
|
273
273
|
}
|
|
274
274
|
partialSigVerifyInternal(partialSig, publicNonce, publicKey) {
|
|
275
275
|
const { Q, gAcc, b, R, e } = this;
|
|
276
|
-
const s = (
|
|
277
|
-
if (s
|
|
276
|
+
const s = Fn.fromBytes(partialSig, true);
|
|
277
|
+
if (!Fn.isValid(s))
|
|
278
278
|
return false;
|
|
279
279
|
const { R1, R2 } = PubNonce.decode(publicNonce);
|
|
280
280
|
const Re_s_ = R1.add(R2.multiply(b));
|
|
281
|
-
const Re_s = R.
|
|
282
|
-
const P = Point.
|
|
281
|
+
const Re_s = hasEven(R.y) ? Re_s_ : Re_s_.negate();
|
|
282
|
+
const P = Point.fromBytes(publicKey);
|
|
283
283
|
const a = this.getSessionKeyAggCoeff(P);
|
|
284
|
-
const g =
|
|
284
|
+
const g = Fn.mul(evenScalar(Q, 1n), gAcc);
|
|
285
285
|
const left = mulBase(s);
|
|
286
|
-
const right = Re_s.add(P.multiply(
|
|
286
|
+
const right = Re_s.add(P.multiply(Fn.mul(e, Fn.mul(a, g))));
|
|
287
287
|
return left.equals(right);
|
|
288
288
|
}
|
|
289
289
|
/**
|
|
@@ -296,7 +296,7 @@ class Session {
|
|
|
296
296
|
* @throws {Error} If the input is invalid, such as wrong array sizes, invalid nonce or secret key.
|
|
297
297
|
*/
|
|
298
298
|
sign(secretNonce, secret, fastSign = false) {
|
|
299
|
-
|
|
299
|
+
abytes(secret, 32);
|
|
300
300
|
if (typeof fastSign !== 'boolean')
|
|
301
301
|
throw new Error('expected boolean');
|
|
302
302
|
const { Q, gAcc, b, R, e } = this;
|
|
@@ -304,21 +304,25 @@ class Session {
|
|
|
304
304
|
// zero-out the first 64 bytes of secretNonce so it cannot be reused
|
|
305
305
|
// TODO: this was in reference implementation, but feels very broken. Modifying input arguments is pretty bad.
|
|
306
306
|
secretNonce.fill(0, 0, 64);
|
|
307
|
-
(
|
|
308
|
-
|
|
307
|
+
if (!Fn.isValid(k1_))
|
|
308
|
+
throw new Error('wrong k1');
|
|
309
|
+
if (!Fn.isValid(k2_))
|
|
310
|
+
throw new Error('wrong k1');
|
|
309
311
|
const k1 = evenScalar(R, k1_);
|
|
310
312
|
const k2 = evenScalar(R, k2_);
|
|
311
|
-
const d_ =
|
|
312
|
-
(
|
|
313
|
+
const d_ = Fn.fromBytes(secret);
|
|
314
|
+
if (Fn.is0(d_))
|
|
315
|
+
throw new Error('wrong d_');
|
|
313
316
|
const P = mulBase(d_);
|
|
314
|
-
const pk = P.
|
|
315
|
-
if (!
|
|
317
|
+
const pk = P.toBytes(true);
|
|
318
|
+
if (!equalBytes(pk, originalPk))
|
|
316
319
|
throw new Error('Public key does not match nonceGen argument');
|
|
317
320
|
const a = this.getSessionKeyAggCoeff(P);
|
|
318
321
|
const g = evenScalar(Q, 1n);
|
|
319
|
-
const d =
|
|
320
|
-
|
|
321
|
-
const
|
|
322
|
+
const d = Fn.mul(g, Fn.mul(gAcc, d_));
|
|
323
|
+
/// k1 + (b*k2) + (e*a*d)
|
|
324
|
+
const s = Fn.add(k1, Fn.add(Fn.mul(b, k2), Fn.mul(e, Fn.mul(a, d))));
|
|
325
|
+
const partialSig = Fn.toBytes(s);
|
|
322
326
|
// Skip validation in fast-sign mode
|
|
323
327
|
if (!fastSign) {
|
|
324
328
|
const publicNonce = PubNonce.encode({
|
|
@@ -344,12 +348,12 @@ class Session {
|
|
|
344
348
|
*/
|
|
345
349
|
partialSigVerify(partialSig, pubNonces, i) {
|
|
346
350
|
const { publicKeys, tweaks, isXonly } = this;
|
|
347
|
-
|
|
351
|
+
abytes(partialSig, 32);
|
|
348
352
|
abytesArray(pubNonces, 66);
|
|
349
353
|
abytesArray(publicKeys, PUBKEY_LEN);
|
|
350
354
|
abytesArray(tweaks, 32);
|
|
351
355
|
aXonly(isXonly);
|
|
352
|
-
|
|
356
|
+
anumber(i);
|
|
353
357
|
if (pubNonces.length !== publicKeys.length)
|
|
354
358
|
throw new Error('The pubNonces and publicKeys arrays must have the same length');
|
|
355
359
|
if (tweaks.length !== isXonly.length)
|
|
@@ -370,18 +374,17 @@ class Session {
|
|
|
370
374
|
const { Q, tweakAcc, R, e } = this;
|
|
371
375
|
let s = 0n;
|
|
372
376
|
for (let i = 0; i < partialSigs.length; i++) {
|
|
373
|
-
const si =
|
|
374
|
-
if (si
|
|
377
|
+
const si = Fn.fromBytes(partialSigs[i], true);
|
|
378
|
+
if (!Fn.isValid(si))
|
|
375
379
|
throw new InvalidContributionErr(i, 'psig');
|
|
376
|
-
s =
|
|
380
|
+
s = Fn.add(s, si);
|
|
377
381
|
}
|
|
378
382
|
const g = evenScalar(Q, 1n);
|
|
379
|
-
s =
|
|
380
|
-
return
|
|
383
|
+
s = Fn.add(s, Fn.mul(e, Fn.mul(g, tweakAcc))); // s + e * g * tweakAcc
|
|
384
|
+
return concatBytes(pointToBytes(R), Fn.toBytes(s));
|
|
381
385
|
}
|
|
382
386
|
}
|
|
383
|
-
|
|
384
|
-
const deterministicNonceHash = (secret, aggOtherNonce, aggPublicKey, msg, i) => taggedInt('MuSig/deterministic/nonce', secret, aggOtherNonce, aggPublicKey, (0, utils_js_1.numberToBytesBE)(msg.length, 8), msg, new Uint8Array([i]));
|
|
387
|
+
const deterministicNonceHash = (secret, aggOtherNonce, aggPublicKey, msg, i) => taggedInt('MuSig/deterministic/nonce', secret, aggOtherNonce, aggPublicKey, numberToBytesBE(msg.length, 8), msg, new Uint8Array([i]));
|
|
385
388
|
/**
|
|
386
389
|
* Generates a nonce pair and partial signature deterministically for a single signer.
|
|
387
390
|
* @param secret The secret key of the signer (Uint8Array).
|
|
@@ -393,12 +396,12 @@ const deterministicNonceHash = (secret, aggOtherNonce, aggPublicKey, msg, i) =>
|
|
|
393
396
|
* @param rand Optional extra randomness (Uint8Array).
|
|
394
397
|
* @returns An object containing the public nonce and partial signature.
|
|
395
398
|
*/
|
|
396
|
-
function deterministicSign(secret, aggOtherNonce, publicKeys, msg, tweaks = [], isXonly = [], rand, fastSign = false) {
|
|
397
|
-
|
|
398
|
-
|
|
399
|
+
export function deterministicSign(secret, aggOtherNonce, publicKeys, msg, tweaks = [], isXonly = [], rand, fastSign = false) {
|
|
400
|
+
abytes(secret, 32);
|
|
401
|
+
abytes(aggOtherNonce, 66);
|
|
399
402
|
abytesArray(publicKeys, PUBKEY_LEN);
|
|
400
403
|
abytesArray(tweaks, 32);
|
|
401
|
-
|
|
404
|
+
abytes(msg);
|
|
402
405
|
abytesOptional(rand);
|
|
403
406
|
const sk = rand !== undefined ? aux(secret, rand) : secret;
|
|
404
407
|
const aggPublicKey = keyAggExport(keyAggregate(publicKeys, tweaks, isXonly));
|
package/musig2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"musig2.js","sourceRoot":"","sources":["src/musig2.ts"],"names":[],"mappings":";;;AAyFA,4CAEC;AAeD,4BAGC;AAmCD,oCAmCC;AAMD,oCAEC;AA0CD,4BA0BC;AASD,wCAgBC;AA+MD,8CA4BC;AAngBD,kEAAwD;AACxD,8DAMyC;AACzC,6DAAgE;AAChE,qDAAsE;AACtE,kCAAkC;AAClC,yCAA0C;AAsB1C;;;GAGG;AACH,MAAa,sBAAuB,SAAQ,KAAK;IAE/C,YAAY,GAAW,EAAE,CAAS;QAChC,KAAK,CAAC,CAAC,CAAC,CAAC;QACT,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAND,wDAMC;AAED,QAAQ;AACR,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,sBAAO,CAAC,KAAK,CAAC;AACnD,MAAM,KAAK,GAAG,wBAAS,CAAC,eAAe,CAAC;AAExC,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAwB;AACjE,MAAM,MAAM,GAAG,wBAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjC,WAAW;AACX,wBAAwB;AACxB,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACtC,MAAM,EAAE,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,IAAA,qBAAU,EAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACjF,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE;IACxC,IAAA,mBAAQ,EAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,CAAC;AACX,CAAC,CAAC,CAAC;AACH,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AAC9D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAEzF,SAAS,cAAc,CAAC,CAAyB,EAAE,GAAG,OAAiB;IACrE,IAAI,CAAC,KAAK,SAAS;QAAE,IAAA,iBAAM,EAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,WAAW,CAAC,GAAiB,EAAE,GAAG,OAAiB;IAC1D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC3D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iBAAM,EAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,MAAM,CAAC,GAAc;IAC5B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC3D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACnB,IAAI,OAAO,CAAC,KAAK,SAAS;YACxB,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,IAAI,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,gBAAG,EAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC3C,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,GAAG,QAAsB,EAAE,EAAE,CAC3D,IAAI,CAAC,IAAA,0BAAe,EAAC,UAAU,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AACtD,MAAM,UAAU,GAAG,CAAC,CAAQ,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1E,yDAAyD;AACzD,SAAgB,gBAAgB,CAAC,MAAkB;IACjD,OAAO,wBAAS,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AACD,0BAA0B;AAC1B,SAAS,OAAO,CAAC,CAAS;IACxB,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AACD,SAAS,MAAM,CAAC,KAAY;IAC1B,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,UAAwB;IAC/C,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,IAAI,CAAC,uBAAY,CAAC,CAAC;AACvC,CAAC;AAED,oDAAoD;AACpD,SAAS,YAAY,CAAC,UAAwB;IAC5C,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE;QACxC,IAAI,CAAC,IAAA,qBAAU,EAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,OAAO,CAAC,UAAwB;IACvC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpC,OAAO,UAAU,CAAC,aAAa,EAAE,GAAG,UAAU,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAsB,EACtB,UAAsB,EACtB,CAAa;IAEb,IAAA,iBAAM,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/B,IAAA,iBAAM,EAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC/B,IAAI,IAAA,qBAAU,EAAC,UAAU,EAAE,UAAU,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,SAAS,CAAC,oBAAoB,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACxD,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAC1B,UAAwB,EACxB,SAAuB,EAAE,EACzB,UAAqB,EAAE;IAEvB,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxB,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QAClC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,YAAY;IACZ,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9B,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,IAAI,EAAE,CAAC;QACP,IAAI,CAAC;YACH,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAsB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QACD,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,eAAe;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,MAAM,CAAC,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,mBAAQ,EAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QACjC,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,YAAY,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QACvF,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtB,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC;AACD;;;;GAIG;AACH,SAAgB,YAAY,CAAC,GAAoC;IAC/D,OAAO,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,GAAG,CAAC,MAAkB,EAAE,IAAgB;IAC/C,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,SAAS,GAAG,CAChB,IAAgB,EAChB,SAAqB,EACrB,YAAwB,EACxB,CAAS,EACT,WAAuB,EACvB,OAAmB,EACX,EAAE,CACV,SAAS,CACP,aAAa,EACb,IAAI,EACJ,IAAI,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAClC,SAAS,EACT,IAAI,UAAU,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EACrC,YAAY,EACZ,WAAW,EACX,IAAA,0BAAe,EAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAClC,OAAO,EACP,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,SAAgB,QAAQ,CACtB,SAAqB,EACrB,SAAsB,EACtB,eAA2B,IAAI,UAAU,CAAC,CAAC,CAAC,EAC5C,GAAgB,EAChB,UAAsB,IAAI,UAAU,CAAC,CAAC,CAAC,EACvC,OAAmB,IAAA,sBAAW,EAAC,EAAE,CAAC;IAElC,IAAA,iBAAM,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC9B,cAAc,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC9B,IAAA,iBAAM,EAAC,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5B,cAAc,CAAC,GAAG,CAAC,CAAC;IACpB,IAAA,iBAAM,EAAC,OAAO,CAAC,CAAC;IAChB,IAAA,iBAAM,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAEjB,IAAI,SAAS,KAAK,SAAS;QAAE,IAAI,GAAG,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,WAAW,GACf,GAAG,KAAK,SAAS;QACf,CAAC,CAAC,IAAA,sBAAW,EAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAA,0BAAe,EAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;QACvE,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7E,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;QACjD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;KAC9D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,SAAuB;IACpD,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAC3B,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACpB,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAClE,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjB,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,sBAAsB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,4CAA4C;AAC5C,0HAA0H;AAC1H,MAAa,OAAO;IAYlB;;;;;;;;;;OAUG;IACH,YACE,QAAoB,EACpB,UAAwB,EACxB,GAAe,EACf,SAAuB,EAAE,EACzB,UAAqB,EAAE;QAEvB,WAAW,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC5B,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC;QAChB,IAAA,iBAAM,EAAC,GAAG,CAAC,CAAC;QACZ,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YAClC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACnF,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,CAAC,GAAG,YAAY,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,iBAAiB,EAAE,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;QACjF,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,mBAAmB,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,YAAY,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IACD;;;;;;OAMG;IACK,qBAAqB,CAAC,CAAQ;QACpC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,qBAAU,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC3F,OAAO,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IACO,wBAAwB,CAC9B,UAAsB,EACtB,WAAuB,EACvB,SAAqB;QAErB,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,CAAC,GAAG,IAAA,0BAAe,EAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,MAAM;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,CAAC,WAAuB,EAAE,MAAkB,EAAE,QAAQ,GAAG,KAAK;QAChE,IAAA,iBAAM,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnB,IAAI,OAAO,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACvE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QAClC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpF,oEAAoE;QACpE,8GAA8G;QAC9G,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAA,mBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAChC,IAAA,mBAAQ,EAAC,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,MAAM,CAAC,CAAC;QACnC,IAAA,mBAAQ,EAAC,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACtB,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAA,qBAAU,EAAC,EAAE,EAAE,UAAU,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChG,MAAM,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,IAAA,0BAAe,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1C,oCAAoC;QACpC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAClC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC;gBAChB,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC;aACjB,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD;;;;;;;;;;;OAWG;IACH,gBAAgB,CAAC,UAAsB,EAAE,SAAuB,EAAE,CAAS;QACzE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC7C,IAAA,iBAAM,EAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACvB,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3B,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACpC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,CAAC;QAChB,IAAA,kBAAO,EAAC,CAAC,CAAC,CAAC;QACX,IAAI,SAAS,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;YACxC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YAClC,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI,SAAS,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;IACD;;;;;;OAMG;IACH,aAAa,CAAC,WAAyB;QACrC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,EAAE,IAAI,MAAM;gBAAE,MAAM,IAAI,sBAAsB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC9D,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAA,sBAAW,EAAC,YAAY,CAAC,CAAC,CAAC,EAAE,IAAA,0BAAe,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;CACF;AA7KD,0BA6KC;AAED,MAAM,sBAAsB,GAAG,CAC7B,MAAkB,EAClB,aAAyB,EACzB,YAAwB,EACxB,GAAe,EACf,CAAS,EACD,EAAE,CACV,SAAS,CACP,2BAA2B,EAC3B,MAAM,EACN,aAAa,EACb,YAAY,EACZ,IAAA,0BAAe,EAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAC9B,GAAG,EACH,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CACpB,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAC/B,MAAkB,EAClB,aAAyB,EACzB,UAAwB,EACxB,GAAe,EACf,SAAuB,EAAE,EACzB,UAAqB,EAAE,EACvB,IAAiB,EACjB,QAAQ,GAAG,KAAK;IAEhB,IAAA,iBAAM,EAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACnB,IAAA,iBAAM,EAAC,aAAa,EAAE,EAAE,CAAC,CAAC;IAC1B,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACpC,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxB,IAAA,iBAAM,EAAC,GAAG,CAAC,CAAC;IACZ,cAAc,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,MAAM,EAAE,GAAG,sBAAsB,CAAC,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,EAAE,GAAG,sBAAsB,CAAC,EAAE,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3E,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACvB,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;AACrC,CAAC"}
|
|
1
|
+
{"version":3,"file":"musig2.js","sourceRoot":"","sources":["src/musig2.ts"],"names":[],"mappings":"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"}
|