ecash-lib 4.0.1 → 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/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/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/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/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 {
|