ecash-lib 0.2.0-rc → 0.2.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 +80 -15
- package/dist/{src/ecc.d.ts → ecc.d.ts} +6 -2
- package/dist/ecc.d.ts.map +1 -0
- package/dist/{src/ecc.js → ecc.js} +9 -6
- package/dist/ecc.js.map +1 -0
- package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
- package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm.d.ts +16 -0
- package/dist/ffi/{ecash_lib_wasm.js → ecash_lib_wasm_browser.js} +1 -1
- package/dist/ffi/ecash_lib_wasm_nodejs.d.ts +50 -0
- package/dist/ffi/ecash_lib_wasm_nodejs.js +265 -0
- package/dist/hash.d.ts +11 -0
- package/dist/hash.d.ts.map +1 -0
- package/dist/hash.js +24 -0
- package/dist/hash.js.map +1 -0
- package/dist/{src/index.d.ts → index.d.ts} +5 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/indexBrowser.d.ts +3 -0
- package/dist/indexBrowser.d.ts.map +1 -0
- package/dist/indexBrowser.js +22 -0
- package/dist/indexBrowser.js.map +1 -0
- package/dist/indexNodeJs.d.ts +3 -0
- package/dist/indexNodeJs.d.ts.map +1 -0
- package/dist/indexNodeJs.js +22 -0
- package/dist/indexNodeJs.js.map +1 -0
- package/dist/initBrowser.d.ts +3 -0
- package/dist/initBrowser.d.ts.map +1 -0
- package/dist/initBrowser.js +44 -0
- package/dist/initBrowser.js.map +1 -0
- package/dist/initNodeJs.d.ts +3 -0
- package/dist/initNodeJs.d.ts.map +1 -0
- package/dist/initNodeJs.js +43 -0
- package/dist/initNodeJs.js.map +1 -0
- package/dist/io/bytes.d.ts.map +1 -0
- package/dist/{src/io → io}/bytes.js +5 -1
- package/dist/io/bytes.js.map +1 -0
- package/dist/io/hex.d.ts.map +1 -0
- package/dist/{src/io → io}/hex.js +11 -4
- package/dist/io/hex.js.map +1 -0
- package/dist/io/int.d.ts.map +1 -0
- package/dist/{src/io → io}/int.js +2 -1
- package/dist/io/int.js.map +1 -0
- package/dist/io/str.d.ts +5 -0
- package/dist/io/str.d.ts.map +1 -0
- package/dist/io/str.js +19 -0
- package/dist/io/str.js.map +1 -0
- package/dist/io/varsize.d.ts.map +1 -0
- package/dist/{src/io → io}/varsize.js +7 -2
- package/dist/io/varsize.js.map +1 -0
- package/dist/io/writer.d.ts.map +1 -0
- package/dist/{src/io → io}/writer.js +2 -1
- package/dist/io/writer.js.map +1 -0
- package/dist/io/writerbytes.d.ts.map +1 -0
- package/dist/{src/io → io}/writerbytes.js +5 -1
- package/dist/io/writerbytes.js.map +1 -0
- package/dist/io/writerlength.d.ts.map +1 -0
- package/dist/{src/io → io}/writerlength.js +5 -1
- package/dist/io/writerlength.js.map +1 -0
- package/dist/op.d.ts.map +1 -0
- package/dist/{src/op.js → op.js} +23 -16
- package/dist/op.js.map +1 -0
- package/dist/opcode.d.ts.map +1 -0
- package/dist/opcode.js +141 -0
- package/dist/opcode.js.map +1 -0
- package/dist/{src/script.d.ts → script.d.ts} +2 -0
- package/dist/script.d.ts.map +1 -0
- package/dist/script.js +196 -0
- package/dist/script.js.map +1 -0
- package/dist/sigHashType.d.ts.map +1 -0
- package/dist/{src/sigHashType.js → sigHashType.js} +23 -19
- package/dist/sigHashType.js.map +1 -0
- package/dist/test/testRunner.d.ts +21 -0
- package/dist/test/testRunner.d.ts.map +1 -0
- package/dist/test/testRunner.js +171 -0
- package/dist/test/testRunner.js.map +1 -0
- package/dist/token/alp.d.ts.map +1 -0
- package/dist/token/alp.js +117 -0
- package/dist/token/alp.js.map +1 -0
- package/dist/{src/token → token}/common.d.ts +4 -0
- package/dist/token/common.d.ts.map +1 -0
- package/dist/token/common.js +12 -0
- package/dist/token/common.js.map +1 -0
- package/dist/token/empp.d.ts.map +1 -0
- package/dist/{src/token → token}/empp.js +13 -9
- package/dist/token/empp.js.map +1 -0
- package/dist/token/slp.d.ts +35 -0
- package/dist/token/slp.d.ts.map +1 -0
- package/dist/token/slp.js +172 -0
- package/dist/token/slp.js.map +1 -0
- package/dist/{src/tx.d.ts → tx.d.ts} +4 -0
- package/dist/tx.d.ts.map +1 -0
- package/dist/{src/tx.js → tx.js} +40 -20
- package/dist/tx.js.map +1 -0
- package/dist/txBuilder.d.ts.map +1 -0
- package/dist/{src/txBuilder.js → txBuilder.js} +36 -25
- package/dist/txBuilder.js.map +1 -0
- package/dist/unsignedTx.d.ts.map +1 -0
- package/dist/{src/unsignedTx.js → unsignedTx.js} +34 -29
- package/dist/unsignedTx.js.map +1 -0
- package/package.json +7 -4
- package/tsconfig.build.json +13 -0
- package/tsconfig.json +4 -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/ffi/ecash_lib_wasm_bg.wasm +0 -0
- package/dist/src/ecc.d.ts.map +0 -1
- package/dist/src/ecc.js.map +0 -1
- package/dist/src/hash.d.ts +0 -5
- package/dist/src/hash.d.ts.map +0 -1
- package/dist/src/hash.js +0 -8
- package/dist/src/hash.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -21
- package/dist/src/index.js.map +0 -1
- package/dist/src/init.d.ts +0 -3
- package/dist/src/init.d.ts.map +0 -1
- package/dist/src/init.js +0 -18
- package/dist/src/init.js.map +0 -1
- package/dist/src/io/bytes.d.ts.map +0 -1
- package/dist/src/io/bytes.js.map +0 -1
- package/dist/src/io/hex.d.ts.map +0 -1
- package/dist/src/io/hex.js.map +0 -1
- package/dist/src/io/int.d.ts.map +0 -1
- package/dist/src/io/int.js.map +0 -1
- package/dist/src/io/str.d.ts +0 -3
- package/dist/src/io/str.d.ts.map +0 -1
- package/dist/src/io/str.js +0 -9
- package/dist/src/io/str.js.map +0 -1
- package/dist/src/io/varsize.d.ts.map +0 -1
- package/dist/src/io/varsize.js.map +0 -1
- package/dist/src/io/writer.d.ts.map +0 -1
- package/dist/src/io/writer.js.map +0 -1
- package/dist/src/io/writerbytes.d.ts.map +0 -1
- package/dist/src/io/writerbytes.js.map +0 -1
- package/dist/src/io/writerlength.d.ts.map +0 -1
- package/dist/src/io/writerlength.js.map +0 -1
- package/dist/src/op.d.ts.map +0 -1
- package/dist/src/op.js.map +0 -1
- package/dist/src/opcode.d.ts.map +0 -1
- package/dist/src/opcode.js +0 -136
- package/dist/src/opcode.js.map +0 -1
- package/dist/src/script.d.ts.map +0 -1
- package/dist/src/script.js +0 -132
- package/dist/src/script.js.map +0 -1
- package/dist/src/sigHashType.d.ts.map +0 -1
- package/dist/src/sigHashType.js.map +0 -1
- package/dist/src/token/alp.d.ts.map +0 -1
- package/dist/src/token/alp.js +0 -110
- package/dist/src/token/alp.js.map +0 -1
- package/dist/src/token/common.d.ts.map +0 -1
- package/dist/src/token/common.js +0 -9
- package/dist/src/token/common.js.map +0 -1
- package/dist/src/token/empp.d.ts.map +0 -1
- package/dist/src/token/empp.js.map +0 -1
- package/dist/src/tx.d.ts.map +0 -1
- package/dist/src/tx.js.map +0 -1
- package/dist/src/txBuilder.d.ts.map +0 -1
- package/dist/src/txBuilder.js.map +0 -1
- package/dist/src/unsignedTx.d.ts.map +0 -1
- package/dist/src/unsignedTx.js.map +0 -1
- package/tests/alp.test.ts +0 -515
- package/tests/txBuilder.test.ts +0 -680
- /package/dist/ffi/{ecash_lib_wasm_bg.wasm.d.ts → ecash_lib_wasm_bg_browser.wasm.d.ts} +0 -0
- /package/dist/ffi/{ecash_lib_wasm.d.ts → ecash_lib_wasm_browser.d.ts} +0 -0
- /package/dist/{src/io → io}/bytes.d.ts +0 -0
- /package/dist/{src/io → io}/hex.d.ts +0 -0
- /package/dist/{src/io → io}/int.d.ts +0 -0
- /package/dist/{src/io → io}/varsize.d.ts +0 -0
- /package/dist/{src/io → io}/writer.d.ts +0 -0
- /package/dist/{src/io → io}/writerbytes.d.ts +0 -0
- /package/dist/{src/io → io}/writerlength.d.ts +0 -0
- /package/dist/{src/op.d.ts → op.d.ts} +0 -0
- /package/dist/{src/opcode.d.ts → opcode.d.ts} +0 -0
- /package/dist/{src/sigHashType.d.ts → sigHashType.d.ts} +0 -0
- /package/dist/{src/token → token}/alp.d.ts +0 -0
- /package/dist/{src/token → token}/empp.d.ts +0 -0
- /package/dist/{src/txBuilder.d.ts → txBuilder.d.ts} +0 -0
- /package/dist/{src/unsignedTx.d.ts → unsignedTx.d.ts} +0 -0
package/dist/{src/tx.js → tx.js}
RENAMED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// Copyright (c) 2024 The Bitcoin developers
|
|
2
3
|
// Distributed under the MIT software license, see the accompanying
|
|
3
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.copyTxOutput = exports.copyTxInput = exports.writeTxOutput = exports.writeTxInput = exports.writeOutPoint = exports.readTxOutput = exports.Tx = exports.DEFAULT_TX_VERSION = exports.DEFAULT_SEQUENCE = void 0;
|
|
7
|
+
const hex_js_1 = require("./io/hex.js");
|
|
8
|
+
const varsize_js_1 = require("./io/varsize.js");
|
|
9
|
+
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
10
|
+
const writerlength_js_1 = require("./io/writerlength.js");
|
|
11
|
+
const script_js_1 = require("./script.js");
|
|
9
12
|
/**
|
|
10
13
|
* Default value for nSequence of inputs if left undefined; this opts out of
|
|
11
14
|
* BIP68 relative lock-time, and if all inputs have this value, nLockTime is
|
|
@@ -14,62 +17,77 @@ import { Script } from './script.js';
|
|
|
14
17
|
* This is chosen as the default as it's the default in the node too,
|
|
15
18
|
* see CTxIn in /src/primitives/transaction.h.
|
|
16
19
|
**/
|
|
17
|
-
|
|
20
|
+
exports.DEFAULT_SEQUENCE = 0xffffffff;
|
|
21
|
+
/** Current tx version, see CTransaction in /stc/primitives/transaction.h */
|
|
22
|
+
exports.DEFAULT_TX_VERSION = 2;
|
|
18
23
|
/** CTransaction, a Bitcoin transaction. */
|
|
19
|
-
|
|
24
|
+
class Tx {
|
|
20
25
|
constructor(params) {
|
|
21
|
-
this.version = params?.version ??
|
|
26
|
+
this.version = params?.version ?? exports.DEFAULT_TX_VERSION;
|
|
22
27
|
this.inputs = params?.inputs ?? [];
|
|
23
28
|
this.outputs = params?.outputs ?? [];
|
|
24
29
|
this.locktime = params?.locktime ?? 0;
|
|
25
30
|
}
|
|
26
31
|
/** Serialize the tx to a byte array */
|
|
27
32
|
ser() {
|
|
28
|
-
const writerBytes = new WriterBytes(this.serSize());
|
|
33
|
+
const writerBytes = new writerbytes_js_1.WriterBytes(this.serSize());
|
|
29
34
|
this.write(writerBytes);
|
|
30
35
|
return writerBytes.data;
|
|
31
36
|
}
|
|
32
37
|
/** Calculate the serialized size of the tx */
|
|
33
38
|
serSize() {
|
|
34
|
-
const writerLength = new WriterLength();
|
|
39
|
+
const writerLength = new writerlength_js_1.WriterLength();
|
|
35
40
|
this.write(writerLength);
|
|
36
41
|
return writerLength.length;
|
|
37
42
|
}
|
|
38
43
|
/** Write the tx to the given writer */
|
|
39
44
|
write(writer) {
|
|
40
45
|
writer.putU32(this.version);
|
|
41
|
-
writeVarSize(this.inputs.length, writer);
|
|
46
|
+
(0, varsize_js_1.writeVarSize)(this.inputs.length, writer);
|
|
42
47
|
for (const input of this.inputs) {
|
|
43
48
|
writeTxInput(input, writer);
|
|
44
49
|
}
|
|
45
|
-
writeVarSize(this.outputs.length, writer);
|
|
50
|
+
(0, varsize_js_1.writeVarSize)(this.outputs.length, writer);
|
|
46
51
|
for (const output of this.outputs) {
|
|
47
52
|
writeTxOutput(output, writer);
|
|
48
53
|
}
|
|
49
54
|
writer.putU32(this.locktime);
|
|
50
55
|
}
|
|
51
56
|
}
|
|
57
|
+
exports.Tx = Tx;
|
|
58
|
+
function readTxOutput(bytes) {
|
|
59
|
+
const value = bytes.readU64();
|
|
60
|
+
const script = script_js_1.Script.readWithSize(bytes);
|
|
61
|
+
return {
|
|
62
|
+
value,
|
|
63
|
+
script,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
exports.readTxOutput = readTxOutput;
|
|
52
67
|
/** Write an outpoint to a Writer */
|
|
53
|
-
|
|
68
|
+
function writeOutPoint(outpoint, writer) {
|
|
54
69
|
const txid = typeof outpoint.txid === 'string'
|
|
55
|
-
? fromHexRev(outpoint.txid)
|
|
70
|
+
? (0, hex_js_1.fromHexRev)(outpoint.txid)
|
|
56
71
|
: outpoint.txid;
|
|
57
72
|
writer.putBytes(txid);
|
|
58
73
|
writer.putU32(outpoint.outIdx);
|
|
59
74
|
}
|
|
75
|
+
exports.writeOutPoint = writeOutPoint;
|
|
60
76
|
/** Write a TxInput to a Writer */
|
|
61
|
-
|
|
77
|
+
function writeTxInput(input, writer) {
|
|
62
78
|
writeOutPoint(input.prevOut, writer);
|
|
63
|
-
(input.script ?? new Script()).writeWithSize(writer);
|
|
64
|
-
writer.putU32(input.sequence ?? DEFAULT_SEQUENCE);
|
|
79
|
+
(input.script ?? new script_js_1.Script()).writeWithSize(writer);
|
|
80
|
+
writer.putU32(input.sequence ?? exports.DEFAULT_SEQUENCE);
|
|
65
81
|
}
|
|
82
|
+
exports.writeTxInput = writeTxInput;
|
|
66
83
|
/** Write a TxOutput to a Writer */
|
|
67
|
-
|
|
84
|
+
function writeTxOutput(output, writer) {
|
|
68
85
|
writer.putU64(output.value);
|
|
69
86
|
output.script.writeWithSize(writer);
|
|
70
87
|
}
|
|
88
|
+
exports.writeTxOutput = writeTxOutput;
|
|
71
89
|
/** Create a deep copy of the TxInput */
|
|
72
|
-
|
|
90
|
+
function copyTxInput(input) {
|
|
73
91
|
return {
|
|
74
92
|
prevOut: {
|
|
75
93
|
txid: typeof input.prevOut.txid === 'string'
|
|
@@ -86,11 +104,13 @@ export function copyTxInput(input) {
|
|
|
86
104
|
},
|
|
87
105
|
};
|
|
88
106
|
}
|
|
107
|
+
exports.copyTxInput = copyTxInput;
|
|
89
108
|
/** Create a deep copy of the TxOutput */
|
|
90
|
-
|
|
109
|
+
function copyTxOutput(output) {
|
|
91
110
|
return {
|
|
92
111
|
value: output.value,
|
|
93
112
|
script: output.script.copy(),
|
|
94
113
|
};
|
|
95
114
|
}
|
|
115
|
+
exports.copyTxOutput = copyTxOutput;
|
|
96
116
|
//# sourceMappingURL=tx.js.map
|
package/dist/tx.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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,EAAE,MAAM,kBAAkB,CAAC;AAC/C,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;IA2BtB,wDAAwD;IACjD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,EAAE;CAyFnE;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,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"}
|
|
@@ -1,17 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// Copyright (c) 2024 The Bitcoin developers
|
|
2
3
|
// Distributed under the MIT software license, see the accompanying
|
|
3
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.P2PKSignatory = exports.P2PKHSignatory = exports.flagSignature = exports.calcTxFee = exports.TxBuilder = void 0;
|
|
7
|
+
const ecc_js_1 = require("./ecc.js");
|
|
8
|
+
const hash_js_1 = require("./hash.js");
|
|
9
|
+
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
10
|
+
const op_js_1 = require("./op.js");
|
|
11
|
+
const script_js_1 = require("./script.js");
|
|
12
|
+
const tx_js_1 = require("./tx.js");
|
|
13
|
+
const unsignedTx_js_1 = require("./unsignedTx.js");
|
|
11
14
|
/** Class that can be used to build and sign txs. */
|
|
12
|
-
|
|
15
|
+
class TxBuilder {
|
|
13
16
|
constructor(params) {
|
|
14
|
-
this.version = params?.version ??
|
|
17
|
+
this.version = params?.version ?? tx_js_1.DEFAULT_TX_VERSION;
|
|
15
18
|
this.inputs = params?.inputs ?? [];
|
|
16
19
|
this.outputs = params?.outputs ?? [];
|
|
17
20
|
this.locktime = params?.locktime ?? 0;
|
|
@@ -33,7 +36,7 @@ export class TxBuilder {
|
|
|
33
36
|
let outputs = new Array(this.outputs.length);
|
|
34
37
|
for (let idx = 0; idx < this.outputs.length; ++idx) {
|
|
35
38
|
const builderOutput = this.outputs[idx];
|
|
36
|
-
if (builderOutput instanceof Script) {
|
|
39
|
+
if (builderOutput instanceof script_js_1.Script) {
|
|
37
40
|
if (leftoverIdx !== undefined) {
|
|
38
41
|
throw 'Multiple leftover outputs, can at most use one';
|
|
39
42
|
}
|
|
@@ -45,7 +48,7 @@ export class TxBuilder {
|
|
|
45
48
|
}
|
|
46
49
|
else {
|
|
47
50
|
fixedOutputSum += BigInt(builderOutput.value);
|
|
48
|
-
outputs[idx] = copyTxOutput(builderOutput);
|
|
51
|
+
outputs[idx] = (0, tx_js_1.copyTxOutput)(builderOutput);
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
return { fixedOutputSum, leftoverIdx, outputs };
|
|
@@ -53,7 +56,7 @@ export class TxBuilder {
|
|
|
53
56
|
/** Sign the tx built by this builder and return a Tx */
|
|
54
57
|
sign(ecc, feePerKb, dustLimit) {
|
|
55
58
|
const { fixedOutputSum, leftoverIdx, outputs } = this.prepareOutputs();
|
|
56
|
-
const inputs = this.inputs.map(input => copyTxInput(input.input));
|
|
59
|
+
const inputs = this.inputs.map(input => (0, tx_js_1.copyTxInput)(input.input));
|
|
57
60
|
if (leftoverIdx !== undefined) {
|
|
58
61
|
const inputSum = this.inputSum();
|
|
59
62
|
if (inputSum === undefined) {
|
|
@@ -62,10 +65,13 @@ export class TxBuilder {
|
|
|
62
65
|
if (feePerKb === undefined) {
|
|
63
66
|
throw new Error('Using a leftover output requires setting feePerKb');
|
|
64
67
|
}
|
|
68
|
+
if (!Number.isInteger(feePerKb)) {
|
|
69
|
+
throw new Error('feePerKb must be an integer');
|
|
70
|
+
}
|
|
65
71
|
if (dustLimit === undefined) {
|
|
66
72
|
throw new Error('Using a leftover output requires setting dustLimit');
|
|
67
73
|
}
|
|
68
|
-
const dummyUnsignedTx = UnsignedTx.dummyFromTx(new Tx({
|
|
74
|
+
const dummyUnsignedTx = unsignedTx_js_1.UnsignedTx.dummyFromTx(new tx_js_1.Tx({
|
|
69
75
|
version: this.version,
|
|
70
76
|
inputs,
|
|
71
77
|
outputs,
|
|
@@ -77,7 +83,7 @@ export class TxBuilder {
|
|
|
77
83
|
if (signatory !== undefined) {
|
|
78
84
|
// Must use dummy here because ECDSA sigs could be too small
|
|
79
85
|
// for fee calc
|
|
80
|
-
input.script = signatory(new EccDummy(), new UnsignedTxInput({
|
|
86
|
+
input.script = signatory(new ecc_js_1.EccDummy(), new unsignedTx_js_1.UnsignedTxInput({
|
|
81
87
|
inputIdx,
|
|
82
88
|
unsignedTx: dummyUnsignedTx,
|
|
83
89
|
}));
|
|
@@ -100,7 +106,7 @@ export class TxBuilder {
|
|
|
100
106
|
throw new Error(`Insufficient input value (${inputSum}): Can only pay for ${inputSum - fixedOutputSum} fees, but ${txFee} required`);
|
|
101
107
|
}
|
|
102
108
|
}
|
|
103
|
-
const unsignedTx = UnsignedTx.fromTx(new Tx({
|
|
109
|
+
const unsignedTx = unsignedTx_js_1.UnsignedTx.fromTx(new tx_js_1.Tx({
|
|
104
110
|
version: this.version,
|
|
105
111
|
inputs,
|
|
106
112
|
outputs,
|
|
@@ -110,7 +116,7 @@ export class TxBuilder {
|
|
|
110
116
|
const signatory = this.inputs[inputIdx].signatory;
|
|
111
117
|
const input = inputs[inputIdx];
|
|
112
118
|
if (signatory !== undefined) {
|
|
113
|
-
input.script = signatory(ecc, new UnsignedTxInput({
|
|
119
|
+
input.script = signatory(ecc, new unsignedTx_js_1.UnsignedTxInput({
|
|
114
120
|
inputIdx,
|
|
115
121
|
unsignedTx,
|
|
116
122
|
}));
|
|
@@ -119,34 +125,39 @@ export class TxBuilder {
|
|
|
119
125
|
return unsignedTx.tx;
|
|
120
126
|
}
|
|
121
127
|
}
|
|
128
|
+
exports.TxBuilder = TxBuilder;
|
|
122
129
|
/** Calculate the required tx fee for the given txSize and feePerKb,
|
|
123
130
|
* rounding up */
|
|
124
|
-
|
|
131
|
+
function calcTxFee(txSize, feePerKb) {
|
|
125
132
|
return (BigInt(txSize) * BigInt(feePerKb) + 999n) / 1000n;
|
|
126
133
|
}
|
|
134
|
+
exports.calcTxFee = calcTxFee;
|
|
127
135
|
/** Append the sighash flags to the signature */
|
|
128
|
-
|
|
129
|
-
const writer = new WriterBytes(sig.length + 1);
|
|
136
|
+
function flagSignature(sig, sigHashFlags) {
|
|
137
|
+
const writer = new writerbytes_js_1.WriterBytes(sig.length + 1);
|
|
130
138
|
writer.putBytes(sig);
|
|
131
139
|
writer.putU8(sigHashFlags.toInt() & 0xff);
|
|
132
140
|
return writer.data;
|
|
133
141
|
}
|
|
142
|
+
exports.flagSignature = flagSignature;
|
|
134
143
|
/** Signatory for a P2PKH input. Always uses Schnorr signatures */
|
|
135
|
-
|
|
144
|
+
const P2PKHSignatory = (sk, pk, sigHashType) => {
|
|
136
145
|
return (ecc, input) => {
|
|
137
146
|
const preimage = input.sigHashPreimage(sigHashType);
|
|
138
|
-
const sighash = sha256d(preimage.bytes);
|
|
147
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
139
148
|
const sig = flagSignature(ecc.schnorrSign(sk, sighash), sigHashType);
|
|
140
|
-
return Script.p2pkhSpend(pk, sig);
|
|
149
|
+
return script_js_1.Script.p2pkhSpend(pk, sig);
|
|
141
150
|
};
|
|
142
151
|
};
|
|
152
|
+
exports.P2PKHSignatory = P2PKHSignatory;
|
|
143
153
|
/** Signatory for a P2PK input. Always uses Schnorr signatures */
|
|
144
|
-
|
|
154
|
+
const P2PKSignatory = (sk, sigHashType) => {
|
|
145
155
|
return (ecc, input) => {
|
|
146
156
|
const preimage = input.sigHashPreimage(sigHashType);
|
|
147
|
-
const sighash = sha256d(preimage.bytes);
|
|
157
|
+
const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
|
|
148
158
|
const sig = flagSignature(ecc.schnorrSign(sk, sighash), sigHashType);
|
|
149
|
-
return Script.fromOps([pushBytesOp(sig)]);
|
|
159
|
+
return script_js_1.Script.fromOps([(0, op_js_1.pushBytesOp)(sig)]);
|
|
150
160
|
};
|
|
151
161
|
};
|
|
162
|
+
exports.P2PKSignatory = P2PKSignatory;
|
|
152
163
|
//# sourceMappingURL=txBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"txBuilder.js","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsignedTx.d.ts","sourceRoot":"","sources":["../src/unsignedTx.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACH,WAAW,EAId,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGH,EAAE,EACF,OAAO,EAGV,MAAM,SAAS,CAAC;AAEjB,gFAAgF;AAChF,qBAAa,UAAU;IACnB,EAAE,EAAE,EAAE,CAAC;IACP,YAAY,EAAE,UAAU,CAAC;IACzB,aAAa,EAAE,UAAU,CAAC;IAC1B,WAAW,EAAE,UAAU,CAAC;IAExB,OAAO;IAYP;;;QAGI;WACU,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU;IASxC;;;QAGI;WACU,WAAW,CAAC,EAAE,EAAE,EAAE,GAAG,UAAU;IAS7C,4DAA4D;IACrD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe;CAGpD;AAED,0EAA0E;AAC1E,MAAM,WAAW,eAAe;IAC5B,+CAA+C;IAC/C,KAAK,EAAE,UAAU,CAAC;IAClB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,YAAY,EAAE,MAAM,CAAC;CACxB;AAED;;;IAGI;AACJ,qBAAa,eAAe;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;gBAEJ,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE;IAKvE;;;QAGI;IACG,eAAe,CAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,MAAM,GAClB,eAAe;IA4ElB,iDAAiD;IAC1C,OAAO,IAAI,OAAO;CAG5B"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
1
2
|
// Copyright (c) 2024 The Bitcoin developers
|
|
2
3
|
// Distributed under the MIT software license, see the accompanying
|
|
3
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.UnsignedTxInput = exports.UnsignedTx = void 0;
|
|
7
|
+
const hash_js_1 = require("./hash.js");
|
|
8
|
+
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
9
|
+
const writerlength_js_1 = require("./io/writerlength.js");
|
|
10
|
+
const sigHashType_js_1 = require("./sigHashType.js");
|
|
11
|
+
const tx_js_1 = require("./tx.js");
|
|
9
12
|
/** An unsigned tx, which helps us build the sighash preimage we need to sign */
|
|
10
|
-
|
|
13
|
+
class UnsignedTx {
|
|
11
14
|
constructor(params) {
|
|
12
15
|
this.tx = params.tx;
|
|
13
16
|
this.prevoutsHash = params.prevoutsHash;
|
|
@@ -43,11 +46,12 @@ export class UnsignedTx {
|
|
|
43
46
|
return new UnsignedTxInput({ inputIdx, unsignedTx: this });
|
|
44
47
|
}
|
|
45
48
|
}
|
|
49
|
+
exports.UnsignedTx = UnsignedTx;
|
|
46
50
|
/**
|
|
47
51
|
* An unsigned tx input, can be used to build a sighash preimage ready to be
|
|
48
52
|
* signed
|
|
49
53
|
**/
|
|
50
|
-
|
|
54
|
+
class UnsignedTxInput {
|
|
51
55
|
constructor(params) {
|
|
52
56
|
this.inputIdx = params.inputIdx;
|
|
53
57
|
this.unsignedTx = params.unsignedTx;
|
|
@@ -57,7 +61,7 @@ export class UnsignedTxInput {
|
|
|
57
61
|
* and OP_CODESEPARATOR index
|
|
58
62
|
**/
|
|
59
63
|
sigHashPreimage(sigHashType, nCodesep) {
|
|
60
|
-
if (sigHashType.variant == SigHashTypeVariant.LEGACY) {
|
|
64
|
+
if (sigHashType.variant == sigHashType_js_1.SigHashTypeVariant.LEGACY) {
|
|
61
65
|
throw new Error('Legacy sighash type not implemented');
|
|
62
66
|
}
|
|
63
67
|
const tx = this.unsignedTx.tx;
|
|
@@ -72,20 +76,20 @@ export class UnsignedTxInput {
|
|
|
72
76
|
: redeemScript.cutOutCodesep(nCodesep);
|
|
73
77
|
let hashOutputs;
|
|
74
78
|
switch (sigHashType.outputType) {
|
|
75
|
-
case SigHashTypeOutputs.ALL:
|
|
79
|
+
case sigHashType_js_1.SigHashTypeOutputs.ALL:
|
|
76
80
|
hashOutputs = this.unsignedTx.outputsHash;
|
|
77
81
|
break;
|
|
78
|
-
case SigHashTypeOutputs.NONE:
|
|
82
|
+
case sigHashType_js_1.SigHashTypeOutputs.NONE:
|
|
79
83
|
hashOutputs = new Uint8Array(32);
|
|
80
84
|
break;
|
|
81
|
-
case SigHashTypeOutputs.SINGLE:
|
|
85
|
+
case sigHashType_js_1.SigHashTypeOutputs.SINGLE:
|
|
82
86
|
if (this.inputIdx < tx.outputs.length) {
|
|
83
87
|
const output = tx.outputs[this.inputIdx];
|
|
84
|
-
const writerOutputLength = new WriterLength();
|
|
85
|
-
writeTxOutput(output, writerOutputLength);
|
|
86
|
-
const writerOutput = new WriterBytes(writerOutputLength.length);
|
|
87
|
-
writeTxOutput(output, writerOutput);
|
|
88
|
-
hashOutputs = sha256d(writerOutput.data);
|
|
88
|
+
const writerOutputLength = new writerlength_js_1.WriterLength();
|
|
89
|
+
(0, tx_js_1.writeTxOutput)(output, writerOutputLength);
|
|
90
|
+
const writerOutput = new writerbytes_js_1.WriterBytes(writerOutputLength.length);
|
|
91
|
+
(0, tx_js_1.writeTxOutput)(output, writerOutput);
|
|
92
|
+
hashOutputs = (0, hash_js_1.sha256d)(writerOutput.data);
|
|
89
93
|
}
|
|
90
94
|
else {
|
|
91
95
|
hashOutputs = new Uint8Array(32);
|
|
@@ -94,30 +98,30 @@ export class UnsignedTxInput {
|
|
|
94
98
|
}
|
|
95
99
|
const writePreimage = (writer) => {
|
|
96
100
|
writer.putU32(tx.version);
|
|
97
|
-
if (sigHashType.inputType == SigHashTypeInputs.FIXED) {
|
|
101
|
+
if (sigHashType.inputType == sigHashType_js_1.SigHashTypeInputs.FIXED) {
|
|
98
102
|
writer.putBytes(this.unsignedTx.prevoutsHash);
|
|
99
103
|
}
|
|
100
104
|
else {
|
|
101
105
|
writer.putBytes(new Uint8Array(32));
|
|
102
106
|
}
|
|
103
|
-
if (sigHashType.inputType == SigHashTypeInputs.FIXED &&
|
|
104
|
-
sigHashType.outputType == SigHashTypeOutputs.ALL) {
|
|
107
|
+
if (sigHashType.inputType == sigHashType_js_1.SigHashTypeInputs.FIXED &&
|
|
108
|
+
sigHashType.outputType == sigHashType_js_1.SigHashTypeOutputs.ALL) {
|
|
105
109
|
writer.putBytes(this.unsignedTx.sequencesHash);
|
|
106
110
|
}
|
|
107
111
|
else {
|
|
108
112
|
writer.putBytes(new Uint8Array(32));
|
|
109
113
|
}
|
|
110
|
-
writeOutPoint(input.prevOut, writer);
|
|
114
|
+
(0, tx_js_1.writeOutPoint)(input.prevOut, writer);
|
|
111
115
|
scriptCode.writeWithSize(writer);
|
|
112
116
|
writer.putU64(signData.value);
|
|
113
|
-
writer.putU32(input.sequence ?? DEFAULT_SEQUENCE);
|
|
117
|
+
writer.putU32(input.sequence ?? tx_js_1.DEFAULT_SEQUENCE);
|
|
114
118
|
writer.putBytes(hashOutputs);
|
|
115
119
|
writer.putU32(tx.locktime);
|
|
116
120
|
writer.putU32(sigHashType.toInt());
|
|
117
121
|
};
|
|
118
|
-
const preimageWriterLen = new WriterLength();
|
|
122
|
+
const preimageWriterLen = new writerlength_js_1.WriterLength();
|
|
119
123
|
writePreimage(preimageWriterLen);
|
|
120
|
-
const preimageWriter = new WriterBytes(preimageWriterLen.length);
|
|
124
|
+
const preimageWriter = new writerbytes_js_1.WriterBytes(preimageWriterLen.length);
|
|
121
125
|
writePreimage(preimageWriter);
|
|
122
126
|
return {
|
|
123
127
|
bytes: preimageWriter.data,
|
|
@@ -130,6 +134,7 @@ export class UnsignedTxInput {
|
|
|
130
134
|
return this.unsignedTx.tx.inputs[this.inputIdx];
|
|
131
135
|
}
|
|
132
136
|
}
|
|
137
|
+
exports.UnsignedTxInput = UnsignedTxInput;
|
|
133
138
|
/** Find the scriptCode that should be signed */
|
|
134
139
|
function signDataScriptCode(signData) {
|
|
135
140
|
if (signData.outputScript !== undefined) {
|
|
@@ -144,25 +149,25 @@ function signDataScriptCode(signData) {
|
|
|
144
149
|
return signData.redeemScript;
|
|
145
150
|
}
|
|
146
151
|
function txWriterHash(tx, fn) {
|
|
147
|
-
const writerLength = new WriterLength();
|
|
152
|
+
const writerLength = new writerlength_js_1.WriterLength();
|
|
148
153
|
fn(tx, writerLength);
|
|
149
|
-
const writer = new WriterBytes(writerLength.length);
|
|
154
|
+
const writer = new writerbytes_js_1.WriterBytes(writerLength.length);
|
|
150
155
|
fn(tx, writer);
|
|
151
|
-
return sha256d(writer.data);
|
|
156
|
+
return (0, hash_js_1.sha256d)(writer.data);
|
|
152
157
|
}
|
|
153
158
|
function writePrevouts(tx, writer) {
|
|
154
159
|
for (const input of tx.inputs) {
|
|
155
|
-
writeOutPoint(input.prevOut, writer);
|
|
160
|
+
(0, tx_js_1.writeOutPoint)(input.prevOut, writer);
|
|
156
161
|
}
|
|
157
162
|
}
|
|
158
163
|
function writeSequences(tx, writer) {
|
|
159
164
|
for (const input of tx.inputs) {
|
|
160
|
-
writer.putU32(input.sequence ?? DEFAULT_SEQUENCE);
|
|
165
|
+
writer.putU32(input.sequence ?? tx_js_1.DEFAULT_SEQUENCE);
|
|
161
166
|
}
|
|
162
167
|
}
|
|
163
168
|
function writeOutputs(tx, writer) {
|
|
164
169
|
for (const output of tx.outputs) {
|
|
165
|
-
writeTxOutput(output, writer);
|
|
170
|
+
(0, tx_js_1.writeTxOutput)(output, writer);
|
|
166
171
|
}
|
|
167
172
|
}
|
|
168
173
|
//# sourceMappingURL=unsignedTx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unsignedTx.js","sourceRoot":"","sources":["../src/unsignedTx.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ecash-lib",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Library for eCash transaction building",
|
|
5
|
-
"main": "./dist/
|
|
6
|
-
"
|
|
5
|
+
"main": "./dist/indexNodeJs.js",
|
|
6
|
+
"browser": "./dist/indexBrowser.js",
|
|
7
7
|
"scripts": {
|
|
8
|
-
"build": "tsc && cp -r ./src/ffi ./dist",
|
|
8
|
+
"build": "tsc && tsc -p ./tsconfig.build.json && cp -r ./src/ffi ./dist",
|
|
9
9
|
"test": "mocha --import=tsx ./src/*.test.ts ./src/**/*.test.ts",
|
|
10
10
|
"integration-tests": "mocha --import=tsx ./tests/*.test.ts --timeout 60000",
|
|
11
11
|
"coverage": "nyc npm run test",
|
|
@@ -43,5 +43,8 @@
|
|
|
43
43
|
"tsx": "^4.7.2",
|
|
44
44
|
"typescript": "^5.4.3",
|
|
45
45
|
"typescript-eslint": "^7.6.0"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"ecashaddrjs": "file:../ecashaddrjs"
|
|
46
49
|
}
|
|
47
50
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** tsconfig for building the actual library */
|
|
2
|
+
{
|
|
3
|
+
"extends": "./tsconfig.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"noEmit": false,
|
|
6
|
+
"declaration": true,
|
|
7
|
+
"declarationMap": true,
|
|
8
|
+
"sourceMap": true,
|
|
9
|
+
"outDir": "./dist"
|
|
10
|
+
},
|
|
11
|
+
"include": ["./src/**/*"],
|
|
12
|
+
"exclude": ["./**/*.test.ts"]
|
|
13
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -5,17 +5,14 @@
|
|
|
5
5
|
/* ES2020 for bigint, DOM for WebAssemby */
|
|
6
6
|
"lib": ["ES2020", "DOM"],
|
|
7
7
|
/* Modules */
|
|
8
|
-
"module": "
|
|
9
|
-
"moduleResolution": "NodeNext",
|
|
8
|
+
"module": "CommonJS",
|
|
10
9
|
/* Emit */
|
|
11
|
-
"
|
|
12
|
-
"declarationMap": true,
|
|
13
|
-
"sourceMap": true,
|
|
14
|
-
"outDir": "./dist",
|
|
10
|
+
"noEmit": true,
|
|
15
11
|
/* Interop Constraints */
|
|
16
12
|
"esModuleInterop": true,
|
|
17
13
|
"forceConsistentCasingInFileNames": true,
|
|
18
14
|
/* Type Checking */
|
|
19
15
|
"strict": true
|
|
20
|
-
}
|
|
16
|
+
},
|
|
17
|
+
"include": ["src/**/*", "tests/**/*"]
|
|
21
18
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|