ecash-lib 4.10.0 → 4.12.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.
Files changed (43) hide show
  1. package/README.md +2 -0
  2. package/dist/consts.d.ts +11 -0
  3. package/dist/consts.d.ts.map +1 -1
  4. package/dist/consts.js +12 -1
  5. package/dist/consts.js.map +1 -1
  6. package/dist/ffi/ecash_lib_wasm_bg_browser.js +20489 -20489
  7. package/dist/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  8. package/dist/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/psbt.d.ts +115 -0
  14. package/dist/psbt.d.ts.map +1 -0
  15. package/dist/psbt.js +743 -0
  16. package/dist/psbt.js.map +1 -0
  17. package/dist/script.d.ts +11 -1
  18. package/dist/script.d.ts.map +1 -1
  19. package/dist/script.js +24 -0
  20. package/dist/script.js.map +1 -1
  21. package/dist/signatories.d.ts +44 -0
  22. package/dist/signatories.d.ts.map +1 -0
  23. package/dist/signatories.js +206 -0
  24. package/dist/signatories.js.map +1 -0
  25. package/dist/tx.d.ts +60 -0
  26. package/dist/tx.d.ts.map +1 -1
  27. package/dist/tx.js +274 -0
  28. package/dist/tx.js.map +1 -1
  29. package/dist/txBuilder.d.ts +2 -30
  30. package/dist/txBuilder.d.ts.map +1 -1
  31. package/dist/txBuilder.js +1 -45
  32. package/dist/txBuilder.js.map +1 -1
  33. package/package.json +1 -1
  34. package/src/consts.ts +13 -0
  35. package/src/ffi/ecash_lib_wasm_bg_browser.js +20489 -20489
  36. package/src/ffi/ecash_lib_wasm_bg_browser.wasm +0 -0
  37. package/src/ffi/ecash_lib_wasm_bg_nodejs.wasm +0 -0
  38. package/src/index.ts +2 -0
  39. package/src/psbt.ts +908 -0
  40. package/src/script.ts +25 -1
  41. package/src/signatories.ts +296 -0
  42. package/src/tx.ts +330 -0
  43. package/src/txBuilder.ts +2 -74
package/dist/tx.js CHANGED
@@ -15,8 +15,12 @@ const hex_js_1 = require("./io/hex.js");
15
15
  const varsize_js_1 = require("./io/varsize.js");
16
16
  const writerbytes_js_1 = require("./io/writerbytes.js");
17
17
  const writerlength_js_1 = require("./io/writerlength.js");
18
+ const ecc_js_1 = require("./ecc.js");
18
19
  const script_js_1 = require("./script.js");
19
20
  const hash_js_1 = require("./hash.js");
