@dynamic-labs-wallet/btc 1.0.105 → 1.0.107

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/index.cjs CHANGED
@@ -490,6 +490,14 @@ class DynamicBtcWalletClient extends browser.DynamicWalletClient {
490
490
  /**
491
491
  * Sign a Bitcoin Transaction (PSBT)
492
492
  *
493
+ * ECDSA wallets can also co-sign P2WSH multisig inputs, but only opt-in: pass the
494
+ * hex-encoded witnessScripts you constructed via `allowedWitnessScripts`. An input
495
+ * is signed when its witnessScript is allowlisted, hashes to the scriptPubKey
496
+ * commitment, and is a canonical multisig containing this wallet's public key.
497
+ * Omitting `allowedWitnessScripts` disables P2WSH signing entirely. The returned
498
+ * PSBT carries this wallet's partialSig and is NOT finalized — remaining
499
+ * co-signers add their signatures before finalizing.
500
+ *
493
501
  * @param transaction - The PSBT to sign in hex format
494
502
  * @param senderAddress - The address of the sender
495
503
  * @param password - The password to use for the transaction
@@ -498,8 +506,12 @@ class DynamicBtcWalletClient extends browser.DynamicWalletClient {
498
506
  * @param mfaToken - The MFA token to use for the transaction
499
507
  * @param context - The context to use for the transaction
500
508
  * @param onError - The error handler
509
+ * @param signingIndexes - Optional subset of PSBT input indexes to sign (must belong to senderAddress)
510
+ * @param allowedSighash - Optional allow-list of sighash types. The type itself is read
511
+ * from the PSBT; this only restricts which declared types are accepted. An empty
512
+ * array permits nothing; omit the parameter to permit any declared type
501
513
  * @returns The signed PSBT
502
- */ async signTransaction({ transaction, senderAddress, network, password, signedSessionId, mfaToken, elevatedAccessToken, context, onError }) {
514
+ */ async signTransaction({ transaction, senderAddress, network, password, signedSessionId, mfaToken, elevatedAccessToken, context, onError, signingIndexes, allowedSighash, allowedWitnessScripts }) {
503
515
  try {
504
516
  await this.verifyPassword({
505
517
  accountAddress: senderAddress,
@@ -544,23 +556,31 @@ class DynamicBtcWalletClient extends browser.DynamicWalletClient {
544
556
  }
545
557
  const pubKey = btcUtils.normalizePublicKey(derivedPublicKey, addressType);
546
558
  const tx = psbt.__CACHE.__TX;
547
- // Filter inputs to only sign those that belong to the current address
548
- const inputsToSign = psbt.data.inputs.map((input, i)=>({
559
+ const isTaproot = addressType === browser.BitcoinAddressType.TAPROOT;
560
+ // Filter inputs to only sign those that belong to the current address.
561
+ // P2WSH (multisig) inputs are opt-in: matched only when the caller
562
+ // allowlisted the witnessScript and it contains this wallet's key —
563
+ // ECDSA wallets only.
564
+ const walletPubKey = isTaproot ? undefined : pubKey;
565
+ const p2wshAllowlist = isTaproot ? undefined : allowedWitnessScripts;
566
+ let inputsToSign = psbt.data.inputs.map((input, i)=>({
549
567
  input,
550
568
  index: i
551
- })).filter(({ input })=>btcUtils.doesInputBelongToAddress(input, senderAddress, network));
569
+ })).filter(({ input })=>btcUtils.doesInputBelongToAddress(input, senderAddress, network, walletPubKey, p2wshAllowlist));
552
570
  this.logger.debug('[BTC Client] signTransaction - Filtering inputs', {
553
571
  totalInputs: psbt.data.inputs.length,
554
572
  inputsToSign: inputsToSign.length,
555
573
  senderAddress
556
574
  });
575
+ inputsToSign = btcUtils.filterInputsBySigningIndexes(inputsToSign, signingIndexes);
557
576
  if (inputsToSign.length === 0) {
558
577
  this.logger.warn('[BTC Client] signTransaction - No inputs found for address', {
559
578
  senderAddress,
560
579
  totalInputs: psbt.data.inputs.length
561
580
  });
562
581
  }
563
- if (addressType === browser.BitcoinAddressType.TAPROOT) {
582
+ btcUtils.assertSighashAllowed(inputsToSign, isTaproot, allowedSighash);
583
+ if (isTaproot) {
564
584
  const tweak = btcUtils.calculateTaprootTweak(pubKey);
565
585
  const completeBitcoinConfig = _extends({}, bitcoinConfig, {
566
586
  addressType: addressType,
@@ -571,7 +591,8 @@ class DynamicBtcWalletClient extends browser.DynamicWalletClient {
571
591
  if (!input.witnessUtxo) {
572
592
  throw new Error(`Input ${i} missing witnessUtxo`);
573
593
  }
574
- const hash = Buffer.from(tx.hashForWitnessV1(i, prevOutScripts, values, bitcoin__namespace.Transaction.SIGHASH_DEFAULT));
594
+ const sigHashType = btcUtils.getSigHashType(input, true);
595
+ const hash = Buffer.from(tx.hashForWitnessV1(i, prevOutScripts, values, sigHashType));
575
596
  const signature = await this.sign({
576
597
  message: new Uint8Array(hash),
577
598
  accountAddress: senderAddress,
@@ -590,7 +611,7 @@ class DynamicBtcWalletClient extends browser.DynamicWalletClient {
590
611
  bitcoinConfig: completeBitcoinConfig,
591
612
  onError
592
613
  });
593
- const sigBuffer = btcUtils.convertSignatureToTaprootBuffer(signature);
614
+ const sigBuffer = btcUtils.convertSignatureToTaprootBuffer(signature, sigHashType);
594
615
  psbt.updateInput(i, {
595
616
  tapKeySig: sigBuffer
596
617
  });
@@ -607,13 +628,11 @@ class DynamicBtcWalletClient extends browser.DynamicWalletClient {
607
628
  throw new Error(`Input ${i} missing witnessUtxo`);
608
629
  }
609
630
  const { script, value } = input.witnessUtxo;
610
- const p2pkh = bitcoin__namespace.payments.p2pkh({
611
- hash: script.slice(2),
612
- network: btcUtils.getBitcoinNetwork(network)
613
- });
614
- const scriptCode = p2pkh.output;
615
- if (!scriptCode) throw new Error('Failed to generate scriptCode');
616
- const hash = tx.hashForWitnessV0(i, scriptCode, value, bitcoin__namespace.Transaction.SIGHASH_ALL);
631
+ // Shared with extractPsbtSighashes; re-verifies the P2WSH
632
+ // commitment at the signer, independent of the ownership filter.
633
+ const scriptCode = btcUtils.getSegwitV0ScriptCode(input, script, i, btcUtils.getBitcoinNetwork(network));
634
+ const sigHashType = btcUtils.getSigHashType(input, false);
635
+ const hash = tx.hashForWitnessV0(i, scriptCode, value, sigHashType);
617
636
  const signature = await this.sign({
618
637
  message: new Uint8Array(hash),
619
638
  accountAddress: senderAddress,
@@ -632,7 +651,7 @@ class DynamicBtcWalletClient extends browser.DynamicWalletClient {
632
651
  bitcoinConfig: completeBitcoinConfig,
633
652
  onError
634
653
  });
635
- const derSignature = btcUtils.convertSignatureToDER(signature);
654
+ const derSignature = btcUtils.convertSignatureToDER(signature, sigHashType);
636
655
  psbt.updateInput(i, {
637
656
  partialSig: [
638
657
  {
package/index.esm.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { DynamicWalletClient, BitcoinNetwork, BitcoinAddressType, getMPCChainConfig, ERROR_CREATE_WALLET_ACCOUNT, ERROR_PASSWORD_MISMATCH, ERROR_MULTIPLE_WALLETS_PER_CHAIN, ERROR_ACCOUNT_ADDRESS_REQUIRED, ERROR_SIGN_MESSAGE, ERROR_IMPORT_PRIVATE_KEY } from '@dynamic-labs-wallet/browser';
2
2
  import * as bitcoin from 'bitcoinjs-lib';
3
3
  import ecc from '@bitcoinerlab/secp256k1';
4
- import { extractPublicKeyHex, normalizePublicKey, publicKeyToBitcoinAddress, getAddressTypeFromDerivationPath, calculateBip322Hash, calculateTaprootTweak, encodeBip322Signature, wifToPrivateKey, getPublicKeyFromPrivateKey, privateKeyToWIF, doesInputBelongToAddress, collectPSBTInputData, convertSignatureToTaprootBuffer, getBitcoinNetwork, convertSignatureToDER, getFeeRates, getUTXOs, selectUTXOs, getDefaultRpcUrl, initEccLib } from '@dynamic-labs-wallet/btc-utils';
4
+ import { extractPublicKeyHex, normalizePublicKey, publicKeyToBitcoinAddress, getAddressTypeFromDerivationPath, calculateBip322Hash, calculateTaprootTweak, encodeBip322Signature, wifToPrivateKey, getPublicKeyFromPrivateKey, privateKeyToWIF, doesInputBelongToAddress, filterInputsBySigningIndexes, assertSighashAllowed, collectPSBTInputData, getSigHashType, convertSignatureToTaprootBuffer, getSegwitV0ScriptCode, getBitcoinNetwork, convertSignatureToDER, getFeeRates, getUTXOs, selectUTXOs, getDefaultRpcUrl, initEccLib } from '@dynamic-labs-wallet/btc-utils';
5
5
 
6
6
  function _extends() {
7
7
  _extends = Object.assign || function assign(target) {
@@ -469,6 +469,14 @@ class DynamicBtcWalletClient extends DynamicWalletClient {
469
469
  /**
470
470
  * Sign a Bitcoin Transaction (PSBT)
471
471
  *
472
+ * ECDSA wallets can also co-sign P2WSH multisig inputs, but only opt-in: pass the
473
+ * hex-encoded witnessScripts you constructed via `allowedWitnessScripts`. An input
474
+ * is signed when its witnessScript is allowlisted, hashes to the scriptPubKey
475
+ * commitment, and is a canonical multisig containing this wallet's public key.
476
+ * Omitting `allowedWitnessScripts` disables P2WSH signing entirely. The returned
477
+ * PSBT carries this wallet's partialSig and is NOT finalized — remaining
478
+ * co-signers add their signatures before finalizing.
479
+ *
472
480
  * @param transaction - The PSBT to sign in hex format
473
481
  * @param senderAddress - The address of the sender
474
482
  * @param password - The password to use for the transaction
@@ -477,8 +485,12 @@ class DynamicBtcWalletClient extends DynamicWalletClient {
477
485
  * @param mfaToken - The MFA token to use for the transaction
478
486
  * @param context - The context to use for the transaction
479
487
  * @param onError - The error handler
488
+ * @param signingIndexes - Optional subset of PSBT input indexes to sign (must belong to senderAddress)
489
+ * @param allowedSighash - Optional allow-list of sighash types. The type itself is read
490
+ * from the PSBT; this only restricts which declared types are accepted. An empty
491
+ * array permits nothing; omit the parameter to permit any declared type
480
492
  * @returns The signed PSBT
481
- */ async signTransaction({ transaction, senderAddress, network, password, signedSessionId, mfaToken, elevatedAccessToken, context, onError }) {
493
+ */ async signTransaction({ transaction, senderAddress, network, password, signedSessionId, mfaToken, elevatedAccessToken, context, onError, signingIndexes, allowedSighash, allowedWitnessScripts }) {
482
494
  try {
483
495
  await this.verifyPassword({
484
496
  accountAddress: senderAddress,
@@ -523,23 +535,31 @@ class DynamicBtcWalletClient extends DynamicWalletClient {
523
535
  }
524
536
  const pubKey = normalizePublicKey(derivedPublicKey, addressType);
525
537
  const tx = psbt.__CACHE.__TX;
526
- // Filter inputs to only sign those that belong to the current address
527
- const inputsToSign = psbt.data.inputs.map((input, i)=>({
538
+ const isTaproot = addressType === BitcoinAddressType.TAPROOT;
539
+ // Filter inputs to only sign those that belong to the current address.
540
+ // P2WSH (multisig) inputs are opt-in: matched only when the caller
541
+ // allowlisted the witnessScript and it contains this wallet's key —
542
+ // ECDSA wallets only.
543
+ const walletPubKey = isTaproot ? undefined : pubKey;
544
+ const p2wshAllowlist = isTaproot ? undefined : allowedWitnessScripts;
545
+ let inputsToSign = psbt.data.inputs.map((input, i)=>({
528
546
  input,
529
547
  index: i
530
- })).filter(({ input })=>doesInputBelongToAddress(input, senderAddress, network));
548
+ })).filter(({ input })=>doesInputBelongToAddress(input, senderAddress, network, walletPubKey, p2wshAllowlist));
531
549
  this.logger.debug('[BTC Client] signTransaction - Filtering inputs', {
532
550
  totalInputs: psbt.data.inputs.length,
533
551
  inputsToSign: inputsToSign.length,
534
552
  senderAddress
535
553
  });
554
+ inputsToSign = filterInputsBySigningIndexes(inputsToSign, signingIndexes);
536
555
  if (inputsToSign.length === 0) {
537
556
  this.logger.warn('[BTC Client] signTransaction - No inputs found for address', {
538
557
  senderAddress,
539
558
  totalInputs: psbt.data.inputs.length
540
559
  });
541
560
  }
542
- if (addressType === BitcoinAddressType.TAPROOT) {
561
+ assertSighashAllowed(inputsToSign, isTaproot, allowedSighash);
562
+ if (isTaproot) {
543
563
  const tweak = calculateTaprootTweak(pubKey);
544
564
  const completeBitcoinConfig = _extends({}, bitcoinConfig, {
545
565
  addressType: addressType,
@@ -550,7 +570,8 @@ class DynamicBtcWalletClient extends DynamicWalletClient {
550
570
  if (!input.witnessUtxo) {
551
571
  throw new Error(`Input ${i} missing witnessUtxo`);
552
572
  }
553
- const hash = Buffer.from(tx.hashForWitnessV1(i, prevOutScripts, values, bitcoin.Transaction.SIGHASH_DEFAULT));
573
+ const sigHashType = getSigHashType(input, true);
574
+ const hash = Buffer.from(tx.hashForWitnessV1(i, prevOutScripts, values, sigHashType));
554
575
  const signature = await this.sign({
555
576
  message: new Uint8Array(hash),
556
577
  accountAddress: senderAddress,
@@ -569,7 +590,7 @@ class DynamicBtcWalletClient extends DynamicWalletClient {
569
590
  bitcoinConfig: completeBitcoinConfig,
570
591
  onError
571
592
  });
572
- const sigBuffer = convertSignatureToTaprootBuffer(signature);
593
+ const sigBuffer = convertSignatureToTaprootBuffer(signature, sigHashType);
573
594
  psbt.updateInput(i, {
574
595
  tapKeySig: sigBuffer
575
596
  });
@@ -586,13 +607,11 @@ class DynamicBtcWalletClient extends DynamicWalletClient {
586
607
  throw new Error(`Input ${i} missing witnessUtxo`);
587
608
  }
588
609
  const { script, value } = input.witnessUtxo;
589
- const p2pkh = bitcoin.payments.p2pkh({
590
- hash: script.slice(2),
591
- network: getBitcoinNetwork(network)
592
- });
593
- const scriptCode = p2pkh.output;
594
- if (!scriptCode) throw new Error('Failed to generate scriptCode');
595
- const hash = tx.hashForWitnessV0(i, scriptCode, value, bitcoin.Transaction.SIGHASH_ALL);
610
+ // Shared with extractPsbtSighashes; re-verifies the P2WSH
611
+ // commitment at the signer, independent of the ownership filter.
612
+ const scriptCode = getSegwitV0ScriptCode(input, script, i, getBitcoinNetwork(network));
613
+ const sigHashType = getSigHashType(input, false);
614
+ const hash = tx.hashForWitnessV0(i, scriptCode, value, sigHashType);
596
615
  const signature = await this.sign({
597
616
  message: new Uint8Array(hash),
598
617
  accountAddress: senderAddress,
@@ -611,7 +630,7 @@ class DynamicBtcWalletClient extends DynamicWalletClient {
611
630
  bitcoinConfig: completeBitcoinConfig,
612
631
  onError
613
632
  });
614
- const derSignature = convertSignatureToDER(signature);
633
+ const derSignature = convertSignatureToDER(signature, sigHashType);
615
634
  psbt.updateInput(i, {
616
635
  partialSig: [
617
636
  {
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@dynamic-labs-wallet/btc",
3
- "version": "1.0.105",
3
+ "version": "1.0.107",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "dependencies": {
8
8
  "@dynamic-labs/sdk-api-core": "^0.0.1093",
9
- "@dynamic-labs-wallet/browser": "1.0.105",
10
- "@dynamic-labs-wallet/btc-utils": "1.0.105",
9
+ "@dynamic-labs-wallet/browser": "1.0.107",
10
+ "@dynamic-labs-wallet/btc-utils": "1.0.107",
11
11
  "@bitcoinerlab/secp256k1": "^1.2.0",
12
12
  "bitcoinjs-lib": "^7.0.0"
13
13
  },
@@ -130,6 +130,14 @@ export declare class DynamicBtcWalletClient extends DynamicWalletClient {
130
130
  /**
131
131
  * Sign a Bitcoin Transaction (PSBT)
132
132
  *
133
+ * ECDSA wallets can also co-sign P2WSH multisig inputs, but only opt-in: pass the
134
+ * hex-encoded witnessScripts you constructed via `allowedWitnessScripts`. An input
135
+ * is signed when its witnessScript is allowlisted, hashes to the scriptPubKey
136
+ * commitment, and is a canonical multisig containing this wallet's public key.
137
+ * Omitting `allowedWitnessScripts` disables P2WSH signing entirely. The returned
138
+ * PSBT carries this wallet's partialSig and is NOT finalized — remaining
139
+ * co-signers add their signatures before finalizing.
140
+ *
133
141
  * @param transaction - The PSBT to sign in hex format
134
142
  * @param senderAddress - The address of the sender
135
143
  * @param password - The password to use for the transaction
@@ -138,9 +146,13 @@ export declare class DynamicBtcWalletClient extends DynamicWalletClient {
138
146
  * @param mfaToken - The MFA token to use for the transaction
139
147
  * @param context - The context to use for the transaction
140
148
  * @param onError - The error handler
149
+ * @param signingIndexes - Optional subset of PSBT input indexes to sign (must belong to senderAddress)
150
+ * @param allowedSighash - Optional allow-list of sighash types. The type itself is read
151
+ * from the PSBT; this only restricts which declared types are accepted. An empty
152
+ * array permits nothing; omit the parameter to permit any declared type
141
153
  * @returns The signed PSBT
142
154
  */
143
- signTransaction({ transaction, senderAddress, network, password, signedSessionId, mfaToken, elevatedAccessToken, context, onError, }: {
155
+ signTransaction({ transaction, senderAddress, network, password, signedSessionId, mfaToken, elevatedAccessToken, context, onError, signingIndexes, allowedSighash, allowedWitnessScripts, }: {
144
156
  transaction: string;
145
157
  senderAddress: string;
146
158
  network: BitcoinNetwork;
@@ -150,6 +162,10 @@ export declare class DynamicBtcWalletClient extends DynamicWalletClient {
150
162
  elevatedAccessToken?: string;
151
163
  context?: SignMessageContext;
152
164
  onError?: (error: Error) => void;
165
+ signingIndexes?: number[];
166
+ allowedSighash?: number[];
167
+ /** Hex-encoded witnessScripts the wallet may co-sign (P2WSH opt-in). */
168
+ allowedWitnessScripts?: string[];
153
169
  }): Promise<string>;
154
170
  /**
155
171
  * Creates a PSBT for a transaction
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}