@scure/btc-signer 1.0.0 โ†’ 1.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 CHANGED
@@ -2,13 +2,13 @@
2
2
 
3
3
  Audited & minimal library for creating, signing & decoding Bitcoin transactions.
4
4
 
5
+ - ๐Ÿ”’ [**Audited**](#security) by an independent security firm
5
6
  - โœ๏ธ Create transactions, inputs, outputs, sign them
6
7
  - ๐Ÿ“ก No network code: simplified audits and offline usage
7
8
  - ๐ŸŽป Classic & SegWit: P2PK, P2PKH, P2WPKH, P2SH, P2WSH, P2MS
8
9
  - ๐Ÿงช Schnorr & Taproot BIP340/BIP341: P2TR, P2TR-NS, P2TR-MS
9
10
  - ๐Ÿ“จ BIP174 PSBT
10
11
  - ๐Ÿ‘ฅ Multisig support
11
- - ๐Ÿ”’ [**Audited**](#security) by an independent security firm
12
12
  - ๐Ÿชถ ~2600 lines
13
13
 
14
14
  Initial development has been funded by [Ryan Shea](https://shea.io). Check out [the demo](https://signerdemo.micro-btc.dev/) & [its github](https://github.com/shea256/micro-btc-web-demo).
@@ -17,26 +17,26 @@ Initial development has been funded by [Ryan Shea](https://shea.io). Check out [
17
17
 
18
18
  > **scure** โ€” secure, independently audited packages for every use case.
19
19
 
20
- - All releases are signed with PGP keys
20
+ - Minimal or zero dependencies
21
+ - Releases are signed with PGP keys and built transparently with NPM provenance
21
22
  - Check out all libraries:
22
23
  [base](https://github.com/paulmillr/scure-base),
23
24
  [bip32](https://github.com/paulmillr/scure-bip32),
24
25
  [bip39](https://github.com/paulmillr/scure-bip39),
25
- [btc-signer](https://github.com/paulmillr/scure-btc-signer)
26
-
27
- Also, check out all _web3 utility libraries:_ [micro-eth-signer](https://github.com/paulmillr/micro-eth-signer), [scure-btc-signer](https://github.com/paulmillr/scure-btc-signer), [micro-sol-signer](https://github.com/paulmillr/micro-sol-signer), [micro-web3](https://github.com/paulmillr/micro-web3), [tx-tor-broadcaster](https://github.com/paulmillr/tx-tor-broadcaster)
26
+ [btc-signer](https://github.com/paulmillr/scure-btc-signer),
27
+ [starknet](https://github.com/paulmillr/scure-starknet)
28
28
 
29
29
  ## Usage
30
30
 
31
- Use NPM for browser / node.js:
32
-
33
31
  > npm install @scure/btc-signer
34
32
 
35
- For [Deno](https://deno.land), use it with [npm specifier](https://deno.land/manual@v1.28.0/node/npm_specifiers).
33
+ We support all major platforms and runtimes.
34
+ For [Deno](https://deno.land), ensure to use [npm specifier](https://deno.land/manual@v1.28.0/node/npm_specifiers).
35
+ For React Native, you may need a [polyfill for crypto.getRandomValues](https://github.com/LinusU/react-native-get-random-values).
36
36
 
37
37
  ```ts
38
38
  import * as btc from '@scure/btc-signer';
39
- // import * as btc from "npm:@scure/btc-signer@0.5.0"; // Deno
39
+ // import * as btc from "npm:@scure/btc-signer@1.0.0"; // Deno
40
40
  ```
41
41
 
42
42
  ### Table of Contents
@@ -621,10 +621,10 @@ const epriv =
621
621
  'tprv8ZgxMBicQKsPd9TeAdPADNnSyH9SSUUbTVeFszDE23Ki6TBB5nCefAdHkK8Fm3qMQR6sHwA56zqRmKmxnHk37JkiFzvncDqoKmPWubu7hDF';
622
622
  const hdkey = bip32.HDKey.fromExtendedKey(epriv, testnet.bip32);
623
623
  // const seed = 'cUkG8i1RFfWGWy5ziR11zJ5V4U4W3viSFCfyJmZnvQaUsd1xuF3T';
624
- const tx = new btc.Transaction(2);
624
+ const tx = new btc.Transaction();
625
625
  // A creator creating a PSBT for a transaction which creates the following outputs:
626
- tx.addOutput({ script: '0014d85c2b71d0060b09c9886aeb815e50991dda124d', amount: '1.49990000' });
627
- tx.addOutput({ script: '001400aea9a2e5f0f876a588df5546e8742d1d87008f', amount: '1.00000000' });
626
+ tx.addOutput({ script: '0014d85c2b71d0060b09c9886aeb815e50991dda124d', amount: btc.Decimal.decode('1.49990000') });
627
+ tx.addOutput({ script: '001400aea9a2e5f0f876a588df5546e8742d1d87008f', amount: btc.Decimal.decode('1.00000000') });
628
628
  // and spends the following inputs:
629
629
  tx.addInput({
630
630
  txid: '75ddabb27b8845f5247975c8a5ba7c6f336c4570708ebe230caf6db5217ae858',
@@ -696,7 +696,7 @@ const psbt2 = tx2.toPSBT();
696
696
  // An updater which adds SIGHASH_ALL to the above PSBT must create this PSBT:
697
697
  const tx3 = btc.Transaction.fromPSBT(psbt2);
698
698
  for (let i = 0; i < tx3.inputs.length; i++)
699
- tx3.updateInput(i, { sighashType: btc.SignatureHash.ALL });
699
+ tx3.updateInput(i, { sighashType: btc.SigHash.ALL });
700
700
  const psbt3 = tx3.toPSBT();
701
701
  /*
702
702
  Given the above updated PSBT, a signer that supports SIGHASH_ALL for P2PKH and P2WPKH spends and uses RFC6979 for nonce generation and has the following keys:
@@ -836,16 +836,36 @@ deepStrictEqual(
836
836
 
837
837
  ## Security
838
838
 
839
- The library has been audited on Feb 21, 2023 by an independent security firm cure53: [PDF](./audit/2023-02-21-cure53-audit-report.pdf). The audit has been funded by Ryan Shea.
840
-
841
- Target was v0.3.0 (commit 397ed56), see [changes since audit](https://github.com/paulmillr/scure-btc-signer/compare/0.3.0..main).
842
-
843
- We consider infrastructure attacks like rogue NPM modules very important; that's why it's crucial to minimize the amount of 3rd-party dependencies & native bindings. If your app uses 500 dependencies, any dep could get hacked and you'll be downloading malware with every `npm install`. Our goal is to minimize this attack vector. As for dependencies used by the library:
844
-
845
- - noble-curves, noble-hashes are audited cryptography libraries also developed by us and follow the same practices
846
- - scure-base is used for bech32 / base64 and was also audited
847
- - micro-packed is used for binary encoding, has not been audited
848
- - devDependencies contain scure-bip32, micro-packed-debugger, micro-should (our packages). Locked versions of prettier (linter) and typescript which are rarely updated. Every update is checked with `npm-diff`. They are only used if you clone the git repo and want to add some feature to it. End-users won't use them
839
+ The library has been independently audited:
840
+
841
+ - at version 0.3.0, in Feb 2023, by [cure53](https://cure53.de)
842
+ - PDFs: [online](https://cure53.de/audit-report_micro-btc-signer.pdf), [offline](./audit/2023-02-21-cure53-audit-report.pdf)
843
+ - [Changes since audit](https://github.com/paulmillr/scure-btc-signer/compare/0.3.0..main).
844
+ - The audit has been funded by [Ryan Shea](https://shea.io)
845
+
846
+ ### Supply chain security
847
+
848
+ 1. **Commits** are signed with PGP keys, to prevent forgery. Make sure to verify commit signatures.
849
+ 2. **Releases** are transparent and built on GitHub CI. Make sure to verify [provenance](https://docs.npmjs.com/generating-provenance-statements) logs
850
+ 3. **Rare releasing** is followed.
851
+ The less often it is done, the less code dependents would need to audit
852
+ 4. **Dependencies** are minimal:
853
+ - All deps are prevented from automatic updates and have locked-down version ranges. Every update is checked with `npm-diff`
854
+ - Updates themselves are rare, to ensure rogue updates are not catched accidentally
855
+ - [noble-hashes](https://github.com/paulmillr/noble-hashes) provides hashing functionality
856
+ - [noble-curves](https://github.com/paulmillr/noble-curves) provides elliptic curve cryptography
857
+ - [scure-base](https://github.com/paulmillr/scure-base) provides bech32 / base64
858
+ - [micro-packed](https://github.com/paulmillr/micro-packed) provides binary encoding - it has not been audited
859
+ 5. devDependencies are only used if you want to contribute to the repo. They are disabled for end-users:
860
+ - scure-bip32, micro-packed-debugger and micro-should are developed by the same author and follow identical security practices
861
+ - prettier (linter), fast-check (property-based testing) and typescript are used for code quality, vector generation and ts compilation. The packages are big, which makes it hard to audit their source code thoroughly and fully
862
+
863
+ We consider infrastructure attacks like rogue NPM modules very important;
864
+ that's why it's crucial to minimize the amount of 3rd-party dependencies & native bindings.
865
+ If your app uses 500 dependencies, any dep could get hacked and you'll be
866
+ downloading malware with every install. Our goal is to minimize this attack vector.
867
+
868
+ If you see anything unusual: investigate and report.
849
869
 
850
870
  ## License
851
871
 
package/index.d.ts CHANGED
@@ -1007,7 +1007,7 @@ export declare const RawPSBTV2: P.CoderType<({
1007
1007
  readonly proprietary: readonly [252, P.CoderType<Uint8Array>, P.CoderType<Uint8Array>, readonly [], readonly [0, 2], false];
1008
1008
  }>[];
1009
1009
  } & {})>;
1010
- type P2Ret = {
1010
+ export type P2Ret = {
1011
1011
  type: string;
1012
1012
  script: Bytes;
1013
1013
  address?: string;
@@ -1088,7 +1088,6 @@ type TaprootLeaf = {
1088
1088
  script: Bytes;
1089
1089
  hash: Bytes;
1090
1090
  path: Bytes[];
1091
- tapInternalKey?: Bytes;
1092
1091
  };
1093
1092
  export declare const TAPROOT_UNSPENDABLE_KEY: Uint8Array;
1094
1093
  export type P2TROut = P2Ret & {
@@ -1103,7 +1102,7 @@ export declare function p2tr(internalPubKey?: Bytes | string, tree?: TaprootScri
1103
1102
  pubKeyHash: number;
1104
1103
  scriptHash: number;
1105
1104
  wif: number;
1106
- }, allowUnknowOutput?: boolean): P2TROut;
1105
+ }, allowUnknownOutputs?: boolean): P2TROut;
1107
1106
  type OutTRNSType = {
1108
1107
  type: 'tr_ns';
1109
1108
  pubkeys: Bytes[];
@@ -1135,7 +1134,7 @@ export declare function programToWitness(version: number, data: Bytes, network?:
1135
1134
  pubKeyHash: number;
1136
1135
  scriptHash: number;
1137
1136
  wif: number;
1138
- }): string;
1137
+ }): `${Lowercase<string>}1${string}`;
1139
1138
  export declare function WIF(network?: {
1140
1139
  bech32: string;
1141
1140
  pubKeyHash: number;
@@ -1151,6 +1150,10 @@ export declare function Address(network?: {
1151
1150
  encode(from: P.UnwrapCoder<typeof OutScript>): string;
1152
1151
  decode(address: string): P.UnwrapCoder<typeof OutScript>;
1153
1152
  };
1153
+ /**
1154
+ * Internal, exported only for backwards-compat. Use `SigHash` instead.
1155
+ * @deprecated
1156
+ */
1154
1157
  export declare enum SignatureHash {
1155
1158
  DEFAULT = 0,
1156
1159
  ALL = 1,
@@ -1158,7 +1161,16 @@ export declare enum SignatureHash {
1158
1161
  SINGLE = 3,
1159
1162
  ANYONECANPAY = 128
1160
1163
  }
1161
- export declare const SigHashCoder: P.CoderType<"DEFAULT" | "ALL" | "NONE" | "SINGLE" | "ANYONECANPAY">;
1164
+ export declare enum SigHash {
1165
+ DEFAULT = 0,
1166
+ ALL = 1,
1167
+ NONE = 2,
1168
+ SINGLE = 3,
1169
+ DEFAULT_ANYONECANPAY = 128,
1170
+ ALL_ANYONECANPAY = 129,
1171
+ NONE_ANYONECANPAY = 130,
1172
+ SINGLE_ANYONECANPAY = 131
1173
+ }
1162
1174
  export declare const _sortPubkeys: (pubkeys: Bytes[]) => Uint8Array[];
1163
1175
  export type TransactionInput = P.UnwrapCoder<typeof PSBTInputCoder>;
1164
1176
  export type TransactionInputUpdate = ExtendType<TransactionInput, {
@@ -1194,8 +1206,12 @@ export type TxOpts = {
1194
1206
  version?: number;
1195
1207
  lockTime?: number;
1196
1208
  PSBTVersion?: number;
1209
+ /** @deprecated Use `allowUnknownOutputs` */
1197
1210
  allowUnknowOutput?: boolean;
1211
+ allowUnknownOutputs?: boolean;
1212
+ /** @deprecated Use `allowUnknownInputs` */
1198
1213
  allowUnknowInput?: boolean;
1214
+ allowUnknownInputs?: boolean;
1199
1215
  disableScriptCheck?: boolean;
1200
1216
  bip174jsCompat?: boolean;
1201
1217
  allowLegacyWitnessUtxo?: boolean;
@@ -1205,8 +1221,12 @@ declare function validateOpts(opts: TxOpts): Readonly<{
1205
1221
  version: number;
1206
1222
  lockTime: number;
1207
1223
  PSBTVersion: number;
1224
+ /** @deprecated Use `allowUnknownOutputs` */
1208
1225
  allowUnknowOutput?: boolean | undefined;
1226
+ allowUnknownOutputs?: boolean | undefined;
1227
+ /** @deprecated Use `allowUnknownInputs` */
1209
1228
  allowUnknowInput?: boolean | undefined;
1229
+ allowUnknownInputs?: boolean | undefined;
1210
1230
  disableScriptCheck?: boolean | undefined;
1211
1231
  bip174jsCompat?: boolean | undefined;
1212
1232
  allowLegacyWitnessUtxo?: boolean | undefined;
@@ -1344,7 +1364,7 @@ export declare class Transaction {
1344
1364
  private preimageWitnessV1;
1345
1365
  private prevOut;
1346
1366
  private inputType;
1347
- signIdx(privateKey: Signer, idx: number, allowedSighash?: SignatureHash[], _auxRand?: Bytes): boolean;
1367
+ signIdx(privateKey: Signer, idx: number, allowedSighash?: SigHash[], _auxRand?: Bytes): boolean;
1348
1368
  sign(privateKey: Signer, allowedSighash?: number[], _auxRand?: Bytes): number;
1349
1369
  finalizeIdx(idx: number): void;
1350
1370
  finalize(): void;
package/index.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}
package/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import { secp256k1 as _secp, schnorr } from '@noble/curves/secp256k1';
3
3
  import { sha256 } from '@noble/hashes/sha256';
4
4
  import { ripemd160 } from '@noble/hashes/ripemd160';
5
- import { hex, base58, base58check as _b58, bech32, bech32m } from '@scure/base';
5
+ import { hex, base58check as _b58, bech32, bech32m } from '@scure/base';
6
6
  import * as P from 'micro-packed';
7
7
  const { ProjectivePoint: ProjPoint, sign: _signECDSA, getPublicKey: _pubECDSA } = _secp;
8
8
  const CURVE_ORDER = _secp.CURVE.n;
@@ -431,6 +431,7 @@ export function OpToNum(op, bytesLimit = 4, forceMinimal = true) {
431
431
  return;
432
432
  }
433
433
  }
434
+ return;
434
435
  }
435
436
  // BTC specific variable length integer encoding
436
437
  // https://en.bitcoin.it/wiki/Protocol_documentation#Variable_length_integer
@@ -746,10 +747,10 @@ const PSBTInputCoder = P.validate(PSBTKeyMap(PSBTInput), (i) => {
746
747
  if (i.partialSig && !i.partialSig.length)
747
748
  throw new Error('Empty partialSig');
748
749
  if (i.partialSig)
749
- for (const [k, v] of i.partialSig)
750
+ for (const [k] of i.partialSig)
750
751
  validatePubkey(k, PubT.ecdsa);
751
752
  if (i.bip32Derivation)
752
- for (const [k, v] of i.bip32Derivation)
753
+ for (const [k] of i.bip32Derivation)
753
754
  validatePubkey(k, PubT.ecdsa);
754
755
  // Locktime = unsigned little endian integer greater than or equal to 500000000 representing
755
756
  if (i.requiredTimeLocktime !== undefined && i.requiredTimeLocktime < 500000000)
@@ -791,7 +792,7 @@ const PSBTInputCoder = P.validate(PSBTKeyMap(PSBTInput), (i) => {
791
792
  });
792
793
  const PSBTOutputCoder = P.validate(PSBTKeyMap(PSBTOutput), (o) => {
793
794
  if (o.bip32Derivation)
794
- for (const [k, v] of o.bip32Derivation)
795
+ for (const [k] of o.bip32Derivation)
795
796
  validatePubkey(k, PubT.ecdsa);
796
797
  return o;
797
798
  });
@@ -966,7 +967,9 @@ const OutPK = {
966
967
  },
967
968
  decode: (to) => (to.type === 'pk' ? [to.pubkey, 'CHECKSIG'] : undefined),
968
969
  };
970
+ // @ts-ignore
969
971
  export const p2pk = (pubkey, network = NETWORK) => {
972
+ // network is unused
970
973
  if (!isValidPubkey(pubkey, PubT.ecdsa))
971
974
  throw new Error('P2PK: invalid publicKey');
972
975
  return {
@@ -1121,34 +1124,47 @@ export function taprootListToTree(taprootList) {
1121
1124
  const last = lst[0];
1122
1125
  return (last?.childs || last);
1123
1126
  }
1124
- function checkTaprootScript(script, allowUnknowOutput = false) {
1127
+ function checkTaprootScript(script, internalPubKey, allowUnknownOutputs = false) {
1125
1128
  const out = OutScript.decode(script);
1126
- if (out.type === 'unknown' && allowUnknowOutput)
1129
+ if (out.type === 'unknown' && allowUnknownOutputs)
1127
1130
  return;
1128
1131
  if (!['tr_ns', 'tr_ms'].includes(out.type))
1129
1132
  throw new Error(`P2TR: invalid leaf script=${out.type}`);
1133
+ const outms = out;
1134
+ if (!allowUnknownOutputs && outms.pubkeys) {
1135
+ for (const p of outms.pubkeys) {
1136
+ if (P.equalBytes(p, TAPROOT_UNSPENDABLE_KEY))
1137
+ throw new Error('Unspendable taproot key in leaf script');
1138
+ // It's likely a mistake at this point:
1139
+ // 1. p2tr(A, p2tr_ns(2, [A, B])) == p2tr(A, p2tr_pk(B)) (A or B key)
1140
+ // but will take more space and fees.
1141
+ // 2. For multi-sig p2tr(A, p2tr_ns(2, [A, B, C])) it's probably a security issue:
1142
+ // User creates 2 of 3 multisig of keys [A, B, C],
1143
+ // but key A always can spend whole output without signatures from other keys.
1144
+ // p2tr(A, p2tr_ns(2, [B, C, D])) is ok: A or (B and C) or (B and D) or (C and D)
1145
+ if (P.equalBytes(p, internalPubKey)) {
1146
+ throw new Error('Using P2TR with leaf script with same key as internal key is not supported');
1147
+ }
1148
+ }
1149
+ }
1130
1150
  }
1131
- function taprootHashTree(tree, allowUnknowOutput = false) {
1151
+ function taprootHashTree(tree, internalPubKey, allowUnknownOutputs = false) {
1132
1152
  if (!tree)
1133
1153
  throw new Error('taprootHashTree: empty tree');
1134
1154
  if (Array.isArray(tree) && tree.length === 1)
1135
1155
  tree = tree[0];
1136
1156
  // Terminal node (leaf)
1137
1157
  if (!Array.isArray(tree)) {
1138
- const { leafVersion: version, script: leafScript, tapInternalKey } = tree;
1158
+ const { leafVersion: version, script: leafScript } = tree;
1139
1159
  // Earliest tree walk where we can validate tapScripts
1140
1160
  if (tree.tapLeafScript || (tree.tapMerkleRoot && !P.equalBytes(tree.tapMerkleRoot, P.EMPTY)))
1141
1161
  throw new Error('P2TR: tapRoot leafScript cannot have tree');
1142
- // Just to be sure that it is spendable
1143
- if (tapInternalKey && P.equalBytes(tapInternalKey, TAPROOT_UNSPENDABLE_KEY))
1144
- throw new Error('P2TR: tapRoot leafScript cannot have unspendble key');
1145
1162
  const script = typeof leafScript === 'string' ? hex.decode(leafScript) : leafScript;
1146
1163
  if (!isBytes(script))
1147
1164
  throw new Error(`checkScript: wrong script type=${script}`);
1148
- checkTaprootScript(script, allowUnknowOutput);
1165
+ checkTaprootScript(script, internalPubKey, allowUnknownOutputs);
1149
1166
  return {
1150
1167
  type: 'leaf',
1151
- tapInternalKey,
1152
1168
  version,
1153
1169
  script,
1154
1170
  hash: tapLeafHash(script, version),
@@ -1161,8 +1177,8 @@ function taprootHashTree(tree, allowUnknowOutput = false) {
1161
1177
  throw new Error('hashTree: non binary tree!');
1162
1178
  // branch
1163
1179
  // Both nodes should exist
1164
- const left = taprootHashTree(tree[0], allowUnknowOutput);
1165
- const right = taprootHashTree(tree[1], allowUnknowOutput);
1180
+ const left = taprootHashTree(tree[0], internalPubKey, allowUnknownOutputs);
1181
+ const right = taprootHashTree(tree[1], internalPubKey, allowUnknownOutputs);
1166
1182
  // We cannot swap left/right here, since it will change structure of tree
1167
1183
  let [lH, rH] = [left.hash, right.hash];
1168
1184
  if (_cmpBytes(rH, lH) === -1)
@@ -1203,7 +1219,7 @@ export const TAPROOT_UNSPENDABLE_KEY = sha256(ProjPoint.BASE.toRawBytes(false));
1203
1219
  // Works as key OR tree.
1204
1220
  // If we only have tree, need to add unspendable key, otherwise
1205
1221
  // complex multisig wallet can be spent by owner of key only. See TAPROOT_UNSPENDABLE_KEY
1206
- export function p2tr(internalPubKey, tree, network = NETWORK, allowUnknowOutput = false) {
1222
+ export function p2tr(internalPubKey, tree, network = NETWORK, allowUnknownOutputs = false) {
1207
1223
  // Unspendable
1208
1224
  if (!internalPubKey && !tree)
1209
1225
  throw new Error('p2tr: should have pubKey or scriptTree (or both)');
@@ -1212,7 +1228,9 @@ export function p2tr(internalPubKey, tree, network = NETWORK, allowUnknowOutput
1212
1228
  : internalPubKey || TAPROOT_UNSPENDABLE_KEY;
1213
1229
  if (!isValidPubkey(pubKey, PubT.schnorr))
1214
1230
  throw new Error('p2tr: non-schnorr pubkey');
1215
- let hashedTree = tree ? taprootAddPath(taprootHashTree(tree, allowUnknowOutput)) : undefined;
1231
+ let hashedTree = tree
1232
+ ? taprootAddPath(taprootHashTree(tree, pubKey, allowUnknownOutputs))
1233
+ : undefined;
1216
1234
  const tapMerkleRoot = hashedTree ? hashedTree.hash : undefined;
1217
1235
  const [tweakedPubkey, parity] = taprootTweakPubkey(pubKey, tapMerkleRoot || P.EMPTY);
1218
1236
  let leaves;
@@ -1221,7 +1239,7 @@ export function p2tr(internalPubKey, tree, network = NETWORK, allowUnknowOutput
1221
1239
  ...l,
1222
1240
  controlBlock: TaprootControlBlock.encode({
1223
1241
  version: (l.version || TAP_LEAF_VERSION) + parity,
1224
- internalKey: l.tapInternalKey || pubKey,
1242
+ internalKey: pubKey,
1225
1243
  merklePath: l.path,
1226
1244
  }),
1227
1245
  }));
@@ -1512,21 +1530,19 @@ export function Address(network = NETWORK) {
1512
1530
  else if (version === 1 && data.length === 32)
1513
1531
  return { type: 'tr', pubkey: data };
1514
1532
  else
1515
- throw new Error('Unkown witness program');
1533
+ throw new Error('Unknown witness program');
1516
1534
  }
1517
- const data = base58.decode(address);
1518
- if (data.length !== 25)
1535
+ const data = base58check.decode(address);
1536
+ if (data.length !== 21)
1519
1537
  throw new Error('Invalid base58 address');
1520
1538
  // Pay To Public Key Hash
1521
1539
  if (data[0] === network.pubKeyHash) {
1522
- const bytes = base58.decode(address);
1523
- return { type: 'pkh', hash: bytes.slice(1, bytes.length - 4) };
1540
+ return { type: 'pkh', hash: data.slice(1) };
1524
1541
  }
1525
1542
  else if (data[0] === network.scriptHash) {
1526
- const bytes = base58.decode(address);
1527
1543
  return {
1528
1544
  type: 'sh',
1529
- hash: base58.decode(address).slice(1, bytes.length - 4),
1545
+ hash: data.slice(1),
1530
1546
  };
1531
1547
  }
1532
1548
  throw new Error(`Invalid address prefix=${data[0]}`);
@@ -1534,6 +1550,10 @@ export function Address(network = NETWORK) {
1534
1550
  };
1535
1551
  }
1536
1552
  // /Address
1553
+ /**
1554
+ * Internal, exported only for backwards-compat. Use `SigHash` instead.
1555
+ * @deprecated
1556
+ */
1537
1557
  export var SignatureHash;
1538
1558
  (function (SignatureHash) {
1539
1559
  SignatureHash[SignatureHash["DEFAULT"] = 0] = "DEFAULT";
@@ -1542,7 +1562,22 @@ export var SignatureHash;
1542
1562
  SignatureHash[SignatureHash["SINGLE"] = 3] = "SINGLE";
1543
1563
  SignatureHash[SignatureHash["ANYONECANPAY"] = 128] = "ANYONECANPAY";
1544
1564
  })(SignatureHash || (SignatureHash = {}));
1545
- export const SigHashCoder = P.apply(P.U32LE, P.coders.tsEnum(SignatureHash));
1565
+ export var SigHash;
1566
+ (function (SigHash) {
1567
+ SigHash[SigHash["DEFAULT"] = 0] = "DEFAULT";
1568
+ SigHash[SigHash["ALL"] = 1] = "ALL";
1569
+ SigHash[SigHash["NONE"] = 2] = "NONE";
1570
+ SigHash[SigHash["SINGLE"] = 3] = "SINGLE";
1571
+ SigHash[SigHash["DEFAULT_ANYONECANPAY"] = 128] = "DEFAULT_ANYONECANPAY";
1572
+ SigHash[SigHash["ALL_ANYONECANPAY"] = 129] = "ALL_ANYONECANPAY";
1573
+ SigHash[SigHash["NONE_ANYONECANPAY"] = 130] = "NONE_ANYONECANPAY";
1574
+ SigHash[SigHash["SINGLE_ANYONECANPAY"] = 131] = "SINGLE_ANYONECANPAY";
1575
+ })(SigHash || (SigHash = {}));
1576
+ function validateSigHash(s) {
1577
+ if (typeof s !== 'number' || typeof SigHash[s] !== 'string')
1578
+ throw new Error(`Invalid SigHash=${s}`);
1579
+ return s;
1580
+ }
1546
1581
  function unpackSighash(hashType) {
1547
1582
  const masked = hashType & 0b0011111;
1548
1583
  return {
@@ -1585,17 +1620,21 @@ function getTaprootKeys(privKey, pubKey, internalKey, merkleRoot = P.EMPTY) {
1585
1620
  }
1586
1621
  return { privKey, pubKey };
1587
1622
  }
1588
- // Check if object doens't have custom constructor (like Uint8Array/Array)
1589
- const isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;
1623
+ const toStr = {}.toString;
1590
1624
  function validateOpts(opts) {
1591
- if (!isPlainObject(opts))
1625
+ if (opts !== undefined && toStr.call(opts) !== '[object Object]')
1592
1626
  throw new Error(`Wrong object type for transaction options: ${opts}`);
1593
1627
  const _opts = {
1594
1628
  ...opts,
1629
+ // Defaults
1595
1630
  version: def(opts.version, DEFAULT_VERSION),
1596
1631
  lockTime: def(opts.lockTime, 0),
1597
1632
  PSBTVersion: def(opts.PSBTVersion, 0),
1598
- }; // Defaults
1633
+ };
1634
+ if (typeof _opts.allowUnknowInput !== 'undefined')
1635
+ opts.allowUnknownInputs = _opts.allowUnknowInput;
1636
+ if (typeof _opts.allowUnknowOutput !== 'undefined')
1637
+ opts.allowUnknownOutputs = _opts.allowUnknowOutput;
1599
1638
  // 0 and -1 happens in tests
1600
1639
  if (![-1, 0, 1, 2].includes(_opts.version))
1601
1640
  throw new Error(`Unknown version: ${_opts.version}`);
@@ -1608,8 +1647,8 @@ function validateOpts(opts) {
1608
1647
  throw new Error(`Unknown PSBT version ${_opts.PSBTVersion}`);
1609
1648
  // Flags
1610
1649
  for (const k of [
1611
- 'allowUnknowOutput',
1612
- 'allowUnknowInput',
1650
+ 'allowUnknownOutputs',
1651
+ 'allowUnknownInputs',
1613
1652
  'disableScriptCheck',
1614
1653
  'bip174jsCompat',
1615
1654
  'allowLegacyWitnessUtxo',
@@ -1844,8 +1883,7 @@ export class Transaction {
1844
1883
  out += 4 * CompactSizeLen.encode(this.inputs.length).length;
1845
1884
  out += 4 * CompactSizeLen.encode(this.outputs.length).length;
1846
1885
  for (const i of this.inputs)
1847
- if (i.finalScriptSig)
1848
- out += 160 + 4 * VarBytes.encode(i.finalScriptSig).length;
1886
+ out += 160 + 4 * VarBytes.encode(i.finalScriptSig || P.EMPTY).length;
1849
1887
  for (const o of outputs)
1850
1888
  out += 32 + 4 * VarBytes.encode(o.script).length;
1851
1889
  if (this.hasWitnesses) {
@@ -1976,9 +2014,9 @@ export class Transaction {
1976
2014
  res = mergeKeyMap(PSBTOutput, res, cur, allowedFields);
1977
2015
  PSBTOutputCoder.encode(res);
1978
2016
  if (res.script &&
1979
- !this.opts.allowUnknowOutput &&
2017
+ !this.opts.allowUnknownOutputs &&
1980
2018
  OutScript.decode(res.script).type === 'unknown') {
1981
- throw new Error('Transaction/output: unknown output script type, there is a chance that input is unspendable. Pass allowUnkownScript=true, if you sure');
2019
+ throw new Error('Transaction/output: unknown output script type, there is a chance that input is unspendable. Pass allowUnknownScript=true, if you sure');
1982
2020
  }
1983
2021
  if (!this.opts.disableScriptCheck)
1984
2022
  checkScript(res.script, res.redeemScript, res.witnessScript);
@@ -2123,13 +2161,13 @@ export class Transaction {
2123
2161
  prevOut(input) {
2124
2162
  if (input.nonWitnessUtxo) {
2125
2163
  if (input.index === undefined)
2126
- throw new Error('Uknown input index');
2164
+ throw new Error('Unknown input index');
2127
2165
  return input.nonWitnessUtxo.outputs[input.index];
2128
2166
  }
2129
2167
  else if (input.witnessUtxo)
2130
2168
  return input.witnessUtxo;
2131
2169
  else
2132
- throw new Error('Cannot find previous output info.');
2170
+ throw new Error('Cannot find previous output info');
2133
2171
  }
2134
2172
  inputType(input) {
2135
2173
  let txType = 'legacy';
@@ -2225,6 +2263,8 @@ export class Transaction {
2225
2263
  // Just for compat with bitcoinjs-lib, so users won't face unexpected behaviour.
2226
2264
  if (!allowedSighash)
2227
2265
  allowedSighash = [inputType.defaultSighash];
2266
+ else
2267
+ allowedSighash.forEach(validateSigHash);
2228
2268
  const sighash = inputType.sighash;
2229
2269
  if (!allowedSighash.includes(sighash)) {
2230
2270
  throw new Error(`Input with not allowed sigHash=${sighash}. Allowed: ${allowedSighash.join(', ')}`);
@@ -2233,7 +2273,7 @@ export class Transaction {
2233
2273
  // however this was because of bug in bitcoin-core, which remains here because of consensus.
2234
2274
  // If this is absolutely neccessary for your case, please open issue.
2235
2275
  // We disable it to avoid complicated workflow where SINGLE will block adding new outputs
2236
- const { sigInputs, sigOutputs } = this.inputSighash(idx);
2276
+ const { sigOutputs } = this.inputSighash(idx);
2237
2277
  if (sigOutputs === SignatureHash.SINGLE && idx >= this.outputs.length) {
2238
2278
  throw new Error(`Input with sighash SINGLE, but there is no output with corresponding index=${idx}`);
2239
2279
  }
@@ -2255,7 +2295,7 @@ export class Transaction {
2255
2295
  // otherwise sign as is. bitcoinjs implementation always wants tweaked
2256
2296
  // priv key to be provided
2257
2297
  const { pubKey, privKey } = getTaprootKeys(privateKey, schnorrPub, input.tapInternalKey, merkleRoot);
2258
- const [taprootPubKey, parity] = taprootTweakPubkey(input.tapInternalKey, merkleRoot);
2298
+ const [taprootPubKey, _] = taprootTweakPubkey(input.tapInternalKey, merkleRoot);
2259
2299
  if (P.equalBytes(taprootPubKey, pubKey)) {
2260
2300
  const hash = this.preimageWitnessV1(idx, prevOutScript, sighash, amount);
2261
2301
  const sig = concat(schnorr.sign(hash, privKey, _auxRand), sighash !== SignatureHash.DEFAULT ? new Uint8Array([sighash]) : P.EMPTY);
@@ -2265,20 +2305,19 @@ export class Transaction {
2265
2305
  }
2266
2306
  if (input.tapLeafScript) {
2267
2307
  input.tapScriptSig = input.tapScriptSig || [];
2268
- for (const [cb, _script] of input.tapLeafScript) {
2308
+ for (const [_, _script] of input.tapLeafScript) {
2269
2309
  const script = _script.subarray(0, -1);
2270
2310
  const scriptDecoded = Script.decode(script);
2271
2311
  const ver = _script[_script.length - 1];
2272
2312
  const hash = tapLeafHash(script, ver);
2273
- const { pubKey, privKey } = getTaprootKeys(privateKey, schnorrPub, cb.internalKey, P.EMPTY // Because we cannot have nested taproot tree
2274
- );
2275
- const pos = scriptDecoded.findIndex((i) => isBytes(i) && P.equalBytes(i, pubKey));
2313
+ // NOTE: no need to tweak internal key here, since we don't support nested p2tr
2314
+ const pos = scriptDecoded.findIndex((i) => isBytes(i) && P.equalBytes(i, schnorrPub));
2276
2315
  // Skip if there is no public key in tapLeafScript
2277
2316
  if (pos === -1)
2278
2317
  continue;
2279
2318
  const msg = this.preimageWitnessV1(idx, prevOutScript, sighash, amount, undefined, script, ver);
2280
- const sig = concat(schnorr.sign(msg, privKey, _auxRand), sighash !== SignatureHash.DEFAULT ? new Uint8Array([sighash]) : P.EMPTY);
2281
- this.updateInput(idx, { tapScriptSig: [[{ pubKey: pubKey, leafHash: hash }, sig]] }, true);
2319
+ const sig = concat(schnorr.sign(msg, privateKey, _auxRand), sighash !== SignatureHash.DEFAULT ? new Uint8Array([sighash]) : P.EMPTY);
2320
+ this.updateInput(idx, { tapScriptSig: [[{ pubKey: schnorrPub, leafHash: hash }, sig]] }, true);
2282
2321
  signed = true;
2283
2322
  }
2284
2323
  }
@@ -2388,7 +2427,7 @@ export class Transaction {
2388
2427
  if (signatures.length !== outScript.pubkeys.length)
2389
2428
  continue;
2390
2429
  }
2391
- else if (outScript.type === 'unknown' && this.opts.allowUnknowInput) {
2430
+ else if (outScript.type === 'unknown' && this.opts.allowUnknownInputs) {
2392
2431
  // Trying our best to sign what we can
2393
2432
  const scriptDecoded = Script.decode(script);
2394
2433
  signatures = scriptSig
@@ -2454,7 +2493,7 @@ export class Transaction {
2454
2493
  inputScript = P.EMPTY;
2455
2494
  witness = [input.partialSig[0][1], input.partialSig[0][0]];
2456
2495
  }
2457
- else if (inputType.last.type === 'unknown' && !this.opts.allowUnknowInput)
2496
+ else if (inputType.last.type === 'unknown' && !this.opts.allowUnknownInputs)
2458
2497
  throw new Error('Unknown inputs not allowed');
2459
2498
  // Create final scripts (generic part)
2460
2499
  let finalScriptSig, finalScriptWitness;