ecash-lib 4.11.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.
package/README.md CHANGED
@@ -111,3 +111,4 @@ console.log(toHex(rawTx));
111
111
  - 4.9.0 - Add `parseNumberFromOp` as inverse of `pushNumberOp` [D19652](https://reviews.bitcoinabc.org/D19652)
112
112
  - 4.10.0 - Support for multisig scripts: Script.multisig, Script.multisigSpend, Script.parseP2shMultisigSpend, Script.parseBareMultisigSpend. Both ECDSA and Schnorr multisig formats supported. [D19663](https://reviews.bitcoinabc.org/D19663)
113
113
  - 4.11.0 - Implement `PSBT` to pass in-node and electrum-abc tests. [D19712](https://reviews.bitcoinabc.org/D19712)
114
+ - 4.12.0 - Add multisig support to `TxBuilder` (bare and P2SH signatories, ECDSA and Schnorr), partial signing via `Tx.addMultisigSignature` and `Tx.isFullySignedMultisig`, and BIP 174 `Psbt` (`Psbt.fromTx` / `Psbt.fromBytes` / `Psbt.toBytes`, `Psbt.addMultisigSignature`, `Psbt.isFullySignedMultisig`) for passing partially signed transactions between signers. [D19688](https://reviews.bitcoinabc.org/D19688)
package/dist/consts.d.ts CHANGED
@@ -36,5 +36,16 @@ export declare const MAX_TX_SERSIZE = 100000;
36
36
  export declare const MAX_SCRIPTNUM_BYTE_SIZE = 8;
37
37
  /** Max pubkeys per multisig script. Matches MAX_PUBKEYS_PER_MULTISIG in src/script/script.h. */
38
38
  export declare const MAX_PUBKEYS_PER_MULTISIG = 20;
39
+ /**
40
+ * Upper bound on ECDSA `vchSig` size (strict DER + sighash byte) for fee / size
41
+ * estimation with {@link EccDummy}. Matches script validation: DER ≤ 72 bytes,
42
+ * then one sighash byte → max 73. Slightly above typical sizes (~71–72) and
43
+ * above the wallet dummy (72-byte `vchSig` in Bitcoin ABC); avoids underestimating.
44
+ *
45
+ * Since 1 sat/byte is both the min fee and a typical fee, do not assume slack
46
+ */
47
+ export declare const ECDSA_SIG_ESTIMATE_BYTES = 73;
48
+ /** Schnorr signature size in bytes including sighash flag, for fee estimation. */
49
+ export declare const SCHNORR_SIG_ESTIMATE_BYTES = 65;
39
50
  export declare const P2PKH_OUTPUT_SIZE = 34;
40
51
  //# sourceMappingURL=consts.d.ts.map
@@ -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;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;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,SAAU,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,gGAAgG;AAChG,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAG3C,eAAO,MAAM,iBAAiB,KAAK,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;AAEvC;;;GAGG;AACH,eAAO,MAAM,cAAc,SAAU,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,gGAAgG;AAChG,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C,kFAAkF;AAClF,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAG7C,eAAO,MAAM,iBAAiB,KAAK,CAAC"}
package/dist/consts.js CHANGED
@@ -3,7 +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.P2PKH_OUTPUT_SIZE = exports.MAX_PUBKEYS_PER_MULTISIG = exports.MAX_SCRIPTNUM_BYTE_SIZE = exports.MAX_TX_SERSIZE = 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;
6
+ exports.P2PKH_OUTPUT_SIZE = exports.SCHNORR_SIG_ESTIMATE_BYTES = exports.ECDSA_SIG_ESTIMATE_BYTES = exports.MAX_PUBKEYS_PER_MULTISIG = exports.MAX_SCRIPTNUM_BYTE_SIZE = exports.MAX_TX_SERSIZE = 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. */
@@ -42,6 +42,17 @@ exports.MAX_TX_SERSIZE = 100000;
42
42
  exports.MAX_SCRIPTNUM_BYTE_SIZE = 8;
43
43
  /** Max pubkeys per multisig script. Matches MAX_PUBKEYS_PER_MULTISIG in src/script/script.h. */
44
44
  exports.MAX_PUBKEYS_PER_MULTISIG = 20;
45
+ /**
46
+ * Upper bound on ECDSA `vchSig` size (strict DER + sighash byte) for fee / size
47
+ * estimation with {@link EccDummy}. Matches script validation: DER ≤ 72 bytes,
48
+ * then one sighash byte → max 73. Slightly above typical sizes (~71–72) and
49
+ * above the wallet dummy (72-byte `vchSig` in Bitcoin ABC); avoids underestimating.
50
+ *
51
+ * Since 1 sat/byte is both the min fee and a typical fee, do not assume slack
52
+ */
53
+ exports.ECDSA_SIG_ESTIMATE_BYTES = 73;
54
+ /** Schnorr signature size in bytes including sighash flag, for fee estimation. */
55
+ exports.SCHNORR_SIG_ESTIMATE_BYTES = 65;
45
56
  // The size in bytes of a p2pkh output
46
57
  exports.P2PKH_OUTPUT_SIZE = 34;
47
58
  //# sourceMappingURL=consts.js.map
@@ -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;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;AAEvC;;;GAGG;AACU,QAAA,cAAc,GAAG,MAAO,CAAC;AAEtC;;;GAGG;AACU,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAEzC,gGAAgG;AACnF,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAE3C,sCAAsC;AACzB,QAAA,iBAAiB,GAAG,EAAE,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;AAEvC;;;GAGG;AACU,QAAA,cAAc,GAAG,MAAO,CAAC;AAEtC;;;GAGG;AACU,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAEzC,gGAAgG;AACnF,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAE3C;;;;;;;GAOG;AACU,QAAA,wBAAwB,GAAG,EAAE,CAAC;AAE3C,kFAAkF;AACrE,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,sCAAsC;AACzB,QAAA,iBAAiB,GAAG,EAAE,CAAC"}