21
+ const signatories_js_1 = require("./signatories.js");
22
+ const sigHashType_js_1 = require("./sigHashType.js");
23
+ const unsignedTx_js_1 = require("./unsignedTx.js");
20
24
  /**
21
25
  * Default value for nSequence of inputs if left undefined; this opts out of
22
26
  * BIP68 relative lock-time, and if all inputs have this value, nLockTime is
@@ -114,6 +118,276 @@ class Tx {
114
118
  txid() {
115
119
  return (0, hex_js_1.toHexRev)((0, hash_js_1.sha256d)(this.ser()));
116
120
  }
121
+ /**
122
+ * Attempt to parse a **non-SegWit** serialized transaction from `data` — the same
123
+ * encoding as {@link Tx.deser} / `Tx.ser()` (version, inputs, outputs, locktime;
124
+ * no witness marker or witness stacks). eCash does not use SegWit transactions,
125
+ * so this is the full-transaction wire format on-chain here. Returns a `Tx` only
126
+ * when `data` is **exactly** one such transaction: the parse must consume the
127
+ * **entire** buffer (no trailing bytes). Returns `undefined` on malformed input
128
+ * or if any bytes remain after `locktime`.
129
+ *
130
+ * **PSBT-only motivation:** Bitcoin ABC’s PSBT input key `0x00` (`PSBT_IN_UTXO`)
131
+ * stores **either** a full previous transaction (BIP 174 “non-witness UTXO”) **or**
132
+ * a compact `CTxOut` (amount + `scriptPubKey`). Callers must disambiguate. Plain
133
+ * {@link Tx.deser} reads a tx from the start of `data` but **does not** require
134
+ * `data.length` to match the serialized length — leftover bytes are ignored, so
135
+ * you cannot use it to prove “this blob is solely a full tx.” This helper is
136
+ * used from PSBT (`resolveWitnessFromKey00` in `psbt.ts`): if `tryDeserExact`
137
+ * succeeds (and the txid matches), treat as non-witness UTXO; otherwise decode as
138
+ * `CTxOut`-shaped bytes.
139
+ */
140
+ static tryDeserExact(data) {
141
+ try {
142
+ const bytes = new bytes_js_1.Bytes(data);
143
+ const version = bytes.readU32();
144
+ const numInputs = (0, varsize_js_1.readVarSize)(bytes);
145
+ const inputs = [];
146
+ for (let i = 0; i < numInputs; ++i) {
147
+ const txid = bytes.readBytes(32);
148
+ const outIdx = bytes.readU32();
149
+ const script = script_js_1.Script.readWithSize(bytes);
150
+ const sequence = bytes.readU32();
151
+ inputs.push({
152
+ prevOut: { txid, outIdx },
153
+ script,
154
+ sequence,
155
+ });
156
+ }
157
+ const numOutputs = (0, varsize_js_1.readVarSize)(bytes);
158
+ const outputs = [];
159
+ for (let i = 0; i < numOutputs; ++i) {
160
+ outputs.push(readTxOutput(bytes));
161
+ }
162
+ const locktime = bytes.readU32();
163
+ if (bytes.idx !== data.length) {
164
+ return undefined;
165
+ }
166
+ return new Tx({ version, inputs, outputs, locktime });
167
+ }
168
+ catch {
169
+ return undefined;
170
+ }
171
+ }
172
+ /**
173
+ * Add a signature to a partially-signed multisig input.
174
+ * Verifies the signature against the sighash for each pubkey in the
175
+ * redeem/output script and merges with existing signatures (which pubkey
176
+ * signed is inferred from verification).
177
+ */
178
+ addMultisigSignature(params) {
179
+ const { inputIdx, signature, signData } = params;
180
+ const ecc = params.ecc ?? new ecc_js_1.Ecc();
181
+ const input = this.inputs[inputIdx];
182
+ if (!input.script || input.script.bytecode.length === 0) {
183
+ throw new Error(`Input ${inputIdx} has no scriptSig to add signature to`);
184
+ }
185
+ const isBare = signData.outputScript !== undefined &&
186
+ signData.redeemScript === undefined;
187
+ const parsed = isBare
188
+ ? input.script.parseBareMultisigSpend(signData.outputScript)
189
+ : input.script.parseP2shMultisigSpend();
190
+ const txWithSignData = new Tx({
191
+ version: this.version,
192
+ inputs: this.inputs.map((inp, i) => i === inputIdx
193
+ ? { ...copyTxInput(inp), signData }
194
+ : copyTxInput(inp)),
195
+ outputs: this.outputs,
196
+ locktime: this.locktime,
197
+ });
198
+ const unsignedTx = unsignedTx_js_1.UnsignedTx.fromTx(txWithSignData);
199
+ const inputAt = unsignedTx.inputAt(inputIdx);
200
+ const sigHashType = sigHashType_js_1.SigHashType.fromInt((signature[signature.length - 1] ?? 0) & 0xff) ?? sigHashType_js_1.ALL_BIP143;
201
+ const preimage = inputAt.sigHashPreimage(sigHashType);
202
+ const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
203
+ const sigWithoutFlag = signature.slice(0, -1);
204
+ let pubkeyIndex = -1;
205
+ if (parsed.isSchnorr) {
206
+ for (let i = 0; i < parsed.pubkeys.length; i++) {
207
+ try {
208
+ ecc.schnorrVerify(sigWithoutFlag, sighash, parsed.pubkeys[i]);
209
+ pubkeyIndex = i;
210
+ break;
211
+ }
212
+ catch {
213
+ /* try next pubkey */
214
+ }
215
+ }
216
+ if (pubkeyIndex < 0) {
217
+ throw new Error('Schnorr signature does not verify for any pubkey in the multisig script');
218
+ }
219
+ }
220
+ else {
221
+ for (let i = 0; i < parsed.pubkeys.length; i++) {
222
+ try {
223
+ ecc.ecdsaVerify(sigWithoutFlag, sighash, parsed.pubkeys[i]);
224
+ pubkeyIndex = i;
225
+ break;
226
+ }
227
+ catch {
228
+ /* try next pubkey */
229
+ }
230
+ }
231
+ if (pubkeyIndex < 0) {
232
+ throw new Error('ECDSA signature does not verify for any pubkey in the multisig script');
233
+ }
234
+ }
235
+ const sigsByPubkey = Array(parsed.pubkeys.length).fill(undefined);
236
+ if (parsed.isSchnorr) {
237
+ const indices = parsed.pubkeyIndices;
238
+ const sortedIndices = [...indices].sort((a, b) => a - b);
239
+ for (let i = 0; i < parsed.signatures.length; i++) {
240
+ const sig = parsed.signatures[i];
241
+ if (sig !== undefined && i < sortedIndices.length) {
242
+ sigsByPubkey[sortedIndices[i]] = sig;
243
+ }
244
+ }
245
+ }
246
+ else {
247
+ for (const sig of parsed.signatures) {
248
+ if (sig === undefined)
249
+ continue;
250
+ const sigNoFlag = sig.slice(0, -1);
251
+ for (let i = 0; i < parsed.pubkeys.length; i++) {
252
+ try {
253
+ ecc.ecdsaVerify(sigNoFlag, sighash, parsed.pubkeys[i]);
254
+ sigsByPubkey[i] = sig;
255
+ break;
256
+ }
257
+ catch {
258
+ /* try next pubkey */
259
+ }
260
+ }
261
+ }
262
+ }
263
+ sigsByPubkey[pubkeyIndex] = signature;
264
+ const nonNullSigs = sigsByPubkey.filter((s) => s !== undefined);
265
+ const sigsForScript = nonNullSigs.length >= parsed.numSignatures
266
+ ? nonNullSigs.slice(0, parsed.numSignatures)
267
+ : [
268
+ ...nonNullSigs,
269
+ ...Array(parsed.numSignatures - nonNullSigs.length).fill(undefined),
270
+ ];
271
+ const redeemScript = !isBare && 'redeemScript' in parsed
272
+ ? parsed.redeemScript
273
+ : undefined;
274
+ const newScriptSig = parsed.isSchnorr
275
+ ? (() => {
276
+ const signerIndices = new Set();
277
+ for (let i = 0; i < parsed.pubkeys.length &&
278
+ signerIndices.size < parsed.numSignatures; i++) {
279
+ if (sigsByPubkey[i] !== undefined)
280
+ signerIndices.add(i);
281
+ }
282
+ return isBare
283
+ ? script_js_1.Script.multisigSpend({
284
+ signatures: sigsForScript,
285
+ pubkeyIndices: signerIndices,
286
+ numPubkeys: parsed.numPubkeys,
287
+ })
288
+ : script_js_1.Script.multisigSpend({
289
+ signatures: sigsForScript,
290
+ redeemScript,
291
+ pubkeyIndices: signerIndices,
292
+ });
293
+ })()
294
+ : script_js_1.Script.multisigSpend({
295
+ signatures: sigsForScript,
296
+ redeemScript,
297
+ });
298
+ const newInputs = this.inputs.map((inp, i) => i === inputIdx
299
+ ? { ...copyTxInput(inp), script: newScriptSig }
300
+ : copyTxInput(inp));
301
+ return new Tx({
302
+ version: this.version,
303
+ inputs: newInputs,
304
+ outputs: this.outputs,
305
+ locktime: this.locktime,
306
+ });
307
+ }
308
+ /**
309
+ * Like {@link addMultisigSignature}, but computes the signature from a
310
+ * secret key: BIP143 preimage (or legacy if `sigHashType` is legacy),
311
+ * Schnorr for Schnorr-format multisig spends and ECDSA otherwise.
312
+ */
313
+ addMultisigSignatureFromKey(params) {
314
+ const sigHashType = params.sigHashType ?? sigHashType_js_1.ALL_BIP143;
315
+ const ecc = params.ecc ?? new ecc_js_1.Ecc();
316
+ const { inputIdx, sk, signData } = params;
317
+ const input = this.inputs[inputIdx];
318
+ if (!input.script || input.script.bytecode.length === 0) {
319
+ throw new Error(`Input ${inputIdx} has no scriptSig to add signature to`);
320
+ }
321
+ const isBare = signData.outputScript !== undefined &&
322
+ signData.redeemScript === undefined;
323
+ const parsed = isBare
324
+ ? input.script.parseBareMultisigSpend(signData.outputScript)
325
+ : input.script.parseP2shMultisigSpend();
326
+ const txWithSignData = new Tx({
327
+ version: this.version,
328
+ inputs: this.inputs.map((inp, i) => i === inputIdx
329
+ ? { ...copyTxInput(inp), signData }
330
+ : copyTxInput(inp)),
331
+ outputs: this.outputs,
332
+ locktime: this.locktime,
333
+ });
334
+ const unsignedTx = unsignedTx_js_1.UnsignedTx.fromTx(txWithSignData);
335
+ const preimage = unsignedTx
336
+ .inputAt(inputIdx)
337
+ .sigHashPreimage(sigHashType);
338
+ const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
339
+ const sig = parsed.isSchnorr
340
+ ? ecc.schnorrSign(sk, sighash)
341
+ : ecc.ecdsaSign(sk, sighash);
342
+ const signature = (0, signatories_js_1.flagSignature)(sig, sigHashType);
343
+ return this.addMultisigSignature({
344
+ inputIdx,
345
+ signature,
346
+ signData,
347
+ ecc,
348
+ });
349
+ }
350
+ /**
351
+ * Whether every **multisig** input (identified from `signData`) has enough
352
+ * signatures in its scriptSig. Non-multisig inputs are ignored.
353
+ *
354
+ * If the transaction has **no** multisig inputs, this returns `true` (there
355
+ * is nothing multisig-specific left to satisfy). That can look surprising on
356
+ * a non-multisig or otherwise incomplete tx; this helper is **not** a
357
+ * broadcast-readiness check. Call sites are expected to use it only in
358
+ * multisig / PSBT flows where the question is specifically whether multisig
359
+ * inputs still need more signatures (including mixed txs: non-multisig
360
+ * inputs are finalized elsewhere).
361
+ */
362
+ isFullySignedMultisig() {
363
+ for (let i = 0; i < this.inputs.length; i++) {
364
+ const input = this.inputs[i];
365
+ const multisigScript = input.signData?.redeemScript !== undefined
366
+ ? input.signData.redeemScript
367
+ : input.signData?.outputScript?.isMultisig()
368
+ ? input.signData.outputScript
369
+ : undefined;
370
+ if (multisigScript === undefined) {
371
+ continue;
372
+ }
373
+ if (!input.script || input.script.bytecode.length === 0) {
374
+ return false;
375
+ }
376
+ try {
377
+ const parsed = input.signData?.redeemScript === undefined
378
+ ? input.script.parseBareMultisigSpend(multisigScript)
379
+ : input.script.parseP2shMultisigSpend();
380
+ const sigCount = parsed.signatures.filter(s => s !== undefined).length;
381
+ if (sigCount < parsed.numSignatures) {
382
+ return false;
383
+ }
384
+ }
385
+ catch {
386
+ return false;
387
+ }
388
+ }
389
+ return true;
390
+ }
117
391
  }
