@scure/btc-signer 1.6.0 → 1.8.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 +194 -25
- package/esm/_type_test.js +1 -1
- package/esm/index.d.ts +12 -12
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +10 -10
- package/esm/index.js.map +1 -1
- package/esm/musig2.d.ts +148 -0
- package/esm/musig2.d.ts.map +1 -0
- package/esm/musig2.js +405 -0
- package/esm/musig2.js.map +1 -0
- package/esm/p2p.d.ts +38 -0
- package/esm/p2p.d.ts.map +1 -0
- package/esm/p2p.js +156 -0
- package/esm/p2p.js.map +1 -0
- package/esm/payment.d.ts +77 -21
- package/esm/payment.d.ts.map +1 -1
- package/esm/payment.js +63 -60
- package/esm/payment.js.map +1 -1
- package/esm/psbt.d.ts +463 -463
- package/esm/psbt.d.ts.map +1 -1
- package/esm/psbt.js +10 -39
- package/esm/psbt.js.map +1 -1
- package/esm/script.d.ts +16 -16
- package/esm/script.d.ts.map +1 -1
- package/esm/script.js +1 -1
- package/esm/transaction.d.ts +59 -6
- package/esm/transaction.d.ts.map +1 -1
- package/esm/transaction.js +154 -11
- package/esm/transaction.js.map +1 -1
- package/esm/utils.d.ts.map +1 -1
- package/esm/utxo.d.ts +73 -125
- package/esm/utxo.d.ts.map +1 -1
- package/esm/utxo.js +17 -122
- package/esm/utxo.js.map +1 -1
- package/index.d.ts +12 -12
- package/index.d.ts.map +1 -1
- package/index.js +58 -58
- package/index.js.map +1 -1
- package/musig2.d.ts +148 -0
- package/musig2.d.ts.map +1 -0
- package/musig2.js +417 -0
- package/musig2.js.map +1 -0
- package/p2p.d.ts +38 -0
- package/p2p.d.ts.map +1 -0
- package/p2p.js +158 -0
- package/p2p.js.map +1 -0
- package/package.json +15 -11
- package/payment.d.ts +77 -21
- package/payment.d.ts.map +1 -1
- package/payment.js +81 -78
- package/payment.js.map +1 -1
- package/psbt.d.ts +463 -463
- package/psbt.d.ts.map +1 -1
- package/psbt.js +30 -59
- package/psbt.js.map +1 -1
- package/script.d.ts +16 -16
- package/script.d.ts.map +1 -1
- package/script.js +3 -3
- package/src/_type_test.ts +1 -1
- package/src/index.ts +12 -12
- package/src/musig2.ts +517 -0
- package/src/p2p.ts +158 -0
- package/src/payment.ts +160 -75
- package/src/psbt.ts +11 -39
- package/src/script.ts +1 -1
- package/src/transaction.ts +170 -17
- package/src/utxo.ts +29 -122
- package/transaction.d.ts +59 -6
- package/transaction.d.ts.map +1 -1
- package/transaction.js +224 -77
- package/transaction.js.map +1 -1
- package/utils.d.ts.map +1 -1
- package/utxo.d.ts +73 -125
- package/utxo.d.ts.map +1 -1
- package/utxo.js +54 -163
- package/utxo.js.map +1 -1
package/p2p.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"p2p.js","sourceRoot":"","sources":["src/p2p.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAEH,4DAA4D;AAE5D,wDAKsC;AAEtC,uDAA6D;AAC7D,+CAAkD;AAClD,yCAAwC;AAExC,MAAM,EAAE,GAAG,qBAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9B,MAAM,KAAK,GAAG,qBAAS,CAAC,eAAe,CAAC;AAExC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAEtB,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAA,oBAAU,EAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AACrF,MAAM,OAAO,GAAG,CAAC,CAAS,EAAiB,EAAE;IAC3C,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,CAAA,CAAC;AACjB,CAAC,CAAC;AAEF;;;;GAIG;AACU,QAAA,cAAc,GAAG;IAC5B,uEAAuE;IACvE,IAAI,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,OAAe,EAAiB,EAAE;QAC7D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,EAAE,CAAC,CAAC;QAChE,IAAI,CAAS,EAAE,CAAS,CAAC;QACzB,kEAAkE;QAClE,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;QAChC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;QACjC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,gBAAgB;YAC5D,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sCAAsC;QAC7H,CAAC;aAAM,CAAC;YACN,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ;YAC1B,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO;YACtB,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa;YACzC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe;YACtD,oDAAoD;YACpD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,CAAC,gBAAgB;YAC7C,IAAI,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;gBAAE,OAAO;YACrC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,uBAAuB;QAC3E,CAAC;QACD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,gBAAgB;QAC7C,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,iCAAiC;QAC3D,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC5E,MAAM,EAAE,GAAG,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QAC9D,wBAAwB;QACxB,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,sFAAsF;IACtF,MAAM,EAAE,CAAC,CAA6B,EAAc,EAAE;QACpD,IAAI,CAAC,YAAY,qBAAS,CAAC,eAAe;YAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,8FAA8F,CAC/F,CAAC;QACJ,CAAC;QACD,4CAA4C;QAC5C,2DAA2D;QAC3D,OAAO,IAAI,EAAE,CAAC;YACZ,4BAA4B;YAC5B,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YACtE,MAAM,OAAO,GAAG,IAAA,mBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;YAChD,MAAM,CAAC,GAAG,sBAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,OAAO,IAAA,mBAAW,EAAC,IAAA,uBAAe,EAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAA,uBAAe,EAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IACD,uCAAuC;IACvC,MAAM,EAAE,CAAC,IAAS,EAAc,EAAE;QAChC,MAAM,KAAK,GAAG,IAAA,mBAAW,EAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;QAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAChC,oCAAoC;QACpC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,kCAAkC;QAClC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,oCAAoC;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,sBAAsB;QACtB,IAAI,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB;QAClE,IAAI,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAA,uBAAe,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,mBAAmB;QACvE,IAAI,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAA,uBAAe,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,kBAAkB;QAC9D,IAAI,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAA,uBAAe,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,yCAAyC;IACzC,MAAM,EAAE,GAAG,EAAE;QACX,MAAM,UAAU,GAAG,qBAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACtD,MAAM,SAAS,GAAG,sBAAc,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1E,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;IACnC,CAAC;IACD,2DAA2D;IAC3D,eAAe,EAAE,CAAC,WAAgB,EAAE,UAAe,EAAE,EAAE;QACrD,MAAM,GAAG,GAAG,sBAAc,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM,KAAK,GAAG,mBAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,IAAA,uBAAe,EAAC,IAAI,CAAC,CAAC;QAChC,OAAO,IAAA,uBAAe,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,uBAAuB;IACvB,qBAAqB,EAAE,CACrB,cAAmB,EACnB,eAAoB,EACpB,aAAkB,EAClB,UAAmB,EACnB,EAAE;QACF,MAAM,IAAI,GAAG,IAAA,mBAAW,EAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAA,mBAAW,EAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;QAC/D,MAAM,SAAS,GAAG,sBAAc,CAAC,eAAe,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC1D,OAAO,IAAA,qBAAU,EAAC,4BAA4B,EAAE,GAAG,IAAI,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@scure/btc-signer",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"description": "Audited & minimal library for Bitcoin. Handle transactions, Schnorr, Taproot, UTXO & PSBT",
|
|
5
5
|
"files": [
|
|
6
6
|
"esm",
|
|
@@ -14,18 +14,18 @@
|
|
|
14
14
|
"module": "./esm/index.js",
|
|
15
15
|
"types": "./index.d.ts",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@noble/curves": "~1.
|
|
18
|
-
"@noble/hashes": "~1.
|
|
19
|
-
"@scure/base": "~1.2.
|
|
20
|
-
"micro-packed": "~0.7.
|
|
17
|
+
"@noble/curves": "~1.9.0",
|
|
18
|
+
"@noble/hashes": "~1.8.0",
|
|
19
|
+
"@scure/base": "~1.2.5",
|
|
20
|
+
"micro-packed": "~0.7.3"
|
|
21
21
|
},
|
|
22
22
|
"devDependencies": {
|
|
23
|
-
"@paulmillr/jsbt": "0.3.
|
|
24
|
-
"@scure/bip32": "~1.
|
|
25
|
-
"micro-bmark": "0.4.
|
|
26
|
-
"micro-should": "0.5.
|
|
27
|
-
"prettier": "3.3
|
|
28
|
-
"typescript": "5.
|
|
23
|
+
"@paulmillr/jsbt": "0.3.3",
|
|
24
|
+
"@scure/bip32": "~1.7.0",
|
|
25
|
+
"micro-bmark": "0.4.1",
|
|
26
|
+
"micro-should": "0.5.2",
|
|
27
|
+
"prettier": "3.5.3",
|
|
28
|
+
"typescript": "5.8.3"
|
|
29
29
|
},
|
|
30
30
|
"exports": {
|
|
31
31
|
".": {
|
|
@@ -36,6 +36,10 @@
|
|
|
36
36
|
"import": "./esm/index.js",
|
|
37
37
|
"require": "./index.js"
|
|
38
38
|
},
|
|
39
|
+
"./musig2": {
|
|
40
|
+
"import": "./esm/musig2.js",
|
|
41
|
+
"require": "./musig2.js"
|
|
42
|
+
},
|
|
39
43
|
"./payment": {
|
|
40
44
|
"import": "./esm/payment.js",
|
|
41
45
|
"require": "./payment.js"
|
package/payment.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
import { type Coder } from '@scure/base';
|
|
2
2
|
import * as P from 'micro-packed';
|
|
3
|
-
import { type TransactionInput } from './psbt.
|
|
4
|
-
import { type ScriptType } from './script.
|
|
5
|
-
import { type BTC_NETWORK, type Bytes } from './utils.
|
|
3
|
+
import { type TransactionInput } from './psbt.ts';
|
|
4
|
+
import { type ScriptType } from './script.ts';
|
|
5
|
+
import { type BTC_NETWORK, type Bytes } from './utils.ts';
|
|
6
6
|
export type P2Ret = {
|
|
7
7
|
type: string;
|
|
8
8
|
script: Bytes;
|
|
9
9
|
address?: string;
|
|
10
10
|
redeemScript?: Bytes;
|
|
11
11
|
witnessScript?: Bytes;
|
|
12
|
+
hash?: Bytes;
|
|
12
13
|
};
|
|
13
14
|
type OutP2AType = {
|
|
14
15
|
type: 'p2a';
|
|
@@ -70,12 +71,54 @@ export type CustomScript = Coder<OptScript, CustomScriptOut | undefined> & {
|
|
|
70
71
|
export declare const OutScript: P.CoderType<NonNullable<OutP2AType | OutPKType | OutPKHType | OutSHType | OutWSHType | OutWPKHType | OutMSType | OutTRType | OutTRNSType | OutTRMSType | OutUnknownType | undefined>>;
|
|
71
72
|
export type OutScriptType = typeof OutScript;
|
|
72
73
|
export declare function checkScript(script?: Bytes, redeemScript?: Bytes, witnessScript?: Bytes): void;
|
|
73
|
-
|
|
74
|
-
export
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
export declare const
|
|
74
|
+
type Extends<T, U> = T extends U ? T : never;
|
|
75
|
+
export type P2PK = {
|
|
76
|
+
type: 'pk';
|
|
77
|
+
script: Bytes;
|
|
78
|
+
};
|
|
79
|
+
export declare const p2pk: (pubkey: Bytes, _network?: BTC_NETWORK) => Extends<P2PK, P2Ret>;
|
|
80
|
+
export type P2PKH = {
|
|
81
|
+
type: 'pkh';
|
|
82
|
+
script: Bytes;
|
|
83
|
+
address: string;
|
|
84
|
+
hash: Bytes;
|
|
85
|
+
};
|
|
86
|
+
export declare const p2pkh: (publicKey: Bytes, network?: BTC_NETWORK) => Extends<P2PKH, P2Ret>;
|
|
87
|
+
export type P2SHBase = {
|
|
88
|
+
type: 'sh';
|
|
89
|
+
redeemScript: Bytes;
|
|
90
|
+
script: Bytes;
|
|
91
|
+
address: string;
|
|
92
|
+
hash: Bytes;
|
|
93
|
+
};
|
|
94
|
+
export type P2SHWithWitness = P2SHBase & {
|
|
95
|
+
witnessScript: Bytes;
|
|
96
|
+
};
|
|
97
|
+
export type P2SHWithoutWitness = Omit<P2SHBase, 'witnessScript'>;
|
|
98
|
+
export type P2SHReturn<T extends P2Ret> = T extends {
|
|
99
|
+
witnessScript: Bytes;
|
|
100
|
+
} ? P2SHWithWitness : P2SHWithoutWitness;
|
|
101
|
+
export declare const p2sh: <T extends P2Ret>(child: T, network?: BTC_NETWORK) => Extends<P2SHReturn<T>, P2Ret>;
|
|
102
|
+
export type P2WSH = {
|
|
103
|
+
type: 'wsh';
|
|
104
|
+
witnessScript: Bytes;
|
|
105
|
+
script: Bytes;
|
|
106
|
+
address: string;
|
|
107
|
+
hash: Bytes;
|
|
108
|
+
};
|
|
109
|
+
export declare const p2wsh: (child: P2Ret, network?: BTC_NETWORK) => Extends<P2WSH, P2Ret>;
|
|
110
|
+
export type P2WPKH = {
|
|
111
|
+
type: 'wpkh';
|
|
112
|
+
script: Bytes;
|
|
113
|
+
address: string;
|
|
114
|
+
hash: Bytes;
|
|
115
|
+
};
|
|
116
|
+
export declare const p2wpkh: (publicKey: Bytes, network?: BTC_NETWORK) => Extends<P2WPKH, P2Ret>;
|
|
117
|
+
export type P2MS = {
|
|
118
|
+
type: 'ms';
|
|
119
|
+
script: Bytes;
|
|
120
|
+
};
|
|
121
|
+
export declare const p2ms: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => Extends<P2MS, P2Ret>;
|
|
79
122
|
export type HashedTree = {
|
|
80
123
|
type: 'leaf';
|
|
81
124
|
version?: number;
|
|
@@ -87,18 +130,23 @@ export type HashedTree = {
|
|
|
87
130
|
right: HashedTree;
|
|
88
131
|
hash: Bytes;
|
|
89
132
|
};
|
|
90
|
-
export type
|
|
133
|
+
export type P2TR = {
|
|
134
|
+
type: 'tr';
|
|
135
|
+
script: Bytes;
|
|
136
|
+
address: string;
|
|
91
137
|
tweakedPubkey: Bytes;
|
|
92
138
|
tapInternalKey: Bytes;
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
139
|
+
};
|
|
140
|
+
export type P2TR_TREE = P2TR & {
|
|
141
|
+
tapMerkleRoot: Bytes;
|
|
142
|
+
tapLeafScript: TransactionInput['tapLeafScript'];
|
|
143
|
+
leaves: TaprootLeaf[];
|
|
96
144
|
};
|
|
97
145
|
export type TaprootNode = {
|
|
98
146
|
script: Bytes | string;
|
|
99
147
|
leafVersion?: number;
|
|
100
148
|
weight?: number;
|
|
101
|
-
} & Partial<
|
|
149
|
+
} & Partial<P2TR_TREE>;
|
|
102
150
|
export type TaprootScriptTree = TaprootNode | TaprootScriptTree[];
|
|
103
151
|
export type TaprootScriptList = TaprootNode[];
|
|
104
152
|
export declare function taprootListToTree(taprootList: TaprootScriptList): TaprootScriptTree;
|
|
@@ -118,21 +166,29 @@ export type HashedTreeWithPath = TaprootLeaf | {
|
|
|
118
166
|
};
|
|
119
167
|
export declare const TAP_LEAF_VERSION = 192;
|
|
120
168
|
export declare const tapLeafHash: (script: Bytes, version?: number) => Bytes;
|
|
121
|
-
export
|
|
169
|
+
export type P2TRRet<T> = T extends TaprootScriptTree ? P2TR_TREE : P2TR;
|
|
170
|
+
export declare function p2tr(internalPubKey: Bytes | string, tree?: undefined, network?: BTC_NETWORK, allowUnknownOutputs?: boolean, customScripts?: CustomScript[]): Extends<P2TR, P2Ret>;
|
|
171
|
+
export declare function p2tr(internalPubKey: Bytes | string, tree: TaprootScriptTree, network?: BTC_NETWORK, allowUnknownOutputs?: boolean, customScripts?: CustomScript[]): Extends<P2TR_TREE, P2Ret>;
|
|
122
172
|
export declare function combinations<T>(m: number, list: T[]): T[][];
|
|
123
173
|
/**
|
|
124
174
|
* M-of-N multi-leaf wallet via p2tr_ns. If m == n, single script is emitted.
|
|
125
175
|
* Takes O(n^2) if m != n. 99-of-100 is ok, 5-of-100 is not.
|
|
126
176
|
* `2-of-[A,B,C] => [A,B] | [A,C] | [B,C]`
|
|
127
177
|
*/
|
|
128
|
-
export
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
178
|
+
export type P2TR_NS = {
|
|
179
|
+
type: 'tr_ns';
|
|
180
|
+
script: Bytes;
|
|
181
|
+
};
|
|
182
|
+
export declare const p2tr_ns: (m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean) => Extends<P2TR_NS, P2Ret>[];
|
|
183
|
+
export type P2TR_PK = P2TR_NS;
|
|
184
|
+
export declare const p2tr_pk: (pubkey: Bytes) => Extends<P2TR_PK, P2Ret>;
|
|
185
|
+
export type P2TR_MS = {
|
|
186
|
+
type: 'tr_ms';
|
|
187
|
+
script: Bytes;
|
|
133
188
|
};
|
|
189
|
+
export declare function p2tr_ms(m: number, pubkeys: Bytes[], allowSamePubkeys?: boolean): Extends<P2TR_MS, P2Ret>;
|
|
134
190
|
export declare function getAddress(type: 'pkh' | 'wpkh' | 'tr', privKey: Bytes, network?: BTC_NETWORK): string | undefined;
|
|
135
|
-
export declare const _sortPubkeys: (pubkeys: Bytes[]) =>
|
|
191
|
+
export declare const _sortPubkeys: (pubkeys: Bytes[]) => Bytes[];
|
|
136
192
|
export declare function multisig(m: number, pubkeys: Bytes[], sorted?: boolean, witness?: boolean, network?: BTC_NETWORK): P2Ret;
|
|
137
193
|
export declare function sortedMultisig(m: number, pubkeys: Bytes[], witness?: boolean, network?: BTC_NETWORK): P2Ret;
|
|
138
194
|
export declare function WIF(network?: BTC_NETWORK): Coder<Bytes, string>;
|
package/payment.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["src/payment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,KAAK,EAA0B,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAClC,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACvE,OAAO,EAAmB,KAAK,UAAU,EAAY,MAAM,aAAa,CAAC;AAEzE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,KAAK,EAAW,MAAM,YAAY,CAAC;AAOnE,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,aAAa,CAAC,EAAE,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["src/payment.ts"],"names":[],"mappings":"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"}
|
package/payment.js
CHANGED
|
@@ -13,15 +13,15 @@ exports.WIF = WIF;
|
|
|
13
13
|
exports.Address = Address;
|
|
14
14
|
const base_1 = require("@scure/base");
|
|
15
15
|
const P = require("micro-packed");
|
|
16
|
-
const
|
|
17
|
-
const
|
|
16
|
+
const psbt_ts_1 = require("./psbt.js");
|
|
17
|
+
const script_ts_1 = require("./script.js");
|
|
18
18
|
const u = require("./utils.js");
|
|
19
|
-
const
|
|
19
|
+
const utils_ts_1 = require("./utils.js");
|
|
20
20
|
const OutP2A = {
|
|
21
21
|
encode(from) {
|
|
22
22
|
if (from.length !== 2 || from[0] !== 1 || !u.isBytes(from[1]) || base_1.hex.encode(from[1]) !== '4e73')
|
|
23
23
|
return;
|
|
24
|
-
return { type: 'p2a', script:
|
|
24
|
+
return { type: 'p2a', script: script_ts_1.Script.encode(from) };
|
|
25
25
|
},
|
|
26
26
|
decode: (to) => {
|
|
27
27
|
if (to.type !== 'p2a')
|
|
@@ -151,7 +151,7 @@ const OutTRMS = {
|
|
|
151
151
|
if (from[last] !== 'NUMEQUAL' || from[1] !== 'CHECKSIG')
|
|
152
152
|
return;
|
|
153
153
|
const pubkeys = [];
|
|
154
|
-
const m = (0,
|
|
154
|
+
const m = (0, script_ts_1.OpToNum)(from[last - 1]);
|
|
155
155
|
if (typeof m !== 'number')
|
|
156
156
|
return;
|
|
157
157
|
for (let i = 0; i < last - 1; i++) {
|
|
@@ -179,9 +179,9 @@ const OutTRMS = {
|
|
|
179
179
|
};
|
|
180
180
|
const OutUnknown = {
|
|
181
181
|
encode(from) {
|
|
182
|
-
return { type: 'unknown', script:
|
|
182
|
+
return { type: 'unknown', script: script_ts_1.Script.encode(from) };
|
|
183
183
|
},
|
|
184
|
-
decode: (to) => to.type === 'unknown' ?
|
|
184
|
+
decode: (to) => to.type === 'unknown' ? script_ts_1.Script.decode(to.script) : undefined,
|
|
185
185
|
};
|
|
186
186
|
// /Payments
|
|
187
187
|
const OutScripts = [
|
|
@@ -202,7 +202,7 @@ const OutScripts = [
|
|
|
202
202
|
// - removeOutScript
|
|
203
203
|
// - We can do that as log we modify array in-place
|
|
204
204
|
// - Actually is very hard, since there is sign/finalize logic
|
|
205
|
-
const _OutScript = P.apply(
|
|
205
|
+
const _OutScript = P.apply(script_ts_1.Script, P.coders.match(OutScripts));
|
|
206
206
|
// We can validate this once, because of packed & coders
|
|
207
207
|
exports.OutScript = P.validate(_OutScript, (i) => {
|
|
208
208
|
if (i.type === 'pk' && !isValidPubkey(i.pubkey, u.PubT.ecdsa))
|
|
@@ -281,18 +281,14 @@ function uniqPubkey(pubkeys) {
|
|
|
281
281
|
map[key] = true;
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
|
-
|
|
285
|
-
const p2pk = (pubkey, network = utils_js_1.NETWORK) => {
|
|
284
|
+
const p2pk = (pubkey, _network = utils_ts_1.NETWORK) => {
|
|
286
285
|
// network is unused
|
|
287
286
|
if (!isValidPubkey(pubkey, u.PubT.ecdsa))
|
|
288
287
|
throw new Error('P2PK: invalid publicKey');
|
|
289
|
-
return {
|
|
290
|
-
type: 'pk',
|
|
291
|
-
script: exports.OutScript.encode({ type: 'pk', pubkey }),
|
|
292
|
-
};
|
|
288
|
+
return { type: 'pk', script: exports.OutScript.encode({ type: 'pk', pubkey }) };
|
|
293
289
|
};
|
|
294
290
|
exports.p2pk = p2pk;
|
|
295
|
-
const p2pkh = (publicKey, network =
|
|
291
|
+
const p2pkh = (publicKey, network = utils_ts_1.NETWORK) => {
|
|
296
292
|
if (!isValidPubkey(publicKey, u.PubT.ecdsa))
|
|
297
293
|
throw new Error('P2PKH: invalid publicKey');
|
|
298
294
|
const hash = u.hash160(publicKey);
|
|
@@ -300,10 +296,11 @@ const p2pkh = (publicKey, network = utils_js_1.NETWORK) => {
|
|
|
300
296
|
type: 'pkh',
|
|
301
297
|
script: exports.OutScript.encode({ type: 'pkh', hash }),
|
|
302
298
|
address: Address(network).encode({ type: 'pkh', hash }),
|
|
299
|
+
hash,
|
|
303
300
|
};
|
|
304
301
|
};
|
|
305
302
|
exports.p2pkh = p2pkh;
|
|
306
|
-
const p2sh = (child, network =
|
|
303
|
+
const p2sh = (child, network = utils_ts_1.NETWORK) => {
|
|
307
304
|
// It is already tested inside noble-hashes and checkScript
|
|
308
305
|
const cs = child.script;
|
|
309
306
|
if (!u.isBytes(cs))
|
|
@@ -311,18 +308,28 @@ const p2sh = (child, network = utils_js_1.NETWORK) => {
|
|
|
311
308
|
const hash = u.hash160(cs);
|
|
312
309
|
const script = exports.OutScript.encode({ type: 'sh', hash });
|
|
313
310
|
checkScript(script, cs, child.witnessScript);
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
311
|
+
if (child.witnessScript) {
|
|
312
|
+
return {
|
|
313
|
+
type: 'sh',
|
|
314
|
+
redeemScript: cs,
|
|
315
|
+
script: exports.OutScript.encode({ type: 'sh', hash }),
|
|
316
|
+
address: Address(network).encode({ type: 'sh', hash }),
|
|
317
|
+
hash,
|
|
318
|
+
witnessScript: child.witnessScript,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
return {
|
|
323
|
+
type: 'sh',
|
|
324
|
+
redeemScript: cs,
|
|
325
|
+
script: exports.OutScript.encode({ type: 'sh', hash }),
|
|
326
|
+
address: Address(network).encode({ type: 'sh', hash }),
|
|
327
|
+
hash,
|
|
328
|
+
};
|
|
329
|
+
}
|
|
323
330
|
};
|
|
324
331
|
exports.p2sh = p2sh;
|
|
325
|
-
const p2wsh = (child, network =
|
|
332
|
+
const p2wsh = (child, network = utils_ts_1.NETWORK) => {
|
|
326
333
|
const cs = child.script;
|
|
327
334
|
if (!u.isBytes(cs))
|
|
328
335
|
throw new Error(`Wrong script: ${typeof cs}, expected Uint8Array`);
|
|
@@ -334,10 +341,11 @@ const p2wsh = (child, network = utils_js_1.NETWORK) => {
|
|
|
334
341
|
witnessScript: cs,
|
|
335
342
|
script: exports.OutScript.encode({ type: 'wsh', hash }),
|
|
336
343
|
address: Address(network).encode({ type: 'wsh', hash }),
|
|
344
|
+
hash,
|
|
337
345
|
};
|
|
338
346
|
};
|
|
339
347
|
exports.p2wsh = p2wsh;
|
|
340
|
-
const p2wpkh = (publicKey, network =
|
|
348
|
+
const p2wpkh = (publicKey, network = utils_ts_1.NETWORK) => {
|
|
341
349
|
if (!isValidPubkey(publicKey, u.PubT.ecdsa))
|
|
342
350
|
throw new Error('P2WPKH: invalid publicKey');
|
|
343
351
|
if (publicKey.length === 65)
|
|
@@ -347,13 +355,17 @@ const p2wpkh = (publicKey, network = utils_js_1.NETWORK) => {
|
|
|
347
355
|
type: 'wpkh',
|
|
348
356
|
script: exports.OutScript.encode({ type: 'wpkh', hash }),
|
|
349
357
|
address: Address(network).encode({ type: 'wpkh', hash }),
|
|
358
|
+
hash,
|
|
350
359
|
};
|
|
351
360
|
};
|
|
352
361
|
exports.p2wpkh = p2wpkh;
|
|
353
362
|
const p2ms = (m, pubkeys, allowSamePubkeys = false) => {
|
|
354
363
|
if (!allowSamePubkeys)
|
|
355
364
|
uniqPubkey(pubkeys);
|
|
356
|
-
return {
|
|
365
|
+
return {
|
|
366
|
+
type: 'ms',
|
|
367
|
+
script: exports.OutScript.encode({ type: 'ms', pubkeys, m }),
|
|
368
|
+
};
|
|
357
369
|
};
|
|
358
370
|
exports.p2ms = p2ms;
|
|
359
371
|
function checkTaprootScript(script, internalPubKey, allowUnknownOutputs = false, customScripts) {
|
|
@@ -362,7 +374,7 @@ function checkTaprootScript(script, internalPubKey, allowUnknownOutputs = false,
|
|
|
362
374
|
// NOTE: this check should be before allowUnknownOutputs, otherwise it will
|
|
363
375
|
// disable custom. All custom scripts for taproot should have prefix 'tr_'
|
|
364
376
|
if (customScripts) {
|
|
365
|
-
const cs = P.apply(
|
|
377
|
+
const cs = P.apply(script_ts_1.Script, P.coders.match(customScripts));
|
|
366
378
|
const c = cs.decode(script);
|
|
367
379
|
if (c !== undefined) {
|
|
368
380
|
if (typeof c.type !== 'string' || !c.type.startsWith('tr_'))
|
|
@@ -477,12 +489,9 @@ function taprootHashTree(tree, internalPubKey, allowUnknownOutputs = false, cust
|
|
|
477
489
|
return { type: 'branch', left, right, hash: u.tagSchnorr('TapBranch', lH, rH) };
|
|
478
490
|
}
|
|
479
491
|
exports.TAP_LEAF_VERSION = 0xc0;
|
|
480
|
-
const tapLeafHash = (script, version = exports.TAP_LEAF_VERSION) => u.tagSchnorr('TapLeaf', new Uint8Array([version]),
|
|
492
|
+
const tapLeafHash = (script, version = exports.TAP_LEAF_VERSION) => u.tagSchnorr('TapLeaf', new Uint8Array([version]), script_ts_1.VarBytes.encode(script));
|
|
481
493
|
exports.tapLeafHash = tapLeafHash;
|
|
482
|
-
|
|
483
|
-
// If we only have tree, need to add unspendable key, otherwise
|
|
484
|
-
// complex multisig wallet can be spent by owner of key only. See TAPROOT_UNSPENDABLE_KEY
|
|
485
|
-
function p2tr(internalPubKey, tree, network = utils_js_1.NETWORK, allowUnknownOutputs = false, customScripts) {
|
|
494
|
+
function p2tr(internalPubKey, tree, network = utils_ts_1.NETWORK, allowUnknownOutputs = false, customScripts) {
|
|
486
495
|
// Unspendable
|
|
487
496
|
if (!internalPubKey && !tree)
|
|
488
497
|
throw new Error('p2tr: should have pubKey or scriptTree (or both)');
|
|
@@ -491,46 +500,46 @@ function p2tr(internalPubKey, tree, network = utils_js_1.NETWORK, allowUnknownOu
|
|
|
491
500
|
: internalPubKey || u.TAPROOT_UNSPENDABLE_KEY;
|
|
492
501
|
if (!isValidPubkey(pubKey, u.PubT.schnorr))
|
|
493
502
|
throw new Error('p2tr: non-schnorr pubkey');
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
let leaves;
|
|
500
|
-
if (hashedTree) {
|
|
501
|
-
leaves = taprootWalkTree(hashedTree).map((l) => ({
|
|
503
|
+
if (tree) {
|
|
504
|
+
let hashedTree = taprootAddPath(taprootHashTree(tree, pubKey, allowUnknownOutputs, customScripts));
|
|
505
|
+
const tapMerkleRoot = hashedTree.hash;
|
|
506
|
+
const [tweakedPubkey, parity] = u.taprootTweakPubkey(pubKey, tapMerkleRoot);
|
|
507
|
+
const leaves = taprootWalkTree(hashedTree).map((l) => ({
|
|
502
508
|
...l,
|
|
503
|
-
controlBlock:
|
|
509
|
+
controlBlock: psbt_ts_1.TaprootControlBlock.encode({
|
|
504
510
|
version: (l.version || exports.TAP_LEAF_VERSION) + parity,
|
|
505
511
|
internalKey: pubKey,
|
|
506
512
|
merklePath: l.path,
|
|
507
513
|
}),
|
|
508
514
|
}));
|
|
515
|
+
return {
|
|
516
|
+
type: 'tr',
|
|
517
|
+
script: exports.OutScript.encode({ type: 'tr', pubkey: tweakedPubkey }),
|
|
518
|
+
address: Address(network).encode({ type: 'tr', pubkey: tweakedPubkey }),
|
|
519
|
+
// For tests
|
|
520
|
+
tweakedPubkey,
|
|
521
|
+
// PSBT stuff
|
|
522
|
+
tapInternalKey: pubKey,
|
|
523
|
+
leaves,
|
|
524
|
+
tapLeafScript: leaves.map((l) => [
|
|
525
|
+
psbt_ts_1.TaprootControlBlock.decode(l.controlBlock),
|
|
526
|
+
u.concatBytes(l.script, new Uint8Array([l.version || exports.TAP_LEAF_VERSION])),
|
|
527
|
+
]),
|
|
528
|
+
tapMerkleRoot,
|
|
529
|
+
};
|
|
509
530
|
}
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
531
|
+
else {
|
|
532
|
+
const tweakedPubkey = u.taprootTweakPubkey(pubKey, P.EMPTY)[0];
|
|
533
|
+
return {
|
|
534
|
+
type: 'tr',
|
|
535
|
+
script: exports.OutScript.encode({ type: 'tr', pubkey: tweakedPubkey }),
|
|
536
|
+
address: Address(network).encode({ type: 'tr', pubkey: tweakedPubkey }),
|
|
537
|
+
// For tests
|
|
538
|
+
tweakedPubkey,
|
|
539
|
+
// PSBT stuff
|
|
540
|
+
tapInternalKey: pubKey,
|
|
541
|
+
};
|
|
516
542
|
}
|
|
517
|
-
const res = {
|
|
518
|
-
type: 'tr',
|
|
519
|
-
script: exports.OutScript.encode({ type: 'tr', pubkey: tweakedPubkey }),
|
|
520
|
-
address: Address(network).encode({ type: 'tr', pubkey: tweakedPubkey }),
|
|
521
|
-
// For tests
|
|
522
|
-
tweakedPubkey,
|
|
523
|
-
// PSBT stuff
|
|
524
|
-
tapInternalKey: pubKey,
|
|
525
|
-
};
|
|
526
|
-
// Just in case someone would want to select a specific script
|
|
527
|
-
if (leaves)
|
|
528
|
-
res.leaves = leaves;
|
|
529
|
-
if (tapLeafScript)
|
|
530
|
-
res.tapLeafScript = tapLeafScript;
|
|
531
|
-
if (tapMerkleRoot)
|
|
532
|
-
res.tapMerkleRoot = tapMerkleRoot;
|
|
533
|
-
return res;
|
|
534
543
|
}
|
|
535
544
|
// Returns all combinations of size M from lst
|
|
536
545
|
function combinations(m, list) {
|
|
@@ -566,11 +575,6 @@ function combinations(m, list) {
|
|
|
566
575
|
}
|
|
567
576
|
return res;
|
|
568
577
|
}
|
|
569
|
-
/**
|
|
570
|
-
* M-of-N multi-leaf wallet via p2tr_ns. If m == n, single script is emitted.
|
|
571
|
-
* Takes O(n^2) if m != n. 99-of-100 is ok, 5-of-100 is not.
|
|
572
|
-
* `2-of-[A,B,C] => [A,B] | [A,C] | [B,C]`
|
|
573
|
-
*/
|
|
574
578
|
const p2tr_ns = (m, pubkeys, allowSamePubkeys = false) => {
|
|
575
579
|
if (!allowSamePubkeys)
|
|
576
580
|
uniqPubkey(pubkeys);
|
|
@@ -580,7 +584,6 @@ const p2tr_ns = (m, pubkeys, allowSamePubkeys = false) => {
|
|
|
580
584
|
}));
|
|
581
585
|
};
|
|
582
586
|
exports.p2tr_ns = p2tr_ns;
|
|
583
|
-
// Taproot public key (case of p2tr_ns)
|
|
584
587
|
const p2tr_pk = (pubkey) => (0, exports.p2tr_ns)(1, [pubkey], undefined)[0];
|
|
585
588
|
exports.p2tr_pk = p2tr_pk;
|
|
586
589
|
function p2tr_ms(m, pubkeys, allowSamePubkeys = false) {
|
|
@@ -592,7 +595,7 @@ function p2tr_ms(m, pubkeys, allowSamePubkeys = false) {
|
|
|
592
595
|
};
|
|
593
596
|
}
|
|
594
597
|
// Simple pubkey address, without complex scripts
|
|
595
|
-
function getAddress(type, privKey, network =
|
|
598
|
+
function getAddress(type, privKey, network = utils_ts_1.NETWORK) {
|
|
596
599
|
if (type === 'tr') {
|
|
597
600
|
return p2tr(u.pubSchnorr(privKey), undefined, network).address;
|
|
598
601
|
}
|
|
@@ -605,11 +608,11 @@ function getAddress(type, privKey, network = utils_js_1.NETWORK) {
|
|
|
605
608
|
}
|
|
606
609
|
const _sortPubkeys = (pubkeys) => Array.from(pubkeys).sort(u.compareBytes);
|
|
607
610
|
exports._sortPubkeys = _sortPubkeys;
|
|
608
|
-
function multisig(m, pubkeys, sorted = false, witness = false, network =
|
|
611
|
+
function multisig(m, pubkeys, sorted = false, witness = false, network = utils_ts_1.NETWORK) {
|
|
609
612
|
const ms = (0, exports.p2ms)(m, sorted ? (0, exports._sortPubkeys)(pubkeys) : pubkeys);
|
|
610
613
|
return witness ? (0, exports.p2wsh)(ms, network) : (0, exports.p2sh)(ms, network);
|
|
611
614
|
}
|
|
612
|
-
function sortedMultisig(m, pubkeys, witness = false, network =
|
|
615
|
+
function sortedMultisig(m, pubkeys, witness = false, network = utils_ts_1.NETWORK) {
|
|
613
616
|
return multisig(m, pubkeys, true, witness, network);
|
|
614
617
|
}
|
|
615
618
|
const base58check = (0, base_1.createBase58check)(u.sha256);
|
|
@@ -621,7 +624,7 @@ function validateWitness(version, data) {
|
|
|
621
624
|
if (version === 0 && !(data.length === 20 || data.length === 32))
|
|
622
625
|
throw new Error('Witness: invalid length for version');
|
|
623
626
|
}
|
|
624
|
-
function programToWitness(version, data, network =
|
|
627
|
+
function programToWitness(version, data, network = utils_ts_1.NETWORK) {
|
|
625
628
|
validateWitness(version, data);
|
|
626
629
|
const coder = version === 0 ? base_1.bech32 : base_1.bech32m;
|
|
627
630
|
return coder.encode(network.bech32, [version].concat(coder.toWords(data)));
|
|
@@ -629,7 +632,7 @@ function programToWitness(version, data, network = utils_js_1.NETWORK) {
|
|
|
629
632
|
function formatKey(hashed, prefix) {
|
|
630
633
|
return base58check.encode(u.concatBytes(Uint8Array.from(prefix), hashed));
|
|
631
634
|
}
|
|
632
|
-
function WIF(network =
|
|
635
|
+
function WIF(network = utils_ts_1.NETWORK) {
|
|
633
636
|
return {
|
|
634
637
|
encode(privKey) {
|
|
635
638
|
const compressed = u.concatBytes(privKey, new Uint8Array([0x01]));
|
|
@@ -650,7 +653,7 @@ function WIF(network = utils_js_1.NETWORK) {
|
|
|
650
653
|
};
|
|
651
654
|
}
|
|
652
655
|
// Returns OutType, which can be used to create outscript
|
|
653
|
-
function Address(network =
|
|
656
|
+
function Address(network = utils_ts_1.NETWORK) {
|
|
654
657
|
return {
|
|
655
658
|
encode(from) {
|
|
656
659
|
const { type } = from;
|