ecash-lib 1.5.2-rc → 2.1.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 +5 -40
- package/dist/address/legacyaddr.d.ts +1 -1
- package/dist/ecc.d.ts +9 -25
- package/dist/ecc.d.ts.map +1 -1
- package/dist/ecc.js +40 -56
- package/dist/ecc.js.map +1 -1
- package/dist/ffi/ecash_lib_wasm_bg_browser.d.ts +1 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.js +1707 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +2 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +2 -0
- package/dist/ffi/ecash_lib_wasm_browser.d.ts +24 -0
- package/dist/ffi/ecash_lib_wasm_browser.js +64 -0
- package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +22 -0
- package/dist/ffi/ecash_lib_wasm_nodejs.js +64 -0
- package/dist/hash.d.ts +6 -16
- package/dist/hash.d.ts.map +1 -1
- package/dist/hash.js +18 -18
- package/dist/hash.js.map +1 -1
- package/dist/hdwallet.d.ts +2 -4
- package/dist/hdwallet.d.ts.map +1 -1
- package/dist/hdwallet.js +6 -7
- package/dist/hdwallet.js.map +1 -1
- package/dist/hmac.js +3 -3
- package/dist/hmac.js.map +1 -1
- package/dist/initBrowser.d.ts +1 -11
- package/dist/initBrowser.d.ts.map +1 -1
- package/dist/initBrowser.js +21 -41
- package/dist/initBrowser.js.map +1 -1
- package/dist/initNodeJs.d.ts +1 -2
- package/dist/initNodeJs.d.ts.map +1 -1
- package/dist/initNodeJs.js +16 -30
- package/dist/initNodeJs.js.map +1 -1
- package/dist/io/bytes.js +2 -2
- package/dist/io/bytes.js.map +1 -1
- package/dist/io/hex.js +5 -4
- package/dist/io/hex.js.map +1 -1
- package/dist/io/str.js +3 -2
- package/dist/io/str.js.map +1 -1
- package/dist/io/varsize.js +3 -2
- package/dist/io/varsize.js.map +1 -1
- package/dist/mnemonic.js +4 -3
- package/dist/mnemonic.js.map +1 -1
- package/dist/op.js +6 -5
- package/dist/op.js.map +1 -1
- package/dist/pbkdf2.js +2 -1
- package/dist/pbkdf2.js.map +1 -1
- package/dist/test/testRunner.d.ts +1 -2
- package/dist/test/testRunner.d.ts.map +1 -1
- package/dist/test/testRunner.js +10 -23
- package/dist/test/testRunner.js.map +1 -1
- package/dist/token/alp.d.ts +1 -1
- package/dist/token/alp.d.ts.map +1 -1
- package/dist/token/alp.js +5 -5
- package/dist/token/alp.js.map +1 -1
- package/dist/token/common.d.ts +4 -4
- package/dist/token/common.d.ts.map +1 -1
- package/dist/token/empp.js +2 -1
- package/dist/token/empp.js.map +1 -1
- package/dist/token/slp.d.ts +1 -1
- package/dist/token/slp.d.ts.map +1 -1
- package/dist/token/slp.js +7 -7
- package/dist/token/slp.js.map +1 -1
- package/dist/tx.js +7 -7
- package/dist/tx.js.map +1 -1
- package/dist/txBuilder.d.ts +5 -1
- package/dist/txBuilder.d.ts.map +1 -1
- package/dist/txBuilder.js +12 -11
- package/dist/txBuilder.js.map +1 -1
- package/package.json +1 -1
- package/src/ecc.ts +47 -59
- package/src/ffi/ecash_lib_wasm_bg_browser.d.ts +1 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.js +1707 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/src/ffi/ecash_lib_wasm_bg_browser.wasm.d.ts +2 -0
- package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +2 -0
- package/src/ffi/ecash_lib_wasm_browser.d.ts +24 -0
- package/src/ffi/ecash_lib_wasm_browser.js +64 -0
- package/src/ffi/ecash_lib_wasm_nodejs.d.ts +22 -0
- package/src/ffi/ecash_lib_wasm_nodejs.js +64 -0
- package/src/hash.ts +19 -38
- package/src/hdwallet.ts +4 -8
- package/src/initBrowser.ts +18 -25
- package/src/initNodeJs.ts +9 -12
- package/src/test/testRunner.ts +3 -11
- package/src/txBuilder.ts +12 -7
- package/.nyc_output/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
- package/.nyc_output/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
- package/.nyc_output/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
- package/.nyc_output/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
- package/.nyc_output/processinfo/0fc40ca6-d52c-45eb-b31b-2601ce70b887.json +0 -1
- package/.nyc_output/processinfo/ac5be6db-4e40-41f8-8b84-7598d4747e57.json +0 -1
- package/.nyc_output/processinfo/b316d46f-5ea0-4e98-884a-bfbf9cc1d0f8.json +0 -1
- package/.nyc_output/processinfo/f965566b-9422-4874-b45e-9eefda9c769c.json +0 -1
- package/.nyc_output/processinfo/index.json +0 -1
- package/dist/address/cashaddr.d.ts +0 -78
- package/dist/address/cashaddr.d.ts.map +0 -1
- package/dist/address/cashaddr.js +0 -543
- package/dist/address/cashaddr.js.map +0 -1
- package/dist/cashaddr/cashaddr.d.ts +0 -23
- package/dist/cashaddr/cashaddr.d.ts.map +0 -1
- package/dist/cashaddr/cashaddr.js +0 -325
- package/dist/cashaddr/cashaddr.js.map +0 -1
- package/test.log +0 -82
package/dist/token/slp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slp.d.ts","sourceRoot":"","sources":["../../src/token/slp.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAiB,WAAW,EAAc,MAAM,aAAa,CAAC;AAE7E,uBAAuB;AACvB,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"slp.d.ts","sourceRoot":"","sources":["../../src/token/slp.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAiB,WAAW,EAAc,MAAM,aAAa,CAAC;AAE7E,uBAAuB;AACvB,eAAO,MAAM,YAAY,YAAsB,CAAC;AAEhD,qCAAqC;AACrC,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,uCAAuC;AACvC,eAAO,MAAM,cAAc,IAAI,CAAC;AAChC,uCAAuC;AACvC,eAAO,MAAM,cAAc,KAAO,CAAC;AACnC,uCAAuC;AACvC,eAAO,MAAM,cAAc,MAAO,CAAC;AAEnC,+DAA+D;AAC/D,wBAAgB,UAAU,CACtB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,MAAM,GACzB,MAAM,CA4BR;AAED;;;IAGI;AACJ,wBAAgB,OAAO,CACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,EAC1B,eAAe,CAAC,EAAE,MAAM,GACzB,MAAM,CAgBR;AAED;;;IAGI;AACJ,wBAAgB,YAAY,CACxB,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,MAAM,EAAE,GAC/B,MAAM,CAcR;AAED;;IAEI;AACJ,wBAAgB,OAAO,CACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EAAE,GACtB,MAAM,CAaR;AAED;;;IAGI;AACJ,wBAAgB,OAAO,CACnB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACnB,MAAM,CAWR;AAiDD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAYpD"}
|
package/dist/token/slp.js
CHANGED
|
@@ -3,13 +3,7 @@
|
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SLP_NFT1_GROUP = exports.SLP_NFT1_CHILD = exports.SLP_MINT_VAULT = exports.SLP_FUNGIBLE = exports.SLP_LOKAD_ID = void 0;
|
|
7
|
-
exports.slpGenesis = slpGenesis;
|
|
8
|
-
exports.slpMint = slpMint;
|
|
9
|
-
exports.slpMintVault = slpMintVault;
|
|
10
|
-
exports.slpSend = slpSend;
|
|
11
|
-
exports.slpBurn = slpBurn;
|
|
12
|
-
exports.slpAmount = slpAmount;
|
|
6
|
+
exports.slpAmount = exports.slpBurn = exports.slpSend = exports.slpMintVault = exports.slpMint = exports.slpGenesis = exports.SLP_NFT1_GROUP = exports.SLP_NFT1_CHILD = exports.SLP_MINT_VAULT = exports.SLP_FUNGIBLE = exports.SLP_LOKAD_ID = void 0;
|
|
13
7
|
const hex_js_1 = require("../io/hex.js");
|
|
14
8
|
const str_js_1 = require("../io/str.js");
|
|
15
9
|
const op_js_1 = require("../op.js");
|
|
@@ -58,6 +52,7 @@ function slpGenesis(tokenType, genesisInfo, initialQuantity, mintBatonOutIdx) {
|
|
|
58
52
|
data.push(slpAmount(initialQuantity));
|
|
59
53
|
return script_js_1.Script.fromOps([opcode_js_1.OP_RETURN].concat(data.map(pushdataOpSlp)));
|
|
60
54
|
}
|
|
55
|
+
exports.slpGenesis = slpGenesis;
|
|
61
56
|
/**
|
|
62
57
|
* Build an SLP MINT pushdata section, creating new SLP tokens and mint batons
|
|
63
58
|
* of the given token ID.
|
|
@@ -75,6 +70,7 @@ function slpMint(tokenId, tokenType, additionalQuantity, mintBatonOutIdx) {
|
|
|
75
70
|
pushdataOpSlp(slpAmount(additionalQuantity)),
|
|
76
71
|
]);
|
|
77
72
|
}
|
|
73
|
+
exports.slpMint = slpMint;
|
|
78
74
|
/**
|
|
79
75
|
* Build an SLP MINT VAULT pushdata section, creating new SLP tokens and mint batons
|
|
80
76
|
* of the given token ID.
|
|
@@ -90,6 +86,7 @@ function slpMintVault(tokenId, additionalQuantities) {
|
|
|
90
86
|
pushdataOpSlp((0, hex_js_1.fromHex)(tokenId)),
|
|
91
87
|
].concat(additionalQuantities.map(qty => pushdataOpSlp(slpAmount(qty)))));
|
|
92
88
|
}
|
|
89
|
+
exports.slpMintVault = slpMintVault;
|
|
93
90
|
/**
|
|
94
91
|
* Build an SLP SEND pushdata section, moving SLP tokens to different outputs
|
|
95
92
|
**/
|
|
@@ -105,6 +102,7 @@ function slpSend(tokenId, tokenType, sendAmounts) {
|
|
|
105
102
|
pushdataOpSlp((0, hex_js_1.fromHex)(tokenId)),
|
|
106
103
|
].concat(sendAmounts.map(qty => pushdataOpSlp(slpAmount(qty)))));
|
|
107
104
|
}
|
|
105
|
+
exports.slpSend = slpSend;
|
|
108
106
|
/**
|
|
109
107
|
* Build an SLP BURN pushdata section, intentionally burning SLP tokens.
|
|
110
108
|
* See https://github.com/badger-cash/slp-self-mint-protocol/blob/master/token-type1-burn.md
|
|
@@ -121,6 +119,7 @@ function slpBurn(tokenId, tokenType, burnAmount) {
|
|
|
121
119
|
pushdataOpSlp(slpAmount(burnAmount)),
|
|
122
120
|
]);
|
|
123
121
|
}
|
|
122
|
+
exports.slpBurn = slpBurn;
|
|
124
123
|
function verifyTokenType(tokenType) {
|
|
125
124
|
switch (tokenType) {
|
|
126
125
|
case exports.SLP_FUNGIBLE:
|
|
@@ -169,4 +168,5 @@ function slpAmount(amount) {
|
|
|
169
168
|
view.setBigUint64(0, BigInt(amount), /*little endian=*/ false);
|
|
170
169
|
return amountBytes;
|
|
171
170
|
}
|
|
171
|
+
exports.slpAmount = slpAmount;
|
|
172
172
|
//# sourceMappingURL=slp.js.map
|
package/dist/token/slp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slp.js","sourceRoot":"","sources":["../../src/token/slp.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;
|
|
1
|
+
{"version":3,"file":"slp.js","sourceRoot":"","sources":["../../src/token/slp.ts"],"names":[],"mappings":"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"}
|
package/dist/tx.js
CHANGED
|
@@ -3,13 +3,7 @@
|
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Tx = exports.DEFAULT_TX_VERSION = exports.DEFAULT_SEQUENCE = void 0;
|
|
7
|
-
exports.readTxOutput = readTxOutput;
|
|
8
|
-
exports.writeOutPoint = writeOutPoint;
|
|
9
|
-
exports.writeTxInput = writeTxInput;
|
|
10
|
-
exports.writeTxOutput = writeTxOutput;
|
|
11
|
-
exports.copyTxInput = copyTxInput;
|
|
12
|
-
exports.copyTxOutput = copyTxOutput;
|
|
6
|
+
exports.copyTxOutput = exports.copyTxInput = exports.writeTxOutput = exports.writeTxInput = exports.writeOutPoint = exports.readTxOutput = exports.Tx = exports.DEFAULT_TX_VERSION = exports.DEFAULT_SEQUENCE = void 0;
|
|
13
7
|
const hex_js_1 = require("./io/hex.js");
|
|
14
8
|
const varsize_js_1 = require("./io/varsize.js");
|
|
15
9
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
@@ -69,6 +63,7 @@ function readTxOutput(bytes) {
|
|
|
69
63
|
script,
|
|
70
64
|
};
|
|
71
65
|
}
|
|
66
|
+
exports.readTxOutput = readTxOutput;
|
|
72
67
|
/** Write an outpoint to a Writer */
|
|
73
68
|
function writeOutPoint(outpoint, writer) {
|
|
74
69
|
const txid = typeof outpoint.txid === 'string'
|
|
@@ -77,17 +72,20 @@ function writeOutPoint(outpoint, writer) {
|
|
|
77
72
|
writer.putBytes(txid);
|
|
78
73
|
writer.putU32(outpoint.outIdx);
|
|
79
74
|
}
|
|
75
|
+
exports.writeOutPoint = writeOutPoint;
|
|
80
76
|
/** Write a TxInput to a Writer */
|
|
81
77
|
function writeTxInput(input, writer) {
|
|
82
78
|
writeOutPoint(input.prevOut, writer);
|
|
83
79
|
(input.script ?? new script_js_1.Script()).writeWithSize(writer);
|
|
84
80
|
writer.putU32(input.sequence ?? exports.DEFAULT_SEQUENCE);
|
|
85
81
|
}
|
|
82
|
+
exports.writeTxInput = writeTxInput;
|
|
86
83
|
/** Write a TxOutput to a Writer */
|
|
87
84
|
function writeTxOutput(output, writer) {
|
|
88
85
|
writer.putU64(output.value);
|
|
89
86
|
output.script.writeWithSize(writer);
|
|
90
87
|
}
|
|
88
|
+
exports.writeTxOutput = writeTxOutput;
|
|
91
89
|
/** Create a deep copy of the TxInput */
|
|
92
90
|
function copyTxInput(input) {
|
|
93
91
|
return {
|
|
@@ -106,6 +104,7 @@ function copyTxInput(input) {
|
|
|
106
104
|
},
|
|
107
105
|
};
|
|
108
106
|
}
|
|
107
|
+
exports.copyTxInput = copyTxInput;
|
|
109
108
|
/** Create a deep copy of the TxOutput */
|
|
110
109
|
function copyTxOutput(output) {
|
|
111
110
|
return {
|
|
@@ -113,4 +112,5 @@ function copyTxOutput(output) {
|
|
|
113
112
|
script: output.script.copy(),
|
|
114
113
|
};
|
|
115
114
|
}
|
|
115
|
+
exports.copyTxOutput = copyTxOutput;
|
|
116
116
|
//# sourceMappingURL=tx.js.map
|
package/dist/tx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAGtE,wCAAyC;AACzC,gDAA+C;AAE/C,wDAAkD;AAClD,0DAAoD;AACpD,2CAAqC;AAErC;;;;;;;IAOI;AACS,QAAA,gBAAgB,GAAG,UAAU,CAAC;AAE3C,4EAA4E;AAC/D,QAAA,kBAAkB,GAAG,CAAC,CAAC;AA8CpC,2CAA2C;AAC3C,MAAa,EAAE;IAUX,YAAmB,MAKlB;QACG,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,0BAAkB,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,uCAAuC;IAChC,GAAG;QACN,MAAM,WAAW,GAAG,IAAI,4BAAW,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxB,OAAO,WAAW,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,8CAA8C;IACvC,OAAO;QACV,MAAM,YAAY,GAAG,IAAI,8BAAY,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACzB,OAAO,YAAY,CAAC,MAAM,CAAC;IAC/B,CAAC;IAED,uCAAuC;IAChC,KAAK,CAAC,MAAc;QACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,IAAA,yBAAY,EAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,IAAA,yBAAY,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAChC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACJ;AAjDD,gBAiDC;AAED,SAAgB,YAAY,CAAC,KAAY;IACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,kBAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO;QACH,KAAK;QACL,MAAM;KACT,CAAC;AACN,CAAC;AAPD,oCAOC;AAED,oCAAoC;AACpC,SAAgB,aAAa,CAAC,QAAkB,EAAE,MAAc;IAC5D,MAAM,IAAI,GACN,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,IAAA,mBAAU,EAAC,QAAQ,CAAC,IAAI,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AACnC,CAAC;AAPD,sCAOC;AAED,kCAAkC;AAClC,SAAgB,YAAY,CAAC,KAAc,EAAE,MAAc;IACvD,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,kBAAM,EAAE,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,wBAAgB,CAAC,CAAC;AACtD,CAAC;AAJD,oCAIC;AAED,mCAAmC;AACnC,SAAgB,aAAa,CAAC,MAAgB,EAAE,MAAc;IAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAHD,sCAGC;AAED,wCAAwC;AACxC,SAAgB,WAAW,CAAC,KAAc;IACtC,OAAO;QACH,OAAO,EAAE;YACL,IAAI,EACA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAClC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;gBACpB,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC5C,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM;SAC/B;QACD,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI;YACxB,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK;YAC3B,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE;YACjD,YAAY,EAAE,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,EAAE;SACpD;KACJ,CAAC;AACN,CAAC;AAjBD,kCAiBC;AAED,yCAAyC;AACzC,SAAgB,YAAY,CAAC,MAAgB;IACzC,OAAO;QACH,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE;KAC/B,CAAC;AACN,CAAC;AALD,oCAKC"}
|
package/dist/txBuilder.d.ts
CHANGED
|
@@ -56,7 +56,11 @@ export declare class TxBuilder {
|
|
|
56
56
|
private inputSum;
|
|
57
57
|
private prepareOutputs;
|
|
58
58
|
/** Sign the tx built by this builder and return a Tx */
|
|
59
|
-
sign(
|
|
59
|
+
sign(params?: {
|
|
60
|
+
ecc?: Ecc;
|
|
61
|
+
feePerKb?: number;
|
|
62
|
+
dustLimit?: number;
|
|
63
|
+
}): Tx;
|
|
60
64
|
}
|
|
61
65
|
/** Calculate the required tx fee for the given txSize and feePerKb,
|
|
62
66
|
* rounding up */
|
package/dist/txBuilder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txBuilder.d.ts","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAEH,EAAE,EACF,OAAO,EACP,QAAQ,EAGX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAc,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE9D;;;;;;;;;;;;;;;IAeI;AACJ,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;AAErE,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,oDAAoD;AACpD,qBAAa,SAAS;IAClB,mCAAmC;IAC5B,OAAO,EAAE,MAAM,CAAC;IACvB,+CAA+C;IACxC,MAAM,EAAE,cAAc,EAAE,CAAC;IAChC;;;QAGI;IACG,OAAO,EAAE,eAAe,EAAE,CAAC;IAClC,oCAAoC;IAC7B,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,CAAC,EAAE;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAOD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,cAAc;IA8BtB,wDAAwD;IACjD,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"txBuilder.d.ts","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AAIzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,WAAW,EAAsB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAEH,EAAE,EACF,OAAO,EACP,QAAQ,EAGX,MAAM,SAAS,CAAC;AACjB,OAAO,EAAc,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE9D;;;;;;;;;;;;;;;IAeI;AACJ,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,KAAK,MAAM,CAAC;AAErE,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,oDAAoD;AACpD,qBAAa,SAAS;IAClB,mCAAmC;IAC5B,OAAO,EAAE,MAAM,CAAC;IACvB,+CAA+C;IACxC,MAAM,EAAE,cAAc,EAAE,CAAC;IAChC;;;QAGI;IACG,OAAO,EAAE,eAAe,EAAE,CAAC;IAClC,oCAAoC;IAC7B,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,CAAC,EAAE;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;QAC1B,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAOD,0EAA0E;IAC1E,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,cAAc;IA8BtB,wDAAwD;IACjD,IAAI,CAAC,MAAM,CAAC,EAAE;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,EAAE;CAkFT;AAED;kBACkB;AAClB,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,gDAAgD;AAChD,wBAAgB,aAAa,CACzB,GAAG,EAAE,UAAU,EACf,YAAY,EAAE,WAAW,GAC1B,UAAU,CAKZ;AAED;;;IAGI;AACJ,wBAAgB,eAAe,CAC3B,GAAG,EAAE,GAAG,EACR,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,UAAU,EACnB,WAAW,EAAE,WAAW,GACzB,UAAU,CAMZ;AAED,kEAAkE;AAClE,eAAO,MAAM,cAAc,OACnB,UAAU,MACV,UAAU,eACD,WAAW,WAEX,GAAG,SAAS,eAAe,KAAG,MAM9C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,aAAa,OAAQ,UAAU,eAAe,WAAW,WACrD,GAAG,SAAS,eAAe,KAAG,MAM9C,CAAC"}
|
package/dist/txBuilder.js
CHANGED
|
@@ -3,10 +3,7 @@
|
|
|
3
3
|
// Distributed under the MIT software license, see the accompanying
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.P2PKSignatory = exports.P2PKHSignatory = exports.TxBuilder = void 0;
|
|
7
|
-
exports.calcTxFee = calcTxFee;
|
|
8
|
-
exports.flagSignature = flagSignature;
|
|
9
|
-
exports.signWithSigHash = signWithSigHash;
|
|
6
|
+
exports.P2PKSignatory = exports.P2PKHSignatory = exports.signWithSigHash = exports.flagSignature = exports.calcTxFee = exports.TxBuilder = void 0;
|
|
10
7
|
const ecc_js_1 = require("./ecc.js");
|
|
11
8
|
const hash_js_1 = require("./hash.js");
|
|
12
9
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
@@ -61,7 +58,8 @@ class TxBuilder {
|
|
|
61
58
|
return { fixedOutputSum, leftoverIdx, outputs };
|
|
62
59
|
}
|
|
63
60
|
/** Sign the tx built by this builder and return a Tx */
|
|
64
|
-
sign(
|
|
61
|
+
sign(params) {
|
|
62
|
+
const ecc = params?.ecc ?? new ecc_js_1.Ecc();
|
|
65
63
|
const { fixedOutputSum, leftoverIdx, outputs } = this.prepareOutputs();
|
|
66
64
|
const inputs = this.inputs.map(input => (0, tx_js_1.copyTxInput)(input.input));
|
|
67
65
|
const updateSignatories = (ecc, unsignedTx) => {
|
|
@@ -81,13 +79,13 @@ class TxBuilder {
|
|
|
81
79
|
if (inputSum === undefined) {
|
|
82
80
|
throw new Error('Using a leftover output requires setting SignData.value for all inputs');
|
|
83
81
|
}
|
|
84
|
-
if (feePerKb === undefined) {
|
|
82
|
+
if (params?.feePerKb === undefined) {
|
|
85
83
|
throw new Error('Using a leftover output requires setting feePerKb');
|
|
86
84
|
}
|
|
87
|
-
if (!Number.isInteger(feePerKb)) {
|
|
85
|
+
if (!Number.isInteger(params.feePerKb)) {
|
|
88
86
|
throw new Error('feePerKb must be an integer');
|
|
89
87
|
}
|
|
90
|
-
if (dustLimit === undefined) {
|
|
88
|
+
if (params?.dustLimit === undefined) {
|
|
91
89
|
throw new Error('Using a leftover output requires setting dustLimit');
|
|
92
90
|
}
|
|
93
91
|
const dummyUnsignedTx = unsignedTx_js_1.UnsignedTx.dummyFromTx(new tx_js_1.Tx({
|
|
@@ -99,16 +97,16 @@ class TxBuilder {
|
|
|
99
97
|
// Must use dummy here because ECDSA sigs could be too small for fee calc
|
|
100
98
|
updateSignatories(new ecc_js_1.EccDummy(), dummyUnsignedTx);
|
|
101
99
|
let txSize = dummyUnsignedTx.tx.serSize();
|
|
102
|
-
let txFee = calcTxFee(txSize, feePerKb);
|
|
100
|
+
let txFee = calcTxFee(txSize, params.feePerKb);
|
|
103
101
|
const leftoverValue = inputSum - (fixedOutputSum + txFee);
|
|
104
|
-
if (leftoverValue < dustLimit) {
|
|
102
|
+
if (leftoverValue < params.dustLimit) {
|
|
105
103
|
// inputs cannot pay for a dust leftover -> remove & recalc
|
|
106
104
|
outputs.splice(leftoverIdx, 1);
|
|
107
105
|
dummyUnsignedTx.tx.outputs = outputs;
|
|
108
106
|
// Must update signatories again as they might depend on outputs
|
|
109
107
|
updateSignatories(new ecc_js_1.EccDummy(), dummyUnsignedTx);
|
|
110
108
|
txSize = dummyUnsignedTx.tx.serSize();
|
|
111
|
-
txFee = calcTxFee(txSize, feePerKb);
|
|
109
|
+
txFee = calcTxFee(txSize, params.feePerKb);
|
|
112
110
|
}
|
|
113
111
|
else {
|
|
114
112
|
outputs[leftoverIdx].value = leftoverValue;
|
|
@@ -133,6 +131,7 @@ exports.TxBuilder = TxBuilder;
|
|
|
133
131
|
function calcTxFee(txSize, feePerKb) {
|
|
134
132
|
return (BigInt(txSize) * BigInt(feePerKb) + 999n) / 1000n;
|
|
135
133
|
}
|
|
134
|
+
exports.calcTxFee = calcTxFee;
|
|
136
135
|
/** Append the sighash flags to the signature */
|
|
137
136
|
function flagSignature(sig, sigHashFlags) {
|
|
138
137
|
const writer = new writerbytes_js_1.WriterBytes(sig.length + 1);
|
|
@@ -140,6 +139,7 @@ function flagSignature(sig, sigHashFlags) {
|
|
|
140
139
|
writer.putU8(sigHashFlags.toInt() & 0xff);
|
|
141
140
|
return writer.data;
|
|
142
141
|
}
|
|
142
|
+
exports.flagSignature = flagSignature;
|
|
143
143
|
/**
|
|
144
144
|
* Sign the sighash using Schnorr for BIP143 signatures and ECDSA for Legacy
|
|
145
145
|
* signatures, and then flags the signature correctly
|
|
@@ -150,6 +150,7 @@ function signWithSigHash(ecc, sk, sigHash, sigHashType) {
|
|
|
150
150
|
: ecc.schnorrSign(sk, sigHash);
|
|
151
151
|
return flagSignature(sig, sigHashType);
|
|
152
152
|
}
|
|
153
|
+
exports.signWithSigHash = signWithSigHash;
|
|
153
154
|
/** Signatory for a P2PKH input. Always uses Schnorr signatures */
|
|
154
155
|
const P2PKHSignatory = (sk, pk, sigHashType) => {
|
|
155
156
|
return (ecc, input) => {
|
package/dist/txBuilder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"txBuilder.js","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;
|
|
1
|
+
{"version":3,"file":"txBuilder.js","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,qCAAyC;AACzC,uCAAoC;AACpC,wDAAkD;AAClD,mCAAsC;AACtC,2CAAqC;AACrC,qDAAmE;AACnE,mCAOiB;AACjB,mDAA8D;AAmC9D,oDAAoD;AACpD,MAAa,SAAS;IAalB,YAAmB,MAKlB;QACG,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,0BAAkB,CAAC;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,QAAQ,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,0EAA0E;IAClE,QAAQ;QACZ,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACrC,OAAO,SAAS,CAAC;YACrB,CAAC;YACD,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,cAAc;QAKlB,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,WAAW,GAAuB,SAAS,CAAC;QAChD,IAAI,OAAO,GAAe,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC;YACjD,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;gBAC9B,qCAAqC;gBACrC,qEAAqE;gBACrE,2DAA2D;gBAC3D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;oBAC5B,MAAM,gDAAgD,CAAC;gBAC3D,CAAC;gBACD,WAAW,GAAG,GAAG,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,GAAG;oBACX,KAAK,EAAE,CAAC,EAAE,cAAc;oBACxB,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE;iBAC/B,CAAC;YACN,CAAC;iBAAM,CAAC;gBACJ,cAAc,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9C,OAAO,CAAC,GAAG,CAAC,GAAG,IAAA,oBAAY,EAAC,aAAa,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;QACD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IACpD,CAAC;IAED,wDAAwD;IACjD,IAAI,CAAC,MAIX;QACG,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,IAAI,YAAG,EAAE,CAAC;QACrC,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACvE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,mBAAW,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,MAAM,iBAAiB,GAAG,CAAC,GAAQ,EAAE,UAAsB,EAAE,EAAE;YAC3D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC;gBAChD,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;gBAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC1B,KAAK,CAAC,MAAM,GAAG,SAAS,CACpB,GAAG,EACH,IAAI,+BAAe,CAAC;wBAChB,QAAQ,EAAE,GAAG;wBACb,UAAU;qBACb,CAAC,CACL,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC,CAAC;QACF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACX,wEAAwE,CAC3E,CAAC;YACN,CAAC;YACD,IAAI,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CACX,mDAAmD,CACtD,CAAC;YACN,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACrC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACnD,CAAC;YACD,IAAI,MAAM,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACX,oDAAoD,CACvD,CAAC;YACN,CAAC;YACD,MAAM,eAAe,GAAG,0BAAU,CAAC,WAAW,CAC1C,IAAI,UAAE,CAAC;gBACH,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM;gBACN,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC,CACL,CAAC;YACF,yEAAyE;YACzE,iBAAiB,CAAC,IAAI,iBAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;YACnD,IAAI,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;YAC1C,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/C,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC;YAC1D,IAAI,aAAa,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnC,2DAA2D;gBAC3D,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC/B,eAAe,CAAC,EAAE,CAAC,OAAO,GAAG,OAAO,CAAC;gBACrC,gEAAgE;gBAChE,iBAAiB,CAAC,IAAI,iBAAQ,EAAE,EAAE,eAAe,CAAC,CAAC;gBACnD,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBACtC,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC;YAC/C,CAAC;YACD,IAAI,QAAQ,GAAG,cAAc,GAAG,KAAK,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACX,6BAA6B,QAAQ,uBACjC,QAAQ,GAAG,cACf,cAAc,KAAK,WAAW,CACjC,CAAC;YACN,CAAC;QACL,CAAC;QACD,MAAM,UAAU,GAAG,0BAAU,CAAC,MAAM,CAChC,IAAI,UAAE,CAAC;YACH,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,OAAO;YACP,QAAQ,EAAE,IAAI,CAAC,QAAQ;SAC1B,CAAC,CACL,CAAC;QACF,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACnC,OAAO,UAAU,CAAC,EAAE,CAAC;IACzB,CAAC;CACJ;AA1JD,8BA0JC;AAED;kBACkB;AAClB,SAAgB,SAAS,CAAC,MAAc,EAAE,QAAgB;IACtD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;AAC9D,CAAC;AAFD,8BAEC;AAED,gDAAgD;AAChD,SAAgB,aAAa,CACzB,GAAe,EACf,YAAyB;IAEzB,MAAM,MAAM,GAAG,IAAI,4BAAW,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrB,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC;AACvB,CAAC;AARD,sCAQC;AAED;;;IAGI;AACJ,SAAgB,eAAe,CAC3B,GAAQ,EACR,EAAc,EACd,OAAmB,EACnB,WAAwB;IAExB,MAAM,GAAG,GACL,WAAW,CAAC,OAAO,IAAI,mCAAkB,CAAC,MAAM;QAC5C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC;QAC5B,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC;AAXD,0CAWC;AAED,kEAAkE;AAC3D,MAAM,cAAc,GAAG,CAC1B,EAAc,EACd,EAAc,EACd,WAAwB,EAC1B,EAAE;IACA,OAAO,CAAC,GAAQ,EAAE,KAAsB,EAAU,EAAE;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,iBAAO,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAClE,OAAO,kBAAM,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC;AACN,CAAC,CAAC;AAXW,QAAA,cAAc,kBAWzB;AAEF,iEAAiE;AAC1D,MAAM,aAAa,GAAG,CAAC,EAAc,EAAE,WAAwB,EAAE,EAAE;IACtE,OAAO,CAAC,GAAQ,EAAE,KAAsB,EAAU,EAAE;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,OAAO,GAAG,IAAA,iBAAO,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAClE,OAAO,kBAAM,CAAC,OAAO,CAAC,CAAC,IAAA,mBAAW,EAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;AACN,CAAC,CAAC;AAPW,QAAA,aAAa,iBAOxB"}
|
package/package.json
CHANGED
package/src/ecc.ts
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
// Distributed under the MIT software license, see the accompanying
|
|
3
3
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
4
|
|
|
5
|
-
import { GlobalThisExt } from './hash';
|
|
6
|
-
|
|
7
5
|
/** Interface to abstract over Elliptic Curve Cryptography */
|
|
8
6
|
export interface Ecc {
|
|
9
7
|
/** Derive a public key from secret key. */
|
|
@@ -26,6 +24,12 @@ export interface Ecc {
|
|
|
26
24
|
|
|
27
25
|
/** Add a scalar to a public key (adding G*b) */
|
|
28
26
|
pubkeyAdd(a: Uint8Array, b: Uint8Array): Uint8Array;
|
|
27
|
+
|
|
28
|
+
/** Sign a ECDSA recoverable signature, includes the recovery ID */
|
|
29
|
+
signRecoverable(seckey: Uint8Array, msg: Uint8Array): Uint8Array;
|
|
30
|
+
|
|
31
|
+
/** Recover the public key of an ECDSA signed signature (with recovery ID) */
|
|
32
|
+
recoverSig(sig: Uint8Array, msg: Uint8Array): Uint8Array;
|
|
29
33
|
}
|
|
30
34
|
|
|
31
35
|
/** Dummy Ecc impl that always returns 0, useful for measuring tx size */
|
|
@@ -53,77 +57,61 @@ export class EccDummy implements Ecc {
|
|
|
53
57
|
pubkeyAdd(_a: Uint8Array, _b: Uint8Array): Uint8Array {
|
|
54
58
|
return new Uint8Array(32);
|
|
55
59
|
}
|
|
60
|
+
|
|
61
|
+
signRecoverable(_seckey: Uint8Array, _msg: Uint8Array): Uint8Array {
|
|
62
|
+
return new Uint8Array(65);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
recoverSig(_sig: Uint8Array, _msg: Uint8Array): Uint8Array {
|
|
66
|
+
return new Uint8Array(33);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
const ECC: { ecc?: Ecc } = {};
|
|
71
|
+
|
|
72
|
+
export function __setEcc(ecc: Ecc) {
|
|
73
|
+
ECC.ecc = ecc;
|
|
56
74
|
}
|
|
57
75
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
throw new Error('Ecc not initialized. Call initWasm first.');
|
|
63
|
-
}
|
|
76
|
+
export class Ecc implements Ecc {
|
|
77
|
+
/** Derive a public key from secret key. */
|
|
78
|
+
derivePubkey(seckey: Uint8Array): Uint8Array {
|
|
79
|
+
return ECC.ecc!.derivePubkey(seckey);
|
|
64
80
|
}
|
|
65
81
|
|
|
66
|
-
|
|
67
|
-
|
|
82
|
+
/** Sign an ECDSA signature. msg needs to be a 32-byte hash */
|
|
83
|
+
ecdsaSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array {
|
|
84
|
+
return ECC.ecc!.ecdsaSign(seckey, msg);
|
|
68
85
|
}
|
|
69
86
|
|
|
70
|
-
|
|
71
|
-
|
|
87
|
+
/** Sign a Schnorr signature. msg needs to be a 32-byte hash */
|
|
88
|
+
schnorrSign(seckey: Uint8Array, msg: Uint8Array): Uint8Array {
|
|
89
|
+
return ECC.ecc!.schnorrSign(seckey, msg);
|
|
72
90
|
}
|
|
73
91
|
|
|
74
|
-
|
|
75
|
-
|
|
92
|
+
/**
|
|
93
|
+
* Return whether the given secret key is valid, i.e. whether is of correct
|
|
94
|
+
* length (32 bytes) and is on the curve.
|
|
95
|
+
*/
|
|
96
|
+
isValidSeckey(seckey: Uint8Array): boolean {
|
|
97
|
+
return ECC.ecc!.isValidSeckey(seckey);
|
|
76
98
|
}
|
|
77
99
|
|
|
78
|
-
|
|
79
|
-
|
|
100
|
+
/** Add a scalar to a secret key */
|
|
101
|
+
seckeyAdd(a: Uint8Array, b: Uint8Array): Uint8Array {
|
|
102
|
+
return ECC.ecc!.seckeyAdd(a, b);
|
|
80
103
|
}
|
|
81
104
|
|
|
82
|
-
|
|
83
|
-
|
|
105
|
+
/** Add a scalar to a public key (adding G*b) */
|
|
106
|
+
pubkeyAdd(a: Uint8Array, b: Uint8Array): Uint8Array {
|
|
107
|
+
return ECC.ecc!.pubkeyAdd(a, b);
|
|
84
108
|
}
|
|
85
109
|
|
|
86
|
-
|
|
87
|
-
|
|
110
|
+
signRecoverable(seckey: Uint8Array, msg: Uint8Array): Uint8Array {
|
|
111
|
+
return ECC.ecc!.signRecoverable(seckey, msg);
|
|
88
112
|
}
|
|
89
|
-
}
|
|
90
113
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
* If we have this kind of app structure:
|
|
95
|
-
* - AppOne has ecash-lib as a dependency
|
|
96
|
-
* - AppTwo has ecash-lib as a dependency
|
|
97
|
-
* - AppOne has AppTwo as a dependency
|
|
98
|
-
*
|
|
99
|
-
* So, we expect AppOne to use AppTwo methods that need initWasm()
|
|
100
|
-
* However, if we initWasm() in AppOne, these methods are not available in AppTwo
|
|
101
|
-
*
|
|
102
|
-
* We can get them into the globalThis with initWasm, but we still need Ecc to dynamically
|
|
103
|
-
* check the globalThis and realize it is there --- to preserve lib syntax
|
|
104
|
-
*
|
|
105
|
-
* In this way, users can still call "new Ecc()"
|
|
106
|
-
*
|
|
107
|
-
* With just globalThis, users must call "new (globalThis as unknown as GlobalThis).ecashlib.Ecc()"
|
|
108
|
-
*
|
|
109
|
-
* Note that we "redefine" EccUninitialized in the implementation, because we do not want
|
|
110
|
-
* console.log(Ecc) to give "EccUnitialized" even when it works; "EccProxy" is more accurate
|
|
111
|
-
*/
|
|
112
|
-
|
|
113
|
-
export const Ecc: new () => Ecc = function () {
|
|
114
|
-
const currentEcc =
|
|
115
|
-
'ecashlib' in globalThis &&
|
|
116
|
-
'Ecc' in (globalThis as unknown as GlobalThisExt).ecashlib
|
|
117
|
-
? (globalThis as unknown as GlobalThisExt).ecashlib.Ecc
|
|
118
|
-
: EccUninitialized;
|
|
119
|
-
return new currentEcc();
|
|
120
|
-
} as unknown as { new (): Ecc };
|
|
121
|
-
|
|
122
|
-
export function __setEcc(ecc: { new (): Ecc }) {
|
|
123
|
-
Object.assign(globalThis, {
|
|
124
|
-
ecashlib: {
|
|
125
|
-
...((globalThis as Record<string, any>).ecashlib || {}),
|
|
126
|
-
Ecc: ecc,
|
|
127
|
-
},
|
|
128
|
-
} as Partial<GlobalThisExt>);
|
|
114
|
+
recoverSig(sig: Uint8Array, msg: Uint8Array): Uint8Array {
|
|
115
|
+
return ECC.ecc!.recoverSig(sig, msg);
|
|
116
|
+
}
|
|
129
117
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const ECASH_LIB_WASM_BASE64: string;
|