ecash-lib 4.0.0 → 4.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 +1 -0
- package/dist/consts.d.ts +2 -0
- package/dist/consts.d.ts.map +1 -1
- package/dist/consts.js +3 -1
- package/dist/consts.js.map +1 -1
- package/dist/tx.d.ts +4 -0
- package/dist/tx.d.ts.map +1 -1
- package/dist/tx.js +41 -0
- package/dist/tx.js.map +1 -1
- package/package.json +1 -1
- package/src/consts.ts +4 -0
- package/src/tx.ts +44 -2
package/README.md
CHANGED
|
@@ -95,3 +95,4 @@ console.log(toHex(rawTx));
|
|
|
95
95
|
- 3.1.0 - Add methods for signing and verifying messages [D17778](https://reviews.bitcoinabc.org/D17778)
|
|
96
96
|
- 3.2.0 - Add method for parsing pushes from an EMPP OP_RETURN [D18057](https://reviews.bitcoinabc.org/D18057)
|
|
97
97
|
- 4.0.0 - Add constants and types to support `ecash-wallet` [D17822](https://reviews.bitcoinabc.org/D17822)
|
|
98
|
+
- 4.1.0 - Add Tx deserialization methods [D18393](https://reviews.bitcoinabc.org/D18393)
|
package/dist/consts.d.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
export declare const DEFAULT_DUST_SATS = 546n;
|
|
3
3
|
/** Default fee per kB on the eCash network. */
|
|
4
4
|
export declare const DEFAULT_FEE_SATS_PER_KB = 1000n;
|
|
5
|
+
/** Derivation path for non-HD token aware XEC wallets, like ecash-wallet or Cashtab */
|
|
6
|
+
export declare const XEC_TOKEN_AWARE_DERIVATION_PATH = "m/44'/1899'/0'/0/0";
|
|
5
7
|
/**
|
|
6
8
|
* Confirmations required before coinbase utxos
|
|
7
9
|
* are spendable
|
package/dist/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAIA,+CAA+C;AAC/C,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,+CAA+C;AAC/C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":"AAIA,+CAA+C;AAC/C,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,+CAA+C;AAC/C,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAE7C,uFAAuF;AACvF,eAAO,MAAM,+BAA+B,uBAAuB,CAAC;AAEpE;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,MAAM,CAAC"}
|
package/dist/consts.js
CHANGED
|
@@ -3,11 +3,13 @@
|
|
|
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.OP_RETURN_MAX_BYTES = exports.COINBASE_MATURITY = exports.DEFAULT_FEE_SATS_PER_KB = exports.DEFAULT_DUST_SATS = void 0;
|
|
6
|
+
exports.OP_RETURN_MAX_BYTES = exports.COINBASE_MATURITY = exports.XEC_TOKEN_AWARE_DERIVATION_PATH = exports.DEFAULT_FEE_SATS_PER_KB = exports.DEFAULT_DUST_SATS = void 0;
|
|
7
7
|
/** Default dust limit on the eCash network. */
|
|
8
8
|
exports.DEFAULT_DUST_SATS = 546n;
|
|
9
9
|
/** Default fee per kB on the eCash network. */
|
|
10
10
|
exports.DEFAULT_FEE_SATS_PER_KB = 1000n;
|
|
11
|
+
/** Derivation path for non-HD token aware XEC wallets, like ecash-wallet or Cashtab */
|
|
12
|
+
exports.XEC_TOKEN_AWARE_DERIVATION_PATH = `m/44'/1899'/0'/0/0`;
|
|
11
13
|
/**
|
|
12
14
|
* Confirmations required before coinbase utxos
|
|
13
15
|
* are spendable
|
package/dist/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,+CAA+C;AAClC,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACtC,+CAA+C;AAClC,QAAA,uBAAuB,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../src/consts.ts"],"names":[],"mappings":";AAAA,4CAA4C;AAC5C,mEAAmE;AACnE,sEAAsE;;;AAEtE,+CAA+C;AAClC,QAAA,iBAAiB,GAAG,IAAI,CAAC;AACtC,+CAA+C;AAClC,QAAA,uBAAuB,GAAG,KAAK,CAAC;AAE7C,uFAAuF;AAC1E,QAAA,+BAA+B,GAAG,oBAAoB,CAAC;AAEpE;;;;;;;;;GASG;AACU,QAAA,iBAAiB,GAAG,GAAG,CAAC;AACrC;;;;;;;GAOG;AACU,QAAA,mBAAmB,GAAG,GAAG,CAAC"}
|
package/dist/tx.d.ts
CHANGED
|
@@ -74,6 +74,10 @@ export declare class Tx {
|
|
|
74
74
|
serSize(): number;
|
|
75
75
|
/** Write the tx to the given writer */
|
|
76
76
|
write(writer: Writer): void;
|
|
77
|
+
/** Deserialize a Tx from a Uint8Array */
|
|
78
|
+
static deser(data: Uint8Array): Tx;
|
|
79
|
+
/** Deserialize a Tx from a hex string */
|
|
80
|
+
static fromHex(hex: string): Tx;
|
|
77
81
|
}
|
|
78
82
|
export declare function readTxOutput(bytes: Bytes): TxOutput;
|
|
79
83
|
/** Write an outpoint to a Writer */
|
package/dist/tx.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;IAOI;AACJ,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACrB;;;QAGI;IACJ,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACpB,uCAAuC;IACvC,OAAO,EAAE,QAAQ,CAAC;IAClB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACrB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACrB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;QAGI;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,2CAA2C;AAC3C,qBAAa,EAAE;IACX,yBAAyB;IAClB,OAAO,EAAE,MAAM,CAAC;IACvB,mDAAmD;IAC5C,MAAM,EAAE,OAAO,EAAE,CAAC;IACzB,0CAA0C;IACnC,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC3B,uEAAuE;IAChE,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,CAAC,EAAE;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAOD,uCAAuC;IAChC,GAAG,IAAI,UAAU;IAMxB,8CAA8C;IACvC,OAAO,IAAI,MAAM;IAMxB,uCAAuC;IAChC,KAAK,CAAC,MAAM,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAGtC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC;;;;;;;IAOI;AACJ,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,iDAAiD;AACjD,MAAM,WAAW,QAAQ;IACrB;;;QAGI;IACJ,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;IAC1B,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,yCAAyC;AACzC,MAAM,WAAW,OAAO;IACpB,uCAAuC;IACvC,OAAO,EAAE,QAAQ,CAAC;IAClB,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB;AAED,qCAAqC;AACrC,MAAM,WAAW,QAAQ;IACrB,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,6DAA6D;AAC7D,MAAM,WAAW,QAAQ;IACrB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;QAGI;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,2CAA2C;AAC3C,qBAAa,EAAE;IACX,yBAAyB;IAClB,OAAO,EAAE,MAAM,CAAC;IACvB,mDAAmD;IAC5C,MAAM,EAAE,OAAO,EAAE,CAAC;IACzB,0CAA0C;IACnC,OAAO,EAAE,QAAQ,EAAE,CAAC;IAC3B,uEAAuE;IAChE,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,CAAC,EAAE;QACxB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,QAAQ,EAAE,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IAOD,uCAAuC;IAChC,GAAG,IAAI,UAAU;IAMxB,8CAA8C;IACvC,OAAO,IAAI,MAAM;IAMxB,uCAAuC;IAChC,KAAK,CAAC,MAAM,EAAE,MAAM;IAa3B,yCAAyC;WAC3B,KAAK,CAAC,IAAI,EAAE,UAAU,GAAG,EAAE;IAoCzC,yCAAyC;WAC3B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE;CAGzC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAOnD;AAED,oCAAoC;AACpC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOtE;AAED,kCAAkC;AAClC,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIjE;AAED,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiBnD;AAED,yCAAyC;AACzC,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAKvD"}
|
package/dist/tx.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
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 bytes_js_1 = require("./io/bytes.js");
|
|
7
8
|
const hex_js_1 = require("./io/hex.js");
|
|
8
9
|
const varsize_js_1 = require("./io/varsize.js");
|
|
9
10
|
const writerbytes_js_1 = require("./io/writerbytes.js");
|
|
@@ -53,6 +54,46 @@ class Tx {
|
|
|
53
54
|
}
|
|
54
55
|
writer.putU32(this.locktime);
|
|
55
56
|
}
|
|
57
|
+
/** Deserialize a Tx from a Uint8Array */
|
|
58
|
+
static deser(data) {
|
|
59
|
+
const bytes = new bytes_js_1.Bytes(data);
|
|
60
|
+
const version = bytes.readU32();
|
|
61
|
+
const numInputs = (0, varsize_js_1.readVarSize)(bytes);
|
|
62
|
+
const inputs = [];
|
|
63
|
+
for (let i = 0; i < numInputs; ++i) {
|
|
64
|
+
// Read OutPoint
|
|
65
|
+
const txid = bytes.readBytes(32);
|
|
66
|
+
const outIdx = bytes.readU32();
|
|
67
|
+
// Read script
|
|
68
|
+
const script = script_js_1.Script.readWithSize(bytes);
|
|
69
|
+
// Read sequence
|
|
70
|
+
const sequence = bytes.readU32();
|
|
71
|
+
inputs.push({
|
|
72
|
+
prevOut: {
|
|
73
|
+
txid,
|
|
74
|
+
outIdx,
|
|
75
|
+
},
|
|
76
|
+
script,
|
|
77
|
+
sequence,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const numOutputs = (0, varsize_js_1.readVarSize)(bytes);
|
|
81
|
+
const outputs = [];
|
|
82
|
+
for (let i = 0; i < numOutputs; ++i) {
|
|
83
|
+
outputs.push(readTxOutput(bytes));
|
|
84
|
+
}
|
|
85
|
+
const locktime = bytes.readU32();
|
|
86
|
+
return new Tx({
|
|
87
|
+
version,
|
|
88
|
+
inputs,
|
|
89
|
+
outputs,
|
|
90
|
+
locktime,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
/** Deserialize a Tx from a hex string */
|
|
94
|
+
static fromHex(hex) {
|
|
95
|
+
return Tx.deser((0, hex_js_1.fromHex)(hex));
|
|
96
|
+
}
|
|
56
97
|
}
|
|
57
98
|
exports.Tx = Tx;
|
|
58
99
|
function readTxOutput(bytes) {
|
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":"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"}
|
package/package.json
CHANGED
package/src/consts.ts
CHANGED
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
export const DEFAULT_DUST_SATS = 546n;
|
|
7
7
|
/** Default fee per kB on the eCash network. */
|
|
8
8
|
export const DEFAULT_FEE_SATS_PER_KB = 1000n;
|
|
9
|
+
|
|
10
|
+
/** Derivation path for non-HD token aware XEC wallets, like ecash-wallet or Cashtab */
|
|
11
|
+
export const XEC_TOKEN_AWARE_DERIVATION_PATH = `m/44'/1899'/0'/0/0`;
|
|
12
|
+
|
|
9
13
|
/**
|
|
10
14
|
* Confirmations required before coinbase utxos
|
|
11
15
|
* are spendable
|
package/src/tx.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
4
4
|
|
|
5
5
|
import { Bytes } from './io/bytes.js';
|
|
6
|
-
import { fromHexRev } from './io/hex.js';
|
|
7
|
-
import { writeVarSize } from './io/varsize.js';
|
|
6
|
+
import { fromHexRev, fromHex } from './io/hex.js';
|
|
7
|
+
import { writeVarSize, readVarSize } from './io/varsize.js';
|
|
8
8
|
import { Writer } from './io/writer.js';
|
|
9
9
|
import { WriterBytes } from './io/writerbytes.js';
|
|
10
10
|
import { WriterLength } from './io/writerlength.js';
|
|
@@ -117,6 +117,48 @@ export class Tx {
|
|
|
117
117
|
}
|
|
118
118
|
writer.putU32(this.locktime);
|
|
119
119
|
}
|
|
120
|
+
|
|
121
|
+
/** Deserialize a Tx from a Uint8Array */
|
|
122
|
+
public static deser(data: Uint8Array): Tx {
|
|
123
|
+
const bytes = new Bytes(data);
|
|
124
|
+
const version = bytes.readU32();
|
|
125
|
+
const numInputs = readVarSize(bytes);
|
|
126
|
+
const inputs: TxInput[] = [];
|
|
127
|
+
for (let i = 0; i < numInputs; ++i) {
|
|
128
|
+
// Read OutPoint
|
|
129
|
+
const txid = bytes.readBytes(32);
|
|
130
|
+
const outIdx = bytes.readU32();
|
|
131
|
+
// Read script
|
|
132
|
+
const script = Script.readWithSize(bytes);
|
|
133
|
+
// Read sequence
|
|
134
|
+
const sequence = bytes.readU32();
|
|
135
|
+
inputs.push({
|
|
136
|
+
prevOut: {
|
|
137
|
+
txid,
|
|
138
|
+
outIdx,
|
|
139
|
+
},
|
|
140
|
+
script,
|
|
141
|
+
sequence,
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
const numOutputs = readVarSize(bytes);
|
|
145
|
+
const outputs: TxOutput[] = [];
|
|
146
|
+
for (let i = 0; i < numOutputs; ++i) {
|
|
147
|
+
outputs.push(readTxOutput(bytes));
|
|
148
|
+
}
|
|
149
|
+
const locktime = bytes.readU32();
|
|
150
|
+
return new Tx({
|
|
151
|
+
version,
|
|
152
|
+
inputs,
|
|
153
|
+
outputs,
|
|
154
|
+
locktime,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/** Deserialize a Tx from a hex string */
|
|
159
|
+
public static fromHex(hex: string): Tx {
|
|
160
|
+
return Tx.deser(fromHex(hex));
|
|
161
|
+
}
|
|
120
162
|
}
|
|
121
163
|
|
|
122
164
|
export function readTxOutput(bytes: Bytes): TxOutput {
|