118
392
  exports.Tx = Tx;
119
393
  function readTxOutput(bytes) {
package/dist/tx.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tx.js","sourceRoot":"","sources":["../src/tx.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,11 @@
1
1
  import { Ecc } from './ecc.js';
2
+ import type { Signatory } from './signatories.js';
2
3
  import { Script } from './script.js';
3
- import { SigHashType } from './sigHashType.js';
4
4
  import { Tx, TxInput, TxOutput } from './tx.js';
5
- import { UnsignedTxInput } from './unsignedTx.js';
6
- /**
7
- * Function that contains all the required data to sign a given `input` and
8
- * return the scriptSig.
9
- *
10
- * Use it by attaching a `Signatory` to a TxBuilderInput, e.g. like this for a
11
- * P2PKH input:
12
- * ```ts
13
- * new TxBuilder({
14
- * inputs: [{
15
- * input: { prevOut: ... },
16
- * signatory: P2PKHSignatory(sk, pk, ALL_BIP143),
17
- * }],
18
- * ...
19
- * })
20
- * ```
21
- **/
22
- export type Signatory = (ecc: Ecc, input: UnsignedTxInput) => Script;
23
5
  /** Builder input that bundles all the data required to sign a TxInput */
24
6
  export interface TxBuilderInput {
25
7
  input: TxInput;
8
+ /** Signing callback; see `Signatory` in `signatories.ts`. */
26
9
  signatory?: Signatory;
27
10
  }
28
11
  /**
@@ -70,15 +53,4 @@ export declare class TxBuilder {
70
53
  /** Calculate the required tx fee for the given txSize and feePerKb,
71
54
  * rounding up */
72
55
  export declare function calcTxFee(txSize: number, feePerKb: bigint): bigint;
73
- /** Append the sighash flags to the signature */
74
- export declare function flagSignature(sig: Uint8Array, sigHashFlags: SigHashType): Uint8Array;
75
- /**
76
- * Sign the sighash using Schnorr for BIP143 signatures and ECDSA for Legacy
77
- * signatures, and then flags the signature correctly
78
- **/
79
- export declare function signWithSigHash(ecc: Ecc, sk: Uint8Array, sigHash: Uint8Array, sigHashType: SigHashType): Uint8Array;
80
- /** Signatory for a P2PKH input. Always uses Schnorr signatures */
81
- export declare const P2PKHSignatory: (sk: Uint8Array, pk: Uint8Array, sigHashType: SigHashType) => (ecc: Ecc, input: UnsignedTxInput) => Script;
82
- /** Signatory for a P2PK input. Always uses Schnorr signatures */
83
- export declare const P2PKSignatory: (sk: Uint8Array, sigHashType: SigHashType) => (ecc: Ecc, input: UnsignedTxInput) => Script;
84
56
  //# sourceMappingURL=txBuilder.d.ts.map
@@ -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;;;QAGI;WACU,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS;IASvC,wDAAwD;IACjD,IAAI,CAAC,MAAM,CAAC,EAAE;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,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,GACvB,IAAI,UAAU,EACd,IAAI,UAAU,EACd,aAAa,WAAW,MAEhB,KAAK,GAAG,EAAE,OAAO,eAAe,KAAG,MAM9C,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,aAAa,GAAI,IAAI,UAAU,EAAE,aAAa,WAAW,MAC1D,KAAK,GAAG,EAAE,OAAO,eAAe,KAAG,MAM9C,CAAC"}
1
+ {"version":3,"file":"txBuilder.d.ts","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAY,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAEH,EAAE,EACF,OAAO,EACP,QAAQ,EAGX,MAAM,SAAS,CAAC;AAGjB,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,6DAA6D;IAC7D,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;;;QAGI;WACU,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,SAAS;IASvC,wDAAwD;IACjD,IAAI,CAAC,MAAM,CAAC,EAAE;QACjB,GAAG,CAAC,EAAE,GAAG,CAAC;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,EAAE;CAkFT;AAED;kBACkB;AAClB,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAElE"}
package/dist/txBuilder.js CHANGED
@@ -3,16 +3,9 @@
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;
6
+ exports.TxBuilder = void 0;
7
7
  exports.calcTxFee = calcTxFee;
8
- exports.flagSignature = flagSignature;
9
- exports.signWithSigHash = signWithSigHash;
10
8
  const ecc_js_1 = require("./ecc.js");
11
- const hash_js_1 = require("./hash.js");
12
- const writerbytes_js_1 = require("./io/writerbytes.js");
13
- const op_js_1 = require("./op.js");
14
- const script_js_1 = require("./script.js");
15
- const sigHashType_js_1 = require("./sigHashType.js");
16
9
  const tx_js_1 = require("./tx.js");
17
10
  const unsignedTx_js_1 = require("./unsignedTx.js");
18
11
  /** Class that can be used to build and sign txs. */
@@ -146,41 +139,4 @@ exports.TxBuilder = TxBuilder;
146
139
  function calcTxFee(txSize, feePerKb) {
147
140
  return (BigInt(txSize) * BigInt(feePerKb) + 999n) / 1000n;
148
141
  }
149
- /** Append the sighash flags to the signature */
150
- function flagSignature(sig, sigHashFlags) {
151
- const writer = new writerbytes_js_1.WriterBytes(sig.length + 1);
152
- writer.putBytes(sig);
153
- writer.putU8(sigHashFlags.toInt() & 0xff);
154
- return writer.data;
155
- }
156
- /**
157
- * Sign the sighash using Schnorr for BIP143 signatures and ECDSA for Legacy
158
- * signatures, and then flags the signature correctly
159
- **/
160
- function signWithSigHash(ecc, sk, sigHash, sigHashType) {
161
- const sig = sigHashType.variant == sigHashType_js_1.SigHashTypeVariant.LEGACY
162
- ? ecc.ecdsaSign(sk, sigHash)
163
- : ecc.schnorrSign(sk, sigHash);
164
- return flagSignature(sig, sigHashType);
165
- }
166
- /** Signatory for a P2PKH input. Always uses Schnorr signatures */
167
- const P2PKHSignatory = (sk, pk, sigHashType) => {
168
- return (ecc, input) => {
169
- const preimage = input.sigHashPreimage(sigHashType);
170
- const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
171
- const sigFlagged = signWithSigHash(ecc, sk, sighash, sigHashType);
172
- return script_js_1.Script.p2pkhSpend(pk, sigFlagged);
173
- };
174
- };
175
- exports.P2PKHSignatory = P2PKHSignatory;
176
- /** Signatory for a P2PK input. Always uses Schnorr signatures */
177
- const P2PKSignatory = (sk, sigHashType) => {
178
- return (ecc, input) => {
179
- const preimage = input.sigHashPreimage(sigHashType);
180
- const sighash = (0, hash_js_1.sha256d)(preimage.bytes);
181
- const sigFlagged = signWithSigHash(ecc, sk, sighash, sigHashType);
182
- return script_js_1.Script.fromOps([(0, op_js_1.pushBytesOp)(sigFlagged)]);
183
- };
184
- };
185
- exports.P2PKSignatory = P2PKSignatory;
186
142
  //# sourceMappingURL=txBuilder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"txBuilder.js","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"txBuilder.js","sourceRoot":"","sources":["../src/txBuilder.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ecash-lib",
3
- "version": "4.10.0",
3
+ "version": "4.12.0",
4
4
  "description": "Library for eCash transaction building",
5
5
  "main": "./dist/indexNodeJs.js",
6
6
  "browser": "./dist/indexBrowser.js",
package/src/consts.ts CHANGED
@@ -46,5 +46,18 @@ export const MAX_SCRIPTNUM_BYTE_SIZE = 8;
46
46
  /** Max pubkeys per multisig script. Matches MAX_PUBKEYS_PER_MULTISIG in src/script/script.h. */
47
47
  export const MAX_PUBKEYS_PER_MULTISIG = 20;
48
48
 
49
+ /**
50
+ * Upper bound on ECDSA `vchSig` size (strict DER + sighash byte) for fee / size
51
+ * estimation with {@link EccDummy}. Matches script validation: DER ≤ 72 bytes,
52
+ * then one sighash byte → max 73. Slightly above typical sizes (~71–72) and
53
+ * above the wallet dummy (72-byte `vchSig` in Bitcoin ABC); avoids underestimating.
54
+ *
55
+ * Since 1 sat/byte is both the min fee and a typical fee, do not assume slack
56
+ */
57
+ export const ECDSA_SIG_ESTIMATE_BYTES = 73;
58
+
59
+ /** Schnorr signature size in bytes including sighash flag, for fee estimation. */
60
+ export const SCHNORR_SIG_ESTIMATE_BYTES = 65;
61
+
49
62
  // The size in bytes of a p2pkh output
50
63
  export const P2PKH_OUTPUT_SIZE = 34;