@btc-vision/transaction 1.8.6 → 1.8.7
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/browser/btc-vision-bitcoin.js +364 -364
- package/browser/index.js +1577 -1276
- package/browser/noble-curves.js +1072 -1173
- package/browser/noble-hashes.js +282 -261
- package/browser/rolldown-runtime.js +7 -7
- package/browser/src/_version.d.ts +1 -0
- package/browser/{abi → src/abi}/ABICoder.d.ts +0 -1
- package/browser/{abi → src/abi}/ABIDataTypes.d.ts +0 -1
- package/browser/{abi → src/abi}/AbiTypes.d.ts +0 -1
- package/browser/{abi → src/abi}/TupleUtils.d.ts +0 -1
- package/browser/{branded → src/branded}/Branded.d.ts +0 -1
- package/browser/{buffer → src/buffer}/BinaryReader.d.ts +0 -1
- package/browser/{buffer → src/buffer}/BinaryWriter.d.ts +0 -1
- package/browser/{bytecode → src/bytecode}/Compressor.d.ts +0 -1
- package/browser/{chain → src/chain}/ChainData.d.ts +1 -2
- package/browser/{consensus → src/consensus}/Consensus.d.ts +0 -1
- package/browser/{consensus → src/consensus}/ConsensusConfig.d.ts +0 -1
- package/browser/{consensus → src/consensus}/IConsensusConfig.d.ts +0 -1
- package/browser/{consensus → src/consensus}/metadata/RoswellConsensus.d.ts +0 -1
- package/browser/{crypto → src/crypto}/crypto.d.ts +1 -2
- package/browser/{deterministic → src/deterministic}/AddressMap.d.ts +0 -1
- package/browser/{deterministic → src/deterministic}/AddressSet.d.ts +0 -1
- package/browser/{deterministic → src/deterministic}/CustomMap.d.ts +0 -1
- package/browser/{deterministic → src/deterministic}/DeterministicMap.d.ts +0 -1
- package/browser/{deterministic → src/deterministic}/DeterministicSet.d.ts +0 -1
- package/browser/{deterministic → src/deterministic}/ExtendedAddressMap.d.ts +0 -1
- package/browser/{deterministic → src/deterministic}/FastMap.d.ts +0 -1
- package/browser/{ecc → src/ecc}/backend.d.ts +1 -2
- package/browser/{epoch → src/epoch}/ChallengeSolution.d.ts +0 -1
- package/browser/{epoch → src/epoch}/interfaces/IChallengeSolution.d.ts +0 -1
- package/browser/{epoch → src/epoch}/validator/EpochValidator.d.ts +0 -1
- package/browser/{event → src/event}/NetEvent.d.ts +0 -1
- package/browser/{generators → src/generators}/AddressGenerator.d.ts +1 -2
- package/browser/{generators → src/generators}/Features.d.ts +0 -1
- package/browser/{generators → src/generators}/Generator.d.ts +1 -2
- package/browser/{generators → src/generators}/MLDSAData.d.ts +1 -2
- package/browser/{generators → src/generators}/builders/CalldataGenerator.d.ts +1 -2
- package/browser/{generators → src/generators}/builders/CustomGenerator.d.ts +1 -2
- package/browser/{generators → src/generators}/builders/DeploymentGenerator.d.ts +1 -2
- package/browser/{generators → src/generators}/builders/HashCommitmentGenerator.d.ts +1 -2
- package/browser/{generators → src/generators}/builders/LegacyCalldataGenerator.d.ts +1 -2
- package/browser/{generators → src/generators}/builders/MultiSignGenerator.d.ts +1 -2
- package/browser/{generators → src/generators}/builders/P2WDAGenerator.d.ts +1 -2
- package/browser/{index.d.ts → src/index.d.ts} +0 -1
- package/browser/{keypair → src/keypair}/Address.d.ts +2 -3
- package/browser/{keypair → src/keypair}/AddressVerificator.d.ts +2 -3
- package/browser/{keypair → src/keypair}/EcKeyPair.d.ts +2 -3
- package/browser/{keypair → src/keypair}/MessageSigner.d.ts +2 -3
- package/browser/{keypair → src/keypair}/Secp256k1PointDeriver.d.ts +0 -1
- package/browser/{keypair → src/keypair}/Wallet.d.ts +2 -3
- package/browser/{keypair → src/keypair}/interfaces/IWallet.d.ts +0 -1
- package/browser/{metadata → src/metadata}/ContractBaseMetadata.d.ts +1 -2
- package/browser/{mnemonic → src/mnemonic}/BIPStandard.d.ts +0 -1
- package/browser/{mnemonic → src/mnemonic}/Mnemonic.d.ts +2 -3
- package/browser/{mnemonic → src/mnemonic}/MnemonicStrength.d.ts +0 -1
- package/browser/{network → src/network}/ChainId.d.ts +0 -1
- package/browser/{opnet.d.ts → src/opnet.d.ts} +2 -2
- package/browser/{p2wda → src/p2wda}/P2WDADetector.d.ts +1 -2
- package/browser/{polyfill → src/polyfill}/disposable.d.ts +0 -1
- package/browser/{signer → src/signer}/AddressRotation.d.ts +0 -1
- package/browser/{signer → src/signer}/IRotationSigner.d.ts +1 -2
- package/browser/{signer → src/signer}/ParallelSignerAdapter.d.ts +1 -2
- package/browser/{signer → src/signer}/SignerUtils.d.ts +1 -2
- package/browser/{signer → src/signer}/TweakedSigner.d.ts +1 -2
- package/browser/{transaction → src/transaction}/ContractAddress.d.ts +0 -1
- package/browser/{transaction → src/transaction}/TransactionFactory.d.ts +1 -2
- package/browser/{transaction → src/transaction}/browser/BrowserSignerBase.d.ts +1 -2
- package/browser/{transaction → src/transaction}/browser/WalletNetworks.d.ts +0 -1
- package/browser/{transaction → src/transaction}/browser/Web3Provider.d.ts +0 -1
- package/browser/{transaction → src/transaction}/browser/extensions/UnisatSigner.d.ts +1 -2
- package/browser/{transaction → src/transaction}/browser/extensions/XverseSigner.d.ts +1 -2
- package/browser/{transaction → src/transaction}/browser/types/OPWallet.d.ts +0 -1
- package/browser/{transaction → src/transaction}/browser/types/Unisat.d.ts +0 -1
- package/browser/{transaction → src/transaction}/browser/types/Xverse.d.ts +0 -1
- package/browser/{transaction → src/transaction}/builders/CancelTransaction.d.ts +1 -2
- package/browser/src/transaction/builders/ChallengeSolutionTransaction.d.ts +1 -0
- package/browser/{transaction → src/transaction}/builders/ConsolidatedInteractionTransaction.d.ts +0 -1
- package/browser/{transaction → src/transaction}/builders/CustomScriptTransaction.d.ts +1 -2
- package/browser/{transaction → src/transaction}/builders/DeploymentTransaction.d.ts +1 -2
- package/browser/{transaction → src/transaction}/builders/FundingTransaction.d.ts +1 -2
- package/browser/{transaction → src/transaction}/builders/InteractionTransaction.d.ts +1 -2
- package/browser/{transaction → src/transaction}/builders/InteractionTransactionP2WDA.d.ts +1 -2
- package/browser/{transaction → src/transaction}/builders/MultiSignTransaction.d.ts +1 -2
- package/browser/{transaction → src/transaction}/builders/SharedInteractionTransaction.d.ts +1 -2
- package/browser/{transaction → src/transaction}/builders/TransactionBuilder.d.ts +2 -2
- package/browser/{transaction → src/transaction}/enums/TransactionType.d.ts +0 -1
- package/browser/{transaction → src/transaction}/interfaces/ICancelTransactionParameters.d.ts +0 -1
- package/browser/{transaction → src/transaction}/interfaces/IConsolidatedTransactionParameters.d.ts +0 -1
- package/browser/{transaction → src/transaction}/interfaces/ICustomTransactionParameters.d.ts +1 -2
- package/browser/{transaction → src/transaction}/interfaces/ITransactionParameters.d.ts +1 -2
- package/browser/{transaction → src/transaction}/interfaces/ITransactionResponses.d.ts +0 -1
- package/browser/{transaction → src/transaction}/interfaces/ITweakedTransactionData.d.ts +2 -3
- package/browser/{transaction → src/transaction}/interfaces/IWeb3ProviderTypes.d.ts +1 -2
- package/browser/{transaction → src/transaction}/interfaces/Tap.d.ts +1 -2
- package/browser/src/transaction/mineable/CSVMultisigProvider.d.ts +102 -0
- package/browser/{transaction → src/transaction}/mineable/IP2WSHAddress.d.ts +0 -1
- package/browser/{transaction → src/transaction}/mineable/TimelockGenerator.d.ts +1 -2
- package/browser/{transaction → src/transaction}/offline/OfflineTransactionManager.d.ts +51 -2
- package/browser/{transaction → src/transaction}/offline/TransactionReconstructor.d.ts +2 -3
- package/browser/{transaction → src/transaction}/offline/TransactionSerializer.d.ts +0 -1
- package/browser/{transaction → src/transaction}/offline/TransactionStateCapture.d.ts +0 -1
- package/browser/{transaction → src/transaction}/offline/interfaces/ISerializableState.d.ts +10 -3
- package/browser/{transaction → src/transaction}/offline/interfaces/ITypeSpecificData.d.ts +0 -1
- package/browser/{transaction → src/transaction}/psbt/PSBTTypes.d.ts +0 -1
- package/browser/{transaction → src/transaction}/shared/P2MR_MS.d.ts +1 -2
- package/browser/{transaction → src/transaction}/shared/P2TR_MS.d.ts +1 -2
- package/browser/{transaction → src/transaction}/shared/TweakedTransaction.d.ts +21 -3
- package/browser/{transaction → src/transaction}/utils/WitnessUtils.d.ts +0 -1
- package/browser/{utils → src/utils}/BitcoinUtils.d.ts +0 -1
- package/browser/{utils → src/utils}/BufferHelper.d.ts +0 -1
- package/browser/{utils → src/utils}/StringToBuffer.d.ts +0 -1
- package/browser/{utils → src/utils}/lengths.d.ts +0 -1
- package/browser/{utils → src/utils}/types.d.ts +0 -1
- package/browser/{utxo → src/utxo}/OPNetLimitedProvider.d.ts +1 -2
- package/browser/{utxo → src/utxo}/interfaces/BroadcastResponse.d.ts +0 -1
- package/browser/{utxo → src/utxo}/interfaces/IUTXO.d.ts +0 -1
- package/browser/{verification → src/verification}/TapscriptVerificator.d.ts +1 -2
- package/browser/vendors.js +1397 -1397
- package/build/_version.d.ts +1 -2
- package/build/_version.js +1 -2
- package/build/abi/ABICoder.d.ts +0 -1
- package/build/abi/ABICoder.js +0 -1
- package/build/abi/ABIDataTypes.d.ts +0 -1
- package/build/abi/ABIDataTypes.js +0 -1
- package/build/abi/AbiTypes.d.ts +0 -1
- package/build/abi/AbiTypes.js +0 -1
- package/build/abi/TupleUtils.d.ts +0 -1
- package/build/abi/TupleUtils.js +0 -1
- package/build/branded/Branded.d.ts +0 -1
- package/build/branded/Branded.js +0 -1
- package/build/buffer/BinaryReader.d.ts +0 -1
- package/build/buffer/BinaryReader.js +0 -1
- package/build/buffer/BinaryWriter.d.ts +0 -1
- package/build/buffer/BinaryWriter.js +0 -1
- package/build/bytecode/Compressor.d.ts +0 -1
- package/build/bytecode/Compressor.js +0 -1
- package/build/chain/ChainData.d.ts +0 -1
- package/build/chain/ChainData.js +0 -1
- package/build/consensus/Consensus.d.ts +0 -1
- package/build/consensus/Consensus.js +0 -1
- package/build/consensus/ConsensusConfig.d.ts +0 -1
- package/build/consensus/ConsensusConfig.js +0 -1
- package/build/consensus/IConsensusConfig.d.ts +0 -1
- package/build/consensus/IConsensusConfig.js +0 -1
- package/build/consensus/metadata/RoswellConsensus.d.ts +0 -1
- package/build/consensus/metadata/RoswellConsensus.js +0 -1
- package/build/crypto/crypto.d.ts +0 -1
- package/build/crypto/crypto.js +0 -1
- package/build/deterministic/AddressMap.d.ts +0 -1
- package/build/deterministic/AddressMap.js +0 -1
- package/build/deterministic/AddressSet.d.ts +0 -1
- package/build/deterministic/AddressSet.js +0 -1
- package/build/deterministic/CustomMap.d.ts +0 -1
- package/build/deterministic/CustomMap.js +0 -1
- package/build/deterministic/DeterministicMap.d.ts +0 -1
- package/build/deterministic/DeterministicMap.js +0 -1
- package/build/deterministic/DeterministicSet.d.ts +0 -1
- package/build/deterministic/DeterministicSet.js +0 -1
- package/build/deterministic/ExtendedAddressMap.d.ts +0 -1
- package/build/deterministic/ExtendedAddressMap.js +0 -1
- package/build/deterministic/FastMap.d.ts +0 -1
- package/build/deterministic/FastMap.js +0 -1
- package/build/ecc/backend.d.ts +0 -1
- package/build/ecc/backend.js +0 -1
- package/build/epoch/ChallengeSolution.d.ts +0 -1
- package/build/epoch/ChallengeSolution.js +0 -1
- package/build/epoch/interfaces/IChallengeSolution.d.ts +0 -1
- package/build/epoch/interfaces/IChallengeSolution.js +0 -1
- package/build/epoch/validator/EpochValidator.d.ts +0 -1
- package/build/epoch/validator/EpochValidator.js +0 -1
- package/build/event/NetEvent.d.ts +0 -1
- package/build/event/NetEvent.js +0 -1
- package/build/generators/AddressGenerator.d.ts +0 -1
- package/build/generators/AddressGenerator.js +0 -1
- package/build/generators/Features.d.ts +0 -1
- package/build/generators/Features.js +0 -1
- package/build/generators/Generator.d.ts +0 -1
- package/build/generators/Generator.js +0 -1
- package/build/generators/MLDSAData.d.ts +0 -1
- package/build/generators/MLDSAData.js +0 -1
- package/build/generators/builders/CalldataGenerator.d.ts +0 -1
- package/build/generators/builders/CalldataGenerator.js +0 -1
- package/build/generators/builders/CustomGenerator.d.ts +0 -1
- package/build/generators/builders/CustomGenerator.js +0 -1
- package/build/generators/builders/DeploymentGenerator.d.ts +0 -1
- package/build/generators/builders/DeploymentGenerator.js +0 -1
- package/build/generators/builders/HashCommitmentGenerator.d.ts +0 -1
- package/build/generators/builders/HashCommitmentGenerator.js +0 -1
- package/build/generators/builders/LegacyCalldataGenerator.d.ts +0 -1
- package/build/generators/builders/LegacyCalldataGenerator.js +0 -1
- package/build/generators/builders/MultiSignGenerator.d.ts +0 -1
- package/build/generators/builders/MultiSignGenerator.js +0 -1
- package/build/generators/builders/P2WDAGenerator.d.ts +0 -1
- package/build/generators/builders/P2WDAGenerator.js +0 -1
- package/build/index.d.ts +0 -1
- package/build/index.js +0 -1
- package/build/keypair/Address.d.ts +0 -1
- package/build/keypair/Address.js +0 -1
- package/build/keypair/AddressVerificator.d.ts +0 -1
- package/build/keypair/AddressVerificator.js +0 -1
- package/build/keypair/EcKeyPair.d.ts +0 -1
- package/build/keypair/EcKeyPair.js +0 -1
- package/build/keypair/MessageSigner.d.ts +0 -1
- package/build/keypair/MessageSigner.js +0 -1
- package/build/keypair/Secp256k1PointDeriver.d.ts +0 -1
- package/build/keypair/Secp256k1PointDeriver.js +0 -1
- package/build/keypair/Wallet.d.ts +0 -1
- package/build/keypair/Wallet.js +0 -1
- package/build/keypair/interfaces/IWallet.d.ts +0 -1
- package/build/keypair/interfaces/IWallet.js +0 -1
- package/build/metadata/ContractBaseMetadata.d.ts +0 -1
- package/build/metadata/ContractBaseMetadata.js +0 -1
- package/build/mnemonic/BIPStandard.d.ts +0 -1
- package/build/mnemonic/BIPStandard.js +0 -1
- package/build/mnemonic/Mnemonic.d.ts +0 -1
- package/build/mnemonic/Mnemonic.js +0 -1
- package/build/mnemonic/MnemonicStrength.d.ts +0 -1
- package/build/mnemonic/MnemonicStrength.js +0 -1
- package/build/network/ChainId.d.ts +0 -1
- package/build/network/ChainId.js +0 -1
- package/build/opnet.d.ts +1 -1
- package/build/opnet.js +1 -1
- package/build/p2wda/P2WDADetector.d.ts +0 -1
- package/build/p2wda/P2WDADetector.js +0 -1
- package/build/polyfill/disposable.d.ts +0 -1
- package/build/polyfill/disposable.js +0 -1
- package/build/signer/AddressRotation.d.ts +0 -1
- package/build/signer/AddressRotation.js +0 -1
- package/build/signer/IRotationSigner.d.ts +0 -1
- package/build/signer/IRotationSigner.js +0 -1
- package/build/signer/ParallelSignerAdapter.d.ts +0 -1
- package/build/signer/ParallelSignerAdapter.js +0 -1
- package/build/signer/SignerUtils.d.ts +0 -1
- package/build/signer/SignerUtils.js +0 -1
- package/build/signer/TweakedSigner.d.ts +0 -1
- package/build/signer/TweakedSigner.js +0 -1
- package/build/transaction/ContractAddress.d.ts +0 -1
- package/build/transaction/ContractAddress.js +0 -1
- package/build/transaction/TransactionFactory.d.ts +0 -1
- package/build/transaction/TransactionFactory.js +1 -2
- package/build/transaction/browser/BrowserSignerBase.d.ts +0 -1
- package/build/transaction/browser/BrowserSignerBase.js +0 -1
- package/build/transaction/browser/WalletNetworks.d.ts +0 -1
- package/build/transaction/browser/WalletNetworks.js +0 -1
- package/build/transaction/browser/Web3Provider.d.ts +0 -1
- package/build/transaction/browser/Web3Provider.js +0 -1
- package/build/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
- package/build/transaction/browser/extensions/UnisatSigner.js +0 -1
- package/build/transaction/browser/extensions/XverseSigner.d.ts +0 -1
- package/build/transaction/browser/extensions/XverseSigner.js +0 -1
- package/build/transaction/browser/types/OPWallet.d.ts +0 -1
- package/build/transaction/browser/types/OPWallet.js +0 -1
- package/build/transaction/browser/types/Unisat.d.ts +0 -1
- package/build/transaction/browser/types/Unisat.js +0 -1
- package/build/transaction/browser/types/Xverse.d.ts +0 -1
- package/build/transaction/browser/types/Xverse.js +0 -1
- package/build/transaction/builders/CancelTransaction.d.ts +0 -1
- package/build/transaction/builders/CancelTransaction.js +0 -1
- package/build/transaction/builders/ChallengeSolutionTransaction.d.ts +0 -1
- package/build/transaction/builders/ChallengeSolutionTransaction.js +0 -1
- package/build/transaction/builders/ConsolidatedInteractionTransaction.d.ts +0 -1
- package/build/transaction/builders/ConsolidatedInteractionTransaction.js +0 -1
- package/build/transaction/builders/CustomScriptTransaction.d.ts +0 -1
- package/build/transaction/builders/CustomScriptTransaction.js +0 -1
- package/build/transaction/builders/DeploymentTransaction.d.ts +0 -1
- package/build/transaction/builders/DeploymentTransaction.js +0 -1
- package/build/transaction/builders/FundingTransaction.d.ts +0 -1
- package/build/transaction/builders/FundingTransaction.js +17 -14
- package/build/transaction/builders/InteractionTransaction.d.ts +0 -1
- package/build/transaction/builders/InteractionTransaction.js +0 -1
- package/build/transaction/builders/InteractionTransactionP2WDA.d.ts +0 -1
- package/build/transaction/builders/InteractionTransactionP2WDA.js +0 -1
- package/build/transaction/builders/MultiSignTransaction.d.ts +0 -1
- package/build/transaction/builders/MultiSignTransaction.js +0 -1
- package/build/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
- package/build/transaction/builders/SharedInteractionTransaction.js +0 -1
- package/build/transaction/builders/TransactionBuilder.d.ts +1 -1
- package/build/transaction/builders/TransactionBuilder.js +39 -8
- package/build/transaction/enums/TransactionType.d.ts +0 -1
- package/build/transaction/enums/TransactionType.js +0 -1
- package/build/transaction/interfaces/ICancelTransactionParameters.d.ts +0 -1
- package/build/transaction/interfaces/ICancelTransactionParameters.js +0 -1
- package/build/transaction/interfaces/IConsolidatedTransactionParameters.d.ts +0 -1
- package/build/transaction/interfaces/IConsolidatedTransactionParameters.js +0 -1
- package/build/transaction/interfaces/ICustomTransactionParameters.d.ts +0 -1
- package/build/transaction/interfaces/ICustomTransactionParameters.js +0 -1
- package/build/transaction/interfaces/ITransactionParameters.d.ts +0 -1
- package/build/transaction/interfaces/ITransactionParameters.js +0 -1
- package/build/transaction/interfaces/ITransactionResponses.d.ts +0 -1
- package/build/transaction/interfaces/ITransactionResponses.js +0 -1
- package/build/transaction/interfaces/ITweakedTransactionData.d.ts +0 -1
- package/build/transaction/interfaces/ITweakedTransactionData.js +0 -1
- package/build/transaction/interfaces/IWeb3ProviderTypes.d.ts +0 -1
- package/build/transaction/interfaces/IWeb3ProviderTypes.js +0 -1
- package/build/transaction/interfaces/Tap.d.ts +0 -1
- package/build/transaction/interfaces/Tap.js +0 -1
- package/build/transaction/mineable/CSVMultisigProvider.d.ts +102 -0
- package/build/transaction/mineable/CSVMultisigProvider.js +348 -0
- package/build/transaction/mineable/IP2WSHAddress.d.ts +0 -1
- package/build/transaction/mineable/IP2WSHAddress.js +0 -1
- package/build/transaction/mineable/TimelockGenerator.d.ts +0 -1
- package/build/transaction/mineable/TimelockGenerator.js +0 -1
- package/build/transaction/offline/OfflineTransactionManager.d.ts +50 -1
- package/build/transaction/offline/OfflineTransactionManager.js +142 -2
- package/build/transaction/offline/TransactionReconstructor.d.ts +0 -1
- package/build/transaction/offline/TransactionReconstructor.js +0 -1
- package/build/transaction/offline/TransactionSerializer.d.ts +0 -1
- package/build/transaction/offline/TransactionSerializer.js +9 -1
- package/build/transaction/offline/TransactionStateCapture.d.ts +0 -1
- package/build/transaction/offline/TransactionStateCapture.js +0 -1
- package/build/transaction/offline/interfaces/ISerializableState.d.ts +10 -3
- package/build/transaction/offline/interfaces/ISerializableState.js +3 -3
- package/build/transaction/offline/interfaces/ITypeSpecificData.d.ts +0 -1
- package/build/transaction/offline/interfaces/ITypeSpecificData.js +0 -1
- package/build/transaction/psbt/PSBTTypes.d.ts +0 -1
- package/build/transaction/psbt/PSBTTypes.js +0 -1
- package/build/transaction/shared/P2MR_MS.d.ts +0 -1
- package/build/transaction/shared/P2MR_MS.js +0 -1
- package/build/transaction/shared/P2TR_MS.d.ts +0 -1
- package/build/transaction/shared/P2TR_MS.js +0 -1
- package/build/transaction/shared/TweakedTransaction.d.ts +19 -1
- package/build/transaction/shared/TweakedTransaction.js +96 -12
- package/build/transaction/utils/WitnessUtils.d.ts +0 -1
- package/build/transaction/utils/WitnessUtils.js +0 -1
- package/build/utils/BitcoinUtils.d.ts +0 -1
- package/build/utils/BitcoinUtils.js +0 -1
- package/build/utils/BufferHelper.d.ts +0 -1
- package/build/utils/BufferHelper.js +0 -1
- package/build/utils/StringToBuffer.d.ts +0 -1
- package/build/utils/StringToBuffer.js +0 -1
- package/build/utils/lengths.d.ts +0 -1
- package/build/utils/lengths.js +0 -1
- package/build/utils/types.d.ts +0 -1
- package/build/utils/types.js +0 -1
- package/build/utxo/OPNetLimitedProvider.d.ts +0 -1
- package/build/utxo/OPNetLimitedProvider.js +0 -1
- package/build/utxo/interfaces/BroadcastResponse.d.ts +0 -1
- package/build/utxo/interfaces/BroadcastResponse.js +0 -1
- package/build/utxo/interfaces/IUTXO.d.ts +0 -1
- package/build/utxo/interfaces/IUTXO.js +0 -1
- package/build/verification/TapscriptVerificator.d.ts +0 -1
- package/build/verification/TapscriptVerificator.js +0 -1
- package/eslint.config.js +5 -0
- package/package.json +20 -17
- package/src/_version.ts +1 -1
- package/src/keypair/Address.ts +1 -1
- package/src/opnet.ts +1 -0
- package/src/transaction/TransactionFactory.ts +1 -1
- package/src/transaction/builders/FundingTransaction.ts +21 -16
- package/src/transaction/builders/TransactionBuilder.ts +56 -10
- package/src/transaction/mineable/CSVMultisigProvider.ts +465 -0
- package/src/transaction/offline/OfflineTransactionManager.ts +191 -1
- package/src/transaction/offline/TransactionSerializer.ts +11 -0
- package/src/transaction/offline/interfaces/ISerializableState.ts +10 -2
- package/src/transaction/shared/TweakedTransaction.ts +123 -10
- package/test/add-refund-output.test.ts +96 -11
- package/test/csv-multisig-offline-edges.test.ts +293 -0
- package/test/csv-multisig-offline.test.ts +202 -0
- package/test/csv-multisig-spend.test.ts +363 -0
- package/test/transaction-builders.test.ts +69 -3
- package/test/web3-provider-types.test.ts +349 -0
- package/test/zero-amount-funding.test.ts +311 -0
- package/tsconfig.base.json +2 -2
- package/tsconfig.build.json +4 -1
- package/tsconfig.build.tsbuildinfo +1 -0
- package/tsconfig.json +9 -3
- package/browser/_version.d.ts +0 -2
- package/browser/_version.d.ts.map +0 -1
- package/browser/abi/ABICoder.d.ts.map +0 -1
- package/browser/abi/ABIDataTypes.d.ts.map +0 -1
- package/browser/abi/AbiTypes.d.ts.map +0 -1
- package/browser/abi/TupleUtils.d.ts.map +0 -1
- package/browser/branded/Branded.d.ts.map +0 -1
- package/browser/buffer/BinaryReader.d.ts.map +0 -1
- package/browser/buffer/BinaryWriter.d.ts.map +0 -1
- package/browser/bytecode/Compressor.d.ts.map +0 -1
- package/browser/chain/ChainData.d.ts.map +0 -1
- package/browser/consensus/Consensus.d.ts.map +0 -1
- package/browser/consensus/ConsensusConfig.d.ts.map +0 -1
- package/browser/consensus/IConsensusConfig.d.ts.map +0 -1
- package/browser/consensus/metadata/RoswellConsensus.d.ts.map +0 -1
- package/browser/crypto/crypto.d.ts.map +0 -1
- package/browser/deterministic/AddressMap.d.ts.map +0 -1
- package/browser/deterministic/AddressSet.d.ts.map +0 -1
- package/browser/deterministic/CustomMap.d.ts.map +0 -1
- package/browser/deterministic/DeterministicMap.d.ts.map +0 -1
- package/browser/deterministic/DeterministicSet.d.ts.map +0 -1
- package/browser/deterministic/ExtendedAddressMap.d.ts.map +0 -1
- package/browser/deterministic/FastMap.d.ts.map +0 -1
- package/browser/ecc/backend.d.ts.map +0 -1
- package/browser/epoch/ChallengeSolution.d.ts.map +0 -1
- package/browser/epoch/interfaces/IChallengeSolution.d.ts.map +0 -1
- package/browser/epoch/validator/EpochValidator.d.ts.map +0 -1
- package/browser/event/NetEvent.d.ts.map +0 -1
- package/browser/generators/AddressGenerator.d.ts.map +0 -1
- package/browser/generators/Features.d.ts.map +0 -1
- package/browser/generators/Generator.d.ts.map +0 -1
- package/browser/generators/MLDSAData.d.ts.map +0 -1
- package/browser/generators/builders/CalldataGenerator.d.ts.map +0 -1
- package/browser/generators/builders/CustomGenerator.d.ts.map +0 -1
- package/browser/generators/builders/DeploymentGenerator.d.ts.map +0 -1
- package/browser/generators/builders/HashCommitmentGenerator.d.ts.map +0 -1
- package/browser/generators/builders/LegacyCalldataGenerator.d.ts.map +0 -1
- package/browser/generators/builders/MultiSignGenerator.d.ts.map +0 -1
- package/browser/generators/builders/P2WDAGenerator.d.ts.map +0 -1
- package/browser/index.d.ts.map +0 -1
- package/browser/keypair/Address.d.ts.map +0 -1
- package/browser/keypair/AddressVerificator.d.ts.map +0 -1
- package/browser/keypair/EcKeyPair.d.ts.map +0 -1
- package/browser/keypair/MessageSigner.d.ts.map +0 -1
- package/browser/keypair/Secp256k1PointDeriver.d.ts.map +0 -1
- package/browser/keypair/Wallet.d.ts.map +0 -1
- package/browser/keypair/interfaces/IWallet.d.ts.map +0 -1
- package/browser/metadata/ContractBaseMetadata.d.ts.map +0 -1
- package/browser/mnemonic/BIPStandard.d.ts.map +0 -1
- package/browser/mnemonic/Mnemonic.d.ts.map +0 -1
- package/browser/mnemonic/MnemonicStrength.d.ts.map +0 -1
- package/browser/network/ChainId.d.ts.map +0 -1
- package/browser/opnet.d.ts.map +0 -1
- package/browser/p2wda/P2WDADetector.d.ts.map +0 -1
- package/browser/polyfill/disposable.d.ts.map +0 -1
- package/browser/signer/AddressRotation.d.ts.map +0 -1
- package/browser/signer/IRotationSigner.d.ts.map +0 -1
- package/browser/signer/ParallelSignerAdapter.d.ts.map +0 -1
- package/browser/signer/SignerUtils.d.ts.map +0 -1
- package/browser/signer/TweakedSigner.d.ts.map +0 -1
- package/browser/transaction/ContractAddress.d.ts.map +0 -1
- package/browser/transaction/TransactionFactory.d.ts.map +0 -1
- package/browser/transaction/browser/BrowserSignerBase.d.ts.map +0 -1
- package/browser/transaction/browser/WalletNetworks.d.ts.map +0 -1
- package/browser/transaction/browser/Web3Provider.d.ts.map +0 -1
- package/browser/transaction/browser/extensions/UnisatSigner.d.ts.map +0 -1
- package/browser/transaction/browser/extensions/XverseSigner.d.ts.map +0 -1
- package/browser/transaction/browser/types/OPWallet.d.ts.map +0 -1
- package/browser/transaction/browser/types/Unisat.d.ts.map +0 -1
- package/browser/transaction/browser/types/Xverse.d.ts.map +0 -1
- package/browser/transaction/builders/CancelTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/ChallengeSolutionTransaction.d.ts +0 -2
- package/browser/transaction/builders/ChallengeSolutionTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/ConsolidatedInteractionTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/CustomScriptTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/DeploymentTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/FundingTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/InteractionTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/InteractionTransactionP2WDA.d.ts.map +0 -1
- package/browser/transaction/builders/MultiSignTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/SharedInteractionTransaction.d.ts.map +0 -1
- package/browser/transaction/builders/TransactionBuilder.d.ts.map +0 -1
- package/browser/transaction/enums/TransactionType.d.ts.map +0 -1
- package/browser/transaction/interfaces/ICancelTransactionParameters.d.ts.map +0 -1
- package/browser/transaction/interfaces/IConsolidatedTransactionParameters.d.ts.map +0 -1
- package/browser/transaction/interfaces/ICustomTransactionParameters.d.ts.map +0 -1
- package/browser/transaction/interfaces/ITransactionParameters.d.ts.map +0 -1
- package/browser/transaction/interfaces/ITransactionResponses.d.ts.map +0 -1
- package/browser/transaction/interfaces/ITweakedTransactionData.d.ts.map +0 -1
- package/browser/transaction/interfaces/IWeb3ProviderTypes.d.ts.map +0 -1
- package/browser/transaction/interfaces/Tap.d.ts.map +0 -1
- package/browser/transaction/mineable/IP2WSHAddress.d.ts.map +0 -1
- package/browser/transaction/mineable/TimelockGenerator.d.ts.map +0 -1
- package/browser/transaction/offline/OfflineTransactionManager.d.ts.map +0 -1
- package/browser/transaction/offline/TransactionReconstructor.d.ts.map +0 -1
- package/browser/transaction/offline/TransactionSerializer.d.ts.map +0 -1
- package/browser/transaction/offline/TransactionStateCapture.d.ts.map +0 -1
- package/browser/transaction/offline/interfaces/ISerializableState.d.ts.map +0 -1
- package/browser/transaction/offline/interfaces/ITypeSpecificData.d.ts.map +0 -1
- package/browser/transaction/psbt/PSBTTypes.d.ts.map +0 -1
- package/browser/transaction/shared/P2MR_MS.d.ts.map +0 -1
- package/browser/transaction/shared/P2TR_MS.d.ts.map +0 -1
- package/browser/transaction/shared/TweakedTransaction.d.ts.map +0 -1
- package/browser/transaction/utils/WitnessUtils.d.ts.map +0 -1
- package/browser/utils/BitcoinUtils.d.ts.map +0 -1
- package/browser/utils/BufferHelper.d.ts.map +0 -1
- package/browser/utils/StringToBuffer.d.ts.map +0 -1
- package/browser/utils/lengths.d.ts.map +0 -1
- package/browser/utils/types.d.ts.map +0 -1
- package/browser/utxo/OPNetLimitedProvider.d.ts.map +0 -1
- package/browser/utxo/interfaces/BroadcastResponse.d.ts.map +0 -1
- package/browser/utxo/interfaces/IUTXO.d.ts.map +0 -1
- package/browser/verification/TapscriptVerificator.d.ts.map +0 -1
- package/build/_version.d.ts.map +0 -1
- package/build/_version.js.map +0 -1
- package/build/abi/ABICoder.d.ts.map +0 -1
- package/build/abi/ABICoder.js.map +0 -1
- package/build/abi/ABIDataTypes.d.ts.map +0 -1
- package/build/abi/ABIDataTypes.js.map +0 -1
- package/build/abi/AbiTypes.d.ts.map +0 -1
- package/build/abi/AbiTypes.js.map +0 -1
- package/build/abi/TupleUtils.d.ts.map +0 -1
- package/build/abi/TupleUtils.js.map +0 -1
- package/build/branded/Branded.d.ts.map +0 -1
- package/build/branded/Branded.js.map +0 -1
- package/build/buffer/BinaryReader.d.ts.map +0 -1
- package/build/buffer/BinaryReader.js.map +0 -1
- package/build/buffer/BinaryWriter.d.ts.map +0 -1
- package/build/buffer/BinaryWriter.js.map +0 -1
- package/build/bytecode/Compressor.d.ts.map +0 -1
- package/build/bytecode/Compressor.js.map +0 -1
- package/build/chain/ChainData.d.ts.map +0 -1
- package/build/chain/ChainData.js.map +0 -1
- package/build/consensus/Consensus.d.ts.map +0 -1
- package/build/consensus/Consensus.js.map +0 -1
- package/build/consensus/ConsensusConfig.d.ts.map +0 -1
- package/build/consensus/ConsensusConfig.js.map +0 -1
- package/build/consensus/IConsensusConfig.d.ts.map +0 -1
- package/build/consensus/IConsensusConfig.js.map +0 -1
- package/build/consensus/metadata/RoswellConsensus.d.ts.map +0 -1
- package/build/consensus/metadata/RoswellConsensus.js.map +0 -1
- package/build/crypto/crypto.d.ts.map +0 -1
- package/build/crypto/crypto.js.map +0 -1
- package/build/deterministic/AddressMap.d.ts.map +0 -1
- package/build/deterministic/AddressMap.js.map +0 -1
- package/build/deterministic/AddressSet.d.ts.map +0 -1
- package/build/deterministic/AddressSet.js.map +0 -1
- package/build/deterministic/CustomMap.d.ts.map +0 -1
- package/build/deterministic/CustomMap.js.map +0 -1
- package/build/deterministic/DeterministicMap.d.ts.map +0 -1
- package/build/deterministic/DeterministicMap.js.map +0 -1
- package/build/deterministic/DeterministicSet.d.ts.map +0 -1
- package/build/deterministic/DeterministicSet.js.map +0 -1
- package/build/deterministic/ExtendedAddressMap.d.ts.map +0 -1
- package/build/deterministic/ExtendedAddressMap.js.map +0 -1
- package/build/deterministic/FastMap.d.ts.map +0 -1
- package/build/deterministic/FastMap.js.map +0 -1
- package/build/ecc/backend.d.ts.map +0 -1
- package/build/ecc/backend.js.map +0 -1
- package/build/epoch/ChallengeSolution.d.ts.map +0 -1
- package/build/epoch/ChallengeSolution.js.map +0 -1
- package/build/epoch/interfaces/IChallengeSolution.d.ts.map +0 -1
- package/build/epoch/interfaces/IChallengeSolution.js.map +0 -1
- package/build/epoch/validator/EpochValidator.d.ts.map +0 -1
- package/build/epoch/validator/EpochValidator.js.map +0 -1
- package/build/event/NetEvent.d.ts.map +0 -1
- package/build/event/NetEvent.js.map +0 -1
- package/build/generators/AddressGenerator.d.ts.map +0 -1
- package/build/generators/AddressGenerator.js.map +0 -1
- package/build/generators/Features.d.ts.map +0 -1
- package/build/generators/Features.js.map +0 -1
- package/build/generators/Generator.d.ts.map +0 -1
- package/build/generators/Generator.js.map +0 -1
- package/build/generators/MLDSAData.d.ts.map +0 -1
- package/build/generators/MLDSAData.js.map +0 -1
- package/build/generators/builders/CalldataGenerator.d.ts.map +0 -1
- package/build/generators/builders/CalldataGenerator.js.map +0 -1
- package/build/generators/builders/CustomGenerator.d.ts.map +0 -1
- package/build/generators/builders/CustomGenerator.js.map +0 -1
- package/build/generators/builders/DeploymentGenerator.d.ts.map +0 -1
- package/build/generators/builders/DeploymentGenerator.js.map +0 -1
- package/build/generators/builders/HashCommitmentGenerator.d.ts.map +0 -1
- package/build/generators/builders/HashCommitmentGenerator.js.map +0 -1
- package/build/generators/builders/LegacyCalldataGenerator.d.ts.map +0 -1
- package/build/generators/builders/LegacyCalldataGenerator.js.map +0 -1
- package/build/generators/builders/MultiSignGenerator.d.ts.map +0 -1
- package/build/generators/builders/MultiSignGenerator.js.map +0 -1
- package/build/generators/builders/P2WDAGenerator.d.ts.map +0 -1
- package/build/generators/builders/P2WDAGenerator.js.map +0 -1
- package/build/index.d.ts.map +0 -1
- package/build/index.js.map +0 -1
- package/build/keypair/Address.d.ts.map +0 -1
- package/build/keypair/Address.js.map +0 -1
- package/build/keypair/AddressVerificator.d.ts.map +0 -1
- package/build/keypair/AddressVerificator.js.map +0 -1
- package/build/keypair/EcKeyPair.d.ts.map +0 -1
- package/build/keypair/EcKeyPair.js.map +0 -1
- package/build/keypair/MessageSigner.d.ts.map +0 -1
- package/build/keypair/MessageSigner.js.map +0 -1
- package/build/keypair/Secp256k1PointDeriver.d.ts.map +0 -1
- package/build/keypair/Secp256k1PointDeriver.js.map +0 -1
- package/build/keypair/Wallet.d.ts.map +0 -1
- package/build/keypair/Wallet.js.map +0 -1
- package/build/keypair/interfaces/IWallet.d.ts.map +0 -1
- package/build/keypair/interfaces/IWallet.js.map +0 -1
- package/build/metadata/ContractBaseMetadata.d.ts.map +0 -1
- package/build/metadata/ContractBaseMetadata.js.map +0 -1
- package/build/mnemonic/BIPStandard.d.ts.map +0 -1
- package/build/mnemonic/BIPStandard.js.map +0 -1
- package/build/mnemonic/Mnemonic.d.ts.map +0 -1
- package/build/mnemonic/Mnemonic.js.map +0 -1
- package/build/mnemonic/MnemonicStrength.d.ts.map +0 -1
- package/build/mnemonic/MnemonicStrength.js.map +0 -1
- package/build/network/ChainId.d.ts.map +0 -1
- package/build/network/ChainId.js.map +0 -1
- package/build/opnet.d.ts.map +0 -1
- package/build/opnet.js.map +0 -1
- package/build/p2wda/P2WDADetector.d.ts.map +0 -1
- package/build/p2wda/P2WDADetector.js.map +0 -1
- package/build/polyfill/disposable.d.ts.map +0 -1
- package/build/polyfill/disposable.js.map +0 -1
- package/build/signer/AddressRotation.d.ts.map +0 -1
- package/build/signer/AddressRotation.js.map +0 -1
- package/build/signer/IRotationSigner.d.ts.map +0 -1
- package/build/signer/IRotationSigner.js.map +0 -1
- package/build/signer/ParallelSignerAdapter.d.ts.map +0 -1
- package/build/signer/ParallelSignerAdapter.js.map +0 -1
- package/build/signer/SignerUtils.d.ts.map +0 -1
- package/build/signer/SignerUtils.js.map +0 -1
- package/build/signer/TweakedSigner.d.ts.map +0 -1
- package/build/signer/TweakedSigner.js.map +0 -1
- package/build/transaction/ContractAddress.d.ts.map +0 -1
- package/build/transaction/ContractAddress.js.map +0 -1
- package/build/transaction/TransactionFactory.d.ts.map +0 -1
- package/build/transaction/TransactionFactory.js.map +0 -1
- package/build/transaction/browser/BrowserSignerBase.d.ts.map +0 -1
- package/build/transaction/browser/BrowserSignerBase.js.map +0 -1
- package/build/transaction/browser/WalletNetworks.d.ts.map +0 -1
- package/build/transaction/browser/WalletNetworks.js.map +0 -1
- package/build/transaction/browser/Web3Provider.d.ts.map +0 -1
- package/build/transaction/browser/Web3Provider.js.map +0 -1
- package/build/transaction/browser/extensions/UnisatSigner.d.ts.map +0 -1
- package/build/transaction/browser/extensions/UnisatSigner.js.map +0 -1
- package/build/transaction/browser/extensions/XverseSigner.d.ts.map +0 -1
- package/build/transaction/browser/extensions/XverseSigner.js.map +0 -1
- package/build/transaction/browser/types/OPWallet.d.ts.map +0 -1
- package/build/transaction/browser/types/OPWallet.js.map +0 -1
- package/build/transaction/browser/types/Unisat.d.ts.map +0 -1
- package/build/transaction/browser/types/Unisat.js.map +0 -1
- package/build/transaction/browser/types/Xverse.d.ts.map +0 -1
- package/build/transaction/browser/types/Xverse.js.map +0 -1
- package/build/transaction/builders/CancelTransaction.d.ts.map +0 -1
- package/build/transaction/builders/CancelTransaction.js.map +0 -1
- package/build/transaction/builders/ChallengeSolutionTransaction.d.ts.map +0 -1
- package/build/transaction/builders/ChallengeSolutionTransaction.js.map +0 -1
- package/build/transaction/builders/ConsolidatedInteractionTransaction.d.ts.map +0 -1
- package/build/transaction/builders/ConsolidatedInteractionTransaction.js.map +0 -1
- package/build/transaction/builders/CustomScriptTransaction.d.ts.map +0 -1
- package/build/transaction/builders/CustomScriptTransaction.js.map +0 -1
- package/build/transaction/builders/DeploymentTransaction.d.ts.map +0 -1
- package/build/transaction/builders/DeploymentTransaction.js.map +0 -1
- package/build/transaction/builders/FundingTransaction.d.ts.map +0 -1
- package/build/transaction/builders/FundingTransaction.js.map +0 -1
- package/build/transaction/builders/InteractionTransaction.d.ts.map +0 -1
- package/build/transaction/builders/InteractionTransaction.js.map +0 -1
- package/build/transaction/builders/InteractionTransactionP2WDA.d.ts.map +0 -1
- package/build/transaction/builders/InteractionTransactionP2WDA.js.map +0 -1
- package/build/transaction/builders/MultiSignTransaction.d.ts.map +0 -1
- package/build/transaction/builders/MultiSignTransaction.js.map +0 -1
- package/build/transaction/builders/SharedInteractionTransaction.d.ts.map +0 -1
- package/build/transaction/builders/SharedInteractionTransaction.js.map +0 -1
- package/build/transaction/builders/TransactionBuilder.d.ts.map +0 -1
- package/build/transaction/builders/TransactionBuilder.js.map +0 -1
- package/build/transaction/enums/TransactionType.d.ts.map +0 -1
- package/build/transaction/enums/TransactionType.js.map +0 -1
- package/build/transaction/interfaces/ICancelTransactionParameters.d.ts.map +0 -1
- package/build/transaction/interfaces/ICancelTransactionParameters.js.map +0 -1
- package/build/transaction/interfaces/IConsolidatedTransactionParameters.d.ts.map +0 -1
- package/build/transaction/interfaces/IConsolidatedTransactionParameters.js.map +0 -1
- package/build/transaction/interfaces/ICustomTransactionParameters.d.ts.map +0 -1
- package/build/transaction/interfaces/ICustomTransactionParameters.js.map +0 -1
- package/build/transaction/interfaces/ITransactionParameters.d.ts.map +0 -1
- package/build/transaction/interfaces/ITransactionParameters.js.map +0 -1
- package/build/transaction/interfaces/ITransactionResponses.d.ts.map +0 -1
- package/build/transaction/interfaces/ITransactionResponses.js.map +0 -1
- package/build/transaction/interfaces/ITweakedTransactionData.d.ts.map +0 -1
- package/build/transaction/interfaces/ITweakedTransactionData.js.map +0 -1
- package/build/transaction/interfaces/IWeb3ProviderTypes.d.ts.map +0 -1
- package/build/transaction/interfaces/IWeb3ProviderTypes.js.map +0 -1
- package/build/transaction/interfaces/Tap.d.ts.map +0 -1
- package/build/transaction/interfaces/Tap.js.map +0 -1
- package/build/transaction/mineable/IP2WSHAddress.d.ts.map +0 -1
- package/build/transaction/mineable/IP2WSHAddress.js.map +0 -1
- package/build/transaction/mineable/TimelockGenerator.d.ts.map +0 -1
- package/build/transaction/mineable/TimelockGenerator.js.map +0 -1
- package/build/transaction/offline/OfflineTransactionManager.d.ts.map +0 -1
- package/build/transaction/offline/OfflineTransactionManager.js.map +0 -1
- package/build/transaction/offline/TransactionReconstructor.d.ts.map +0 -1
- package/build/transaction/offline/TransactionReconstructor.js.map +0 -1
- package/build/transaction/offline/TransactionSerializer.d.ts.map +0 -1
- package/build/transaction/offline/TransactionSerializer.js.map +0 -1
- package/build/transaction/offline/TransactionStateCapture.d.ts.map +0 -1
- package/build/transaction/offline/TransactionStateCapture.js.map +0 -1
- package/build/transaction/offline/interfaces/ISerializableState.d.ts.map +0 -1
- package/build/transaction/offline/interfaces/ISerializableState.js.map +0 -1
- package/build/transaction/offline/interfaces/ITypeSpecificData.d.ts.map +0 -1
- package/build/transaction/offline/interfaces/ITypeSpecificData.js.map +0 -1
- package/build/transaction/psbt/PSBTTypes.d.ts.map +0 -1
- package/build/transaction/psbt/PSBTTypes.js.map +0 -1
- package/build/transaction/shared/P2MR_MS.d.ts.map +0 -1
- package/build/transaction/shared/P2MR_MS.js.map +0 -1
- package/build/transaction/shared/P2TR_MS.d.ts.map +0 -1
- package/build/transaction/shared/P2TR_MS.js.map +0 -1
- package/build/transaction/shared/TweakedTransaction.d.ts.map +0 -1
- package/build/transaction/shared/TweakedTransaction.js.map +0 -1
- package/build/transaction/utils/WitnessUtils.d.ts.map +0 -1
- package/build/transaction/utils/WitnessUtils.js.map +0 -1
- package/build/tsconfig.build.tsbuildinfo +0 -1
- package/build/utils/BitcoinUtils.d.ts.map +0 -1
- package/build/utils/BitcoinUtils.js.map +0 -1
- package/build/utils/BufferHelper.d.ts.map +0 -1
- package/build/utils/BufferHelper.js.map +0 -1
- package/build/utils/StringToBuffer.d.ts.map +0 -1
- package/build/utils/StringToBuffer.js.map +0 -1
- package/build/utils/lengths.d.ts.map +0 -1
- package/build/utils/lengths.js.map +0 -1
- package/build/utils/types.d.ts.map +0 -1
- package/build/utils/types.js.map +0 -1
- package/build/utxo/OPNetLimitedProvider.d.ts.map +0 -1
- package/build/utxo/OPNetLimitedProvider.js.map +0 -1
- package/build/utxo/interfaces/BroadcastResponse.d.ts.map +0 -1
- package/build/utxo/interfaces/BroadcastResponse.js.map +0 -1
- package/build/utxo/interfaces/IUTXO.d.ts.map +0 -1
- package/build/utxo/interfaces/IUTXO.js.map +0 -1
- package/build/verification/TapscriptVerificator.d.ts.map +0 -1
- package/build/verification/TapscriptVerificator.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { fromHex, Psbt, toHex } from '@btc-vision/bitcoin';
|
|
1
|
+
import { fromHex, Psbt, toHex, toXOnly } from '@btc-vision/bitcoin';
|
|
2
2
|
import {} from '@btc-vision/ecpair';
|
|
3
3
|
import { TransactionType } from '../enums/TransactionType.js';
|
|
4
4
|
import { TransactionBuilder } from '../builders/TransactionBuilder.js';
|
|
@@ -7,6 +7,7 @@ import { TransactionSerializer } from './TransactionSerializer.js';
|
|
|
7
7
|
import { TransactionReconstructor, } from './TransactionReconstructor.js';
|
|
8
8
|
import { TransactionStateCapture } from './TransactionStateCapture.js';
|
|
9
9
|
import { isMultiSigSpecificData } from './interfaces/ITypeSpecificData.js';
|
|
10
|
+
import { CSVMultisigProvider } from '../mineable/CSVMultisigProvider.js';
|
|
10
11
|
/**
|
|
11
12
|
* Main entry point for offline transaction signing workflow.
|
|
12
13
|
*
|
|
@@ -435,5 +436,144 @@ export class OfflineTransactionManager {
|
|
|
435
436
|
};
|
|
436
437
|
return TransactionSerializer.toBase64(newState);
|
|
437
438
|
}
|
|
439
|
+
/**
|
|
440
|
+
* Inspect collaborative signing progress on all CSV multisig inputs.
|
|
441
|
+
* Returns an empty array when no partial PSBT has been produced yet.
|
|
442
|
+
*/
|
|
443
|
+
static csvMultisigGetStatus(serializedState) {
|
|
444
|
+
const state = TransactionSerializer.fromBase64(serializedState);
|
|
445
|
+
if (!state.partialPsbtBase64)
|
|
446
|
+
return [];
|
|
447
|
+
const network = TransactionReconstructor['nameToNetwork'](state.baseParams.networkName);
|
|
448
|
+
const psbt = Psbt.fromBase64(state.partialPsbtBase64, { network });
|
|
449
|
+
return this.computeCSVMultisigStatus(state, psbt, network);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Add the given signer's contribution to every CSV multisig input it can sign.
|
|
453
|
+
* No-op for inputs whose tapscript does not contain the signer's x-only pubkey.
|
|
454
|
+
*
|
|
455
|
+
* First call (no partial PSBT yet) builds the PSBT from the funding params
|
|
456
|
+
* using the provided signer as the builder's signer. Subsequent calls load
|
|
457
|
+
* the carried PSBT and add the signer's tapScriptSig where applicable.
|
|
458
|
+
*/
|
|
459
|
+
static async addCSVMultisigSignature(serializedState, signer) {
|
|
460
|
+
const state = TransactionSerializer.fromBase64(serializedState);
|
|
461
|
+
const network = TransactionReconstructor['nameToNetwork'](state.baseParams.networkName);
|
|
462
|
+
let psbt;
|
|
463
|
+
if (state.partialPsbtBase64) {
|
|
464
|
+
psbt = Psbt.fromBase64(state.partialPsbtBase64, { network });
|
|
465
|
+
this.addSignerToCSVInputs(psbt, signer, network);
|
|
466
|
+
}
|
|
467
|
+
else {
|
|
468
|
+
const builder = this.importForSigning(serializedState, { signer });
|
|
469
|
+
psbt = await builder.signPSBT();
|
|
470
|
+
// Best-effort: ensure the signer's contribution is recorded on every
|
|
471
|
+
// CSV input where they're a cosigner (the builder already attempts
|
|
472
|
+
// this, but this guards against builds that bailed early).
|
|
473
|
+
this.addSignerToCSVInputs(psbt, signer, network);
|
|
474
|
+
}
|
|
475
|
+
const perInput = this.computeCSVMultisigStatus(state, psbt, network);
|
|
476
|
+
const final = perInput.length > 0 && perInput.every((s) => s.collected >= s.required);
|
|
477
|
+
const newState = {
|
|
478
|
+
...state,
|
|
479
|
+
partialPsbtBase64: psbt.toBase64(),
|
|
480
|
+
};
|
|
481
|
+
return {
|
|
482
|
+
state: TransactionSerializer.toBase64(newState),
|
|
483
|
+
final,
|
|
484
|
+
perInput,
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Finalize every CSV multisig input on the partial PSBT and extract the
|
|
489
|
+
* raw transaction hex. Throws if any input is still below its threshold.
|
|
490
|
+
*/
|
|
491
|
+
static csvMultisigFinalize(serializedState) {
|
|
492
|
+
const state = TransactionSerializer.fromBase64(serializedState);
|
|
493
|
+
if (!state.partialPsbtBase64) {
|
|
494
|
+
throw new Error('No partial PSBT in state — call addCSVMultisigSignature first');
|
|
495
|
+
}
|
|
496
|
+
const network = TransactionReconstructor['nameToNetwork'](state.baseParams.networkName);
|
|
497
|
+
const psbt = Psbt.fromBase64(state.partialPsbtBase64, { network });
|
|
498
|
+
for (let i = 0; i < psbt.data.inputs.length; i++) {
|
|
499
|
+
const input = psbt.data.inputs[i];
|
|
500
|
+
if (!input.tapLeafScript || input.tapLeafScript.length === 0)
|
|
501
|
+
continue;
|
|
502
|
+
const leaf = input.tapLeafScript[0];
|
|
503
|
+
if (!leaf)
|
|
504
|
+
continue;
|
|
505
|
+
const addr = CSVMultisigProvider.deriveAddressFromTapscript(leaf.script, network);
|
|
506
|
+
if (!addr)
|
|
507
|
+
continue;
|
|
508
|
+
CSVMultisigProvider.finalizePsbtInput(psbt, i, network, addr);
|
|
509
|
+
}
|
|
510
|
+
return psbt.extractTransaction(true, true).toHex();
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Sign every CSV multisig input whose tapscript contains the signer's
|
|
514
|
+
* x-only pubkey and does not yet carry a signature from that pubkey.
|
|
515
|
+
*/
|
|
516
|
+
static addSignerToCSVInputs(psbt, signer, network) {
|
|
517
|
+
const signerXOnly = toXOnly(signer.publicKey);
|
|
518
|
+
const signerXOnlyHex = toHex(signerXOnly);
|
|
519
|
+
for (let i = 0; i < psbt.data.inputs.length; i++) {
|
|
520
|
+
const input = psbt.data.inputs[i];
|
|
521
|
+
if (!input.tapLeafScript || input.tapLeafScript.length === 0)
|
|
522
|
+
continue;
|
|
523
|
+
const leaf = input.tapLeafScript[0];
|
|
524
|
+
if (!leaf)
|
|
525
|
+
continue;
|
|
526
|
+
const addr = CSVMultisigProvider.deriveAddressFromTapscript(leaf.script, network);
|
|
527
|
+
if (!addr)
|
|
528
|
+
continue;
|
|
529
|
+
const isCosigner = addr.config.pubkeys.some((pk) => toHex(pk) === signerXOnlyHex);
|
|
530
|
+
if (!isCosigner)
|
|
531
|
+
continue;
|
|
532
|
+
const alreadySigned = (input.tapScriptSig ?? []).some((s) => toHex(s.pubkey) === signerXOnlyHex);
|
|
533
|
+
if (alreadySigned)
|
|
534
|
+
continue;
|
|
535
|
+
psbt.signTaprootInput(i, signer);
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Build per-input status for every CSV multisig input.
|
|
540
|
+
*
|
|
541
|
+
* Walks state.utxos so we can detect CSV multisig inputs even after the
|
|
542
|
+
* builder has already finalized them (which clears tapLeafScript). For
|
|
543
|
+
* partially-signed inputs the signers list reflects collected tapScriptSig
|
|
544
|
+
* entries; for finalized inputs collected is set to the threshold.
|
|
545
|
+
*/
|
|
546
|
+
static computeCSVMultisigStatus(state, psbt, network) {
|
|
547
|
+
const result = [];
|
|
548
|
+
for (let i = 0; i < state.utxos.length; i++) {
|
|
549
|
+
const utxo = state.utxos[i];
|
|
550
|
+
if (!utxo?.witnessScript)
|
|
551
|
+
continue;
|
|
552
|
+
const tapscript = fromHex(utxo.witnessScript);
|
|
553
|
+
const addr = CSVMultisigProvider.deriveAddressFromTapscript(tapscript, network);
|
|
554
|
+
if (!addr)
|
|
555
|
+
continue;
|
|
556
|
+
const input = psbt.data.inputs[i];
|
|
557
|
+
if (!input)
|
|
558
|
+
continue;
|
|
559
|
+
if (input.finalScriptWitness) {
|
|
560
|
+
// Already finalized — by construction it carried >= threshold sigs.
|
|
561
|
+
result.push({
|
|
562
|
+
inputIndex: i,
|
|
563
|
+
required: addr.config.threshold,
|
|
564
|
+
collected: addr.config.threshold,
|
|
565
|
+
signers: [],
|
|
566
|
+
});
|
|
567
|
+
continue;
|
|
568
|
+
}
|
|
569
|
+
const tapSigs = input.tapScriptSig ?? [];
|
|
570
|
+
result.push({
|
|
571
|
+
inputIndex: i,
|
|
572
|
+
required: addr.config.threshold,
|
|
573
|
+
collected: tapSigs.length,
|
|
574
|
+
signers: tapSigs.map((s) => toHex(s.pubkey)),
|
|
575
|
+
});
|
|
576
|
+
}
|
|
577
|
+
return result;
|
|
578
|
+
}
|
|
438
579
|
}
|
|
439
|
-
//# sourceMappingURL=OfflineTransactionManager.js.map
|
|
@@ -35,6 +35,8 @@ export class TransactionSerializer {
|
|
|
35
35
|
this.writeTypeSpecificData(writer, state.typeSpecificData);
|
|
36
36
|
// Write precomputed data
|
|
37
37
|
this.writePrecomputedData(writer, state.precomputedData);
|
|
38
|
+
// v2: partial PSBT (empty string when absent)
|
|
39
|
+
writer.writeStringWithLength(state.partialPsbtBase64 ?? '');
|
|
38
40
|
// Get buffer and calculate checksum
|
|
39
41
|
const dataBuffer = writer.getBuffer();
|
|
40
42
|
const checksum = this.calculateChecksum(dataBuffer);
|
|
@@ -82,6 +84,12 @@ export class TransactionSerializer {
|
|
|
82
84
|
const typeSpecificData = this.readTypeSpecificData(reader, header.transactionType);
|
|
83
85
|
// Read precomputed data
|
|
84
86
|
const precomputedData = this.readPrecomputedData(reader);
|
|
87
|
+
// v2+: partial PSBT (collaborative signing carryover)
|
|
88
|
+
let partialPsbtBase64;
|
|
89
|
+
if (header.formatVersion >= 2) {
|
|
90
|
+
const stored = reader.readStringWithLength();
|
|
91
|
+
partialPsbtBase64 = stored.length > 0 ? stored : undefined;
|
|
92
|
+
}
|
|
85
93
|
return {
|
|
86
94
|
header,
|
|
87
95
|
baseParams,
|
|
@@ -92,6 +100,7 @@ export class TransactionSerializer {
|
|
|
92
100
|
signerMappings,
|
|
93
101
|
typeSpecificData,
|
|
94
102
|
precomputedData,
|
|
103
|
+
...(partialPsbtBase64 !== undefined ? { partialPsbtBase64 } : {}),
|
|
95
104
|
};
|
|
96
105
|
}
|
|
97
106
|
/**
|
|
@@ -797,4 +806,3 @@ export class TransactionSerializer {
|
|
|
797
806
|
}
|
|
798
807
|
}
|
|
799
808
|
}
|
|
800
|
-
//# sourceMappingURL=TransactionSerializer.js.map
|
|
@@ -2,9 +2,10 @@ import { TransactionType } from '../../enums/TransactionType.js';
|
|
|
2
2
|
import { ChainId } from '../../../network/ChainId.js';
|
|
3
3
|
import type { TypeSpecificData } from './ITypeSpecificData.js';
|
|
4
4
|
/**
|
|
5
|
-
* Format version for serialization compatibility
|
|
5
|
+
* Format version for serialization compatibility.
|
|
6
|
+
* v2 adds the optional `partialPsbtBase64` field on the top-level state.
|
|
6
7
|
*/
|
|
7
|
-
export declare const SERIALIZATION_FORMAT_VERSION =
|
|
8
|
+
export declare const SERIALIZATION_FORMAT_VERSION = 2;
|
|
8
9
|
/**
|
|
9
10
|
* Magic byte for identifying serialized transaction state
|
|
10
11
|
*/
|
|
@@ -129,5 +130,11 @@ export interface ISerializableTransactionState {
|
|
|
129
130
|
readonly typeSpecificData: TypeSpecificData;
|
|
130
131
|
/** Pre-computed data for deterministic rebuild */
|
|
131
132
|
readonly precomputedData: PrecomputedData;
|
|
133
|
+
/**
|
|
134
|
+
* Partial PSBT (base64) carrying signatures collected so far.
|
|
135
|
+
* Used by collaborative flows like CSV multisig where multiple cosigners
|
|
136
|
+
* accumulate signatures across hops before finalization.
|
|
137
|
+
* Only present once at least one signing hop has run.
|
|
138
|
+
*/
|
|
139
|
+
readonly partialPsbtBase64?: string;
|
|
132
140
|
}
|
|
133
|
-
//# sourceMappingURL=ISerializableState.d.ts.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { TransactionType } from '../../enums/TransactionType.js';
|
|
2
2
|
import { ChainId } from '../../../network/ChainId.js';
|
|
3
3
|
/**
|
|
4
|
-
* Format version for serialization compatibility
|
|
4
|
+
* Format version for serialization compatibility.
|
|
5
|
+
* v2 adds the optional `partialPsbtBase64` field on the top-level state.
|
|
5
6
|
*/
|
|
6
|
-
export const SERIALIZATION_FORMAT_VERSION =
|
|
7
|
+
export const SERIALIZATION_FORMAT_VERSION = 2;
|
|
7
8
|
/**
|
|
8
9
|
* Magic byte for identifying serialized transaction state
|
|
9
10
|
*/
|
|
10
11
|
export const SERIALIZATION_MAGIC_BYTE = 0x42; // 'B' for Bitcoin
|
|
11
|
-
//# sourceMappingURL=ISerializableState.js.map
|
|
@@ -135,4 +135,3 @@ export declare function isCustomScriptSpecificData(data: TypeSpecificData): data
|
|
|
135
135
|
* Type guard for CancelSpecificData
|
|
136
136
|
*/
|
|
137
137
|
export declare function isCancelSpecificData(data: TypeSpecificData): data is CancelSpecificData;
|
|
138
|
-
//# sourceMappingURL=ITypeSpecificData.d.ts.map
|
|
@@ -5,6 +5,7 @@ import { type UniversalSigner } from '@btc-vision/ecpair';
|
|
|
5
5
|
import type { UTXO } from '../../utxo/interfaces/IUTXO.js';
|
|
6
6
|
import type { TapLeafScript } from '../interfaces/Tap.js';
|
|
7
7
|
import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
|
|
8
|
+
import { type CSVMultisigAddress } from '../mineable/CSVMultisigProvider.js';
|
|
8
9
|
import type { QuantumBIP32Interface } from '@btc-vision/bip32';
|
|
9
10
|
import { type RotationSigner, type SignerMap } from '../../signer/AddressRotation.js';
|
|
10
11
|
import type { ITweakedTransactionData, SupportedTransactionVersion } from '../interfaces/ITweakedTransactionData.js';
|
|
@@ -93,6 +94,12 @@ export declare abstract class TweakedTransaction extends Logger implements Dispo
|
|
|
93
94
|
*/
|
|
94
95
|
protected csvInputIndices: Set<number>;
|
|
95
96
|
protected anchorInputIndices: Set<number>;
|
|
97
|
+
/**
|
|
98
|
+
* Track P2TR CSV multisig inputs together with the address descriptor needed
|
|
99
|
+
* to finalize them (tapscript + derived control block + parsed config).
|
|
100
|
+
* @protected
|
|
101
|
+
*/
|
|
102
|
+
protected csvMultisigInputs: Map<number, CSVMultisigAddress>;
|
|
96
103
|
protected regenerated: boolean;
|
|
97
104
|
protected ignoreSignatureErrors: boolean;
|
|
98
105
|
protected noSignatures: boolean;
|
|
@@ -331,6 +338,18 @@ export declare abstract class TweakedTransaction extends Logger implements Dispo
|
|
|
331
338
|
* @returns {PsbtInputExtended} The PSBT input extended
|
|
332
339
|
*/
|
|
333
340
|
protected generatePsbtInputExtended(utxo: UTXO, i: number, _extra?: boolean): PsbtInputExtended;
|
|
341
|
+
/**
|
|
342
|
+
* Detect + configure a P2TR CSV multisig input for script-path spending.
|
|
343
|
+
*
|
|
344
|
+
* UTXOs of this shape carry the tapscript in `witnessScript`. The control
|
|
345
|
+
* block and internal pubkey are fully determined by the tapscript (single
|
|
346
|
+
* leaf tree, NUMS internal key) so the caller only needs to provide the
|
|
347
|
+
* tapscript.
|
|
348
|
+
*
|
|
349
|
+
* Returns true when the UTXO was recognized and the input was configured,
|
|
350
|
+
* false otherwise (caller falls back to the default P2TR key-path setup).
|
|
351
|
+
*/
|
|
352
|
+
protected processCSVMultisigP2TRInput(utxo: UTXO, input: PsbtInputExtended, i: number, scriptPub: Uint8Array): boolean;
|
|
334
353
|
protected processP2WSHInput(utxo: UTXO, input: PsbtInputExtended, i: number): void;
|
|
335
354
|
protected secondsToCSVTimeUnits(seconds: number): number;
|
|
336
355
|
protected createTimeBasedCSV(seconds: number): number;
|
|
@@ -357,4 +376,3 @@ export declare abstract class TweakedTransaction extends Logger implements Dispo
|
|
|
357
376
|
private signTaprootInput;
|
|
358
377
|
private signNonTaprootInput;
|
|
359
378
|
}
|
|
360
|
-
//# sourceMappingURL=TweakedTransaction.d.ts.map
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Logger } from '@btc-vision/logger';
|
|
2
|
-
import { address as bitAddress, applySignaturesToPsbt, crypto as bitCrypto, fromHex, getFinalScripts, isP2A, isP2MR, isP2MS, isP2PK, isP2PKH, isP2SHScript, isP2TR, isP2WPKH, isP2WSHScript, isUnknownSegwitVersion, opcodes, payments, PaymentType, prepareSigningTasks, Psbt, script, toXOnly, Transaction, varuint, WorkerSigningPool, } from '@btc-vision/bitcoin';
|
|
2
|
+
import { address as bitAddress, applySignaturesToPsbt, crypto as bitCrypto, equals, fromHex, getFinalScripts, isP2A, isP2MR, isP2MS, isP2PK, isP2PKH, isP2SHScript, isP2TR, isP2WPKH, isP2WSHScript, isUnknownSegwitVersion, opcodes, payments, PaymentType, prepareSigningTasks, Psbt, script, toXOnly, Transaction, varuint, WorkerSigningPool, } from '@btc-vision/bitcoin';
|
|
3
3
|
import { isUniversalSigner, TweakedSigner, } from '../../signer/TweakedSigner.js';
|
|
4
4
|
import {} from '@btc-vision/ecpair';
|
|
5
5
|
import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
|
|
6
6
|
import { canSignNonTaprootInput, isTaprootInput, pubkeyInScript, } from '../../signer/SignerUtils.js';
|
|
7
7
|
import { witnessStackToScriptWitness } from '../utils/WitnessUtils.js';
|
|
8
8
|
import { P2WDADetector } from '../../p2wda/P2WDADetector.js';
|
|
9
|
+
import { CSVMultisigProvider, } from '../mineable/CSVMultisigProvider.js';
|
|
9
10
|
import { MessageSigner } from '../../keypair/MessageSigner.js';
|
|
10
11
|
import {} from '../../signer/AddressRotation.js';
|
|
11
12
|
import { toTweakedParallelKeyPair } from '../../signer/ParallelSignerAdapter.js';
|
|
@@ -87,6 +88,12 @@ export class TweakedTransaction extends Logger {
|
|
|
87
88
|
*/
|
|
88
89
|
csvInputIndices = new Set();
|
|
89
90
|
anchorInputIndices = new Set();
|
|
91
|
+
/**
|
|
92
|
+
* Track P2TR CSV multisig inputs together with the address descriptor needed
|
|
93
|
+
* to finalize them (tapscript + derived control block + parsed config).
|
|
94
|
+
* @protected
|
|
95
|
+
*/
|
|
96
|
+
csvMultisigInputs = new Map();
|
|
90
97
|
regenerated = false;
|
|
91
98
|
ignoreSignatureErrors = false;
|
|
92
99
|
noSignatures = false;
|
|
@@ -269,6 +276,7 @@ export class TweakedTransaction extends Logger {
|
|
|
269
276
|
delete this.tweakedSigner;
|
|
270
277
|
this.csvInputIndices.clear();
|
|
271
278
|
this.anchorInputIndices.clear();
|
|
279
|
+
this.csvMultisigInputs.clear();
|
|
272
280
|
this.inputSignerMap.clear();
|
|
273
281
|
this.tweakedSignerCache.clear();
|
|
274
282
|
delete this.parallelSigningConfig;
|
|
@@ -319,7 +327,8 @@ export class TweakedTransaction extends Logger {
|
|
|
319
327
|
this.sequence = TransactionSequence.FINAL;
|
|
320
328
|
for (const input of this.inputs) {
|
|
321
329
|
// This would disable CSV! You need to check if the input has CSV
|
|
322
|
-
|
|
330
|
+
const idx = this.inputs.indexOf(input);
|
|
331
|
+
if (this.csvInputIndices.has(idx) || this.csvMultisigInputs.has(idx)) {
|
|
323
332
|
continue;
|
|
324
333
|
}
|
|
325
334
|
input.sequence = TransactionSequence.FINAL;
|
|
@@ -571,10 +580,23 @@ export class TweakedTransaction extends Logger {
|
|
|
571
580
|
await this.signInputsSequential(transaction);
|
|
572
581
|
}
|
|
573
582
|
}
|
|
583
|
+
let allFinalized = true;
|
|
574
584
|
for (let i = 0; i < transaction.data.inputs.length; i++) {
|
|
575
|
-
|
|
585
|
+
try {
|
|
586
|
+
transaction.finalizeInput(i, this.customFinalizerP2SH.bind(this));
|
|
587
|
+
}
|
|
588
|
+
catch (e) {
|
|
589
|
+
// CSV multisig inputs may legitimately be below threshold during
|
|
590
|
+
// a collaborative signing hop. Leave them unfinalized so the
|
|
591
|
+
// partial PSBT can travel to the next cosigner.
|
|
592
|
+
if (this.csvMultisigInputs.has(i)) {
|
|
593
|
+
allFinalized = false;
|
|
594
|
+
continue;
|
|
595
|
+
}
|
|
596
|
+
throw e;
|
|
597
|
+
}
|
|
576
598
|
}
|
|
577
|
-
this.finalized =
|
|
599
|
+
this.finalized = allFinalized;
|
|
578
600
|
}
|
|
579
601
|
/**
|
|
580
602
|
* Signs all inputs sequentially in batches of 20.
|
|
@@ -934,8 +956,13 @@ export class TweakedTransaction extends Logger {
|
|
|
934
956
|
if (inputSign)
|
|
935
957
|
input.sighashType = inputSign;
|
|
936
958
|
}
|
|
937
|
-
//
|
|
938
|
-
|
|
959
|
+
// CSV multisig P2TR: script-path spend with NUMS internal key.
|
|
960
|
+
// Must come before the default key-path setup below.
|
|
961
|
+
if (this.processCSVMultisigP2TRInput(utxo, input, i, scriptPub)) {
|
|
962
|
+
// input fully configured for script-path spend
|
|
963
|
+
}
|
|
964
|
+
else if (this.addressRotationEnabled) {
|
|
965
|
+
// Taproot internal key - use per-input signer in address rotation mode
|
|
939
966
|
input.tapInternalKey = this.internalPubKeyToXOnlyForInput(i);
|
|
940
967
|
}
|
|
941
968
|
else {
|
|
@@ -982,8 +1009,10 @@ export class TweakedTransaction extends Logger {
|
|
|
982
1009
|
this.error(`Unknown or unsupported script type for output: ${utxo.scriptPubKey.hex}`);
|
|
983
1010
|
}
|
|
984
1011
|
if (i === 0) {
|
|
985
|
-
// TapLeafScript if available
|
|
986
|
-
|
|
1012
|
+
// TapLeafScript if available — but never clobber a CSV multisig input's
|
|
1013
|
+
// own tapscript; its spend is a script-path that belongs to the UTXO,
|
|
1014
|
+
// not to this transaction's contract leaf.
|
|
1015
|
+
if (this.tapLeafScript && !this.csvMultisigInputs.has(i)) {
|
|
987
1016
|
input.tapLeafScript = [this.tapLeafScript];
|
|
988
1017
|
}
|
|
989
1018
|
if (this.nonWitnessUtxo) {
|
|
@@ -992,6 +1021,44 @@ export class TweakedTransaction extends Logger {
|
|
|
992
1021
|
}
|
|
993
1022
|
return input;
|
|
994
1023
|
}
|
|
1024
|
+
/**
|
|
1025
|
+
* Detect + configure a P2TR CSV multisig input for script-path spending.
|
|
1026
|
+
*
|
|
1027
|
+
* UTXOs of this shape carry the tapscript in `witnessScript`. The control
|
|
1028
|
+
* block and internal pubkey are fully determined by the tapscript (single
|
|
1029
|
+
* leaf tree, NUMS internal key) so the caller only needs to provide the
|
|
1030
|
+
* tapscript.
|
|
1031
|
+
*
|
|
1032
|
+
* Returns true when the UTXO was recognized and the input was configured,
|
|
1033
|
+
* false otherwise (caller falls back to the default P2TR key-path setup).
|
|
1034
|
+
*/
|
|
1035
|
+
processCSVMultisigP2TRInput(utxo, input, i, scriptPub) {
|
|
1036
|
+
if (!utxo.witnessScript)
|
|
1037
|
+
return false;
|
|
1038
|
+
const tapscript = utxo.witnessScript instanceof Uint8Array
|
|
1039
|
+
? utxo.witnessScript
|
|
1040
|
+
: fromHex(utxo.witnessScript);
|
|
1041
|
+
const addr = CSVMultisigProvider.deriveAddressFromTapscript(tapscript, this.network);
|
|
1042
|
+
if (!addr)
|
|
1043
|
+
return false;
|
|
1044
|
+
// Guard against spoofed witnessScripts on P2TR UTXOs from an unrelated
|
|
1045
|
+
// address: the tapscript must hash back to this exact scriptPubKey.
|
|
1046
|
+
if (!equals(addr.scriptPubKey, scriptPub)) {
|
|
1047
|
+
return false;
|
|
1048
|
+
}
|
|
1049
|
+
input.tapLeafScript = [
|
|
1050
|
+
{
|
|
1051
|
+
leafVersion: addr.leafVersion,
|
|
1052
|
+
script: addr.tapscript,
|
|
1053
|
+
controlBlock: addr.controlBlock,
|
|
1054
|
+
},
|
|
1055
|
+
];
|
|
1056
|
+
input.tapInternalKey = addr.internalPubkey;
|
|
1057
|
+
// Force a CSV-compatible nSequence so OP_CHECKSEQUENCEVERIFY passes.
|
|
1058
|
+
input.sequence = this.setCSVSequence(addr.config.csvBlocks, this.sequence);
|
|
1059
|
+
this.csvMultisigInputs.set(i, addr);
|
|
1060
|
+
return true;
|
|
1061
|
+
}
|
|
995
1062
|
processP2WSHInput(utxo, input, i) {
|
|
996
1063
|
// P2WSH requires a witnessScript
|
|
997
1064
|
if (!utxo.witnessScript) {
|
|
@@ -1047,6 +1114,15 @@ export class TweakedTransaction extends Logger {
|
|
|
1047
1114
|
finalScriptWitness: Uint8Array.from([0]),
|
|
1048
1115
|
};
|
|
1049
1116
|
}
|
|
1117
|
+
const csvMultisigAddr = this.csvMultisigInputs.get(inputIndex);
|
|
1118
|
+
if (csvMultisigAddr) {
|
|
1119
|
+
const tapSigs = input.tapScriptSig ?? [];
|
|
1120
|
+
const witnessStack = CSVMultisigProvider.buildFinalWitnessFromTapScriptSigs(tapSigs, csvMultisigAddr);
|
|
1121
|
+
return {
|
|
1122
|
+
finalScriptSig: undefined,
|
|
1123
|
+
finalScriptWitness: witnessStackToScriptWitness(witnessStack),
|
|
1124
|
+
};
|
|
1125
|
+
}
|
|
1050
1126
|
if (isP2WSH && isSegwit && input.witnessScript) {
|
|
1051
1127
|
if (!input.partialSig || input.partialSig.length === 0) {
|
|
1052
1128
|
throw new Error(`No signatures for P2WSH input #${inputIndex}`);
|
|
@@ -1092,11 +1168,20 @@ export class TweakedTransaction extends Logger {
|
|
|
1092
1168
|
const signer = this.signer;
|
|
1093
1169
|
// then, we sign all the remaining inputs with the wallet signer.
|
|
1094
1170
|
await signer.multiSignPsbt([transaction]);
|
|
1095
|
-
|
|
1171
|
+
let allFinalized = true;
|
|
1096
1172
|
for (let i = 0; i < transaction.data.inputs.length; i++) {
|
|
1097
|
-
|
|
1173
|
+
try {
|
|
1174
|
+
transaction.finalizeInput(i, this.customFinalizerP2SH.bind(this));
|
|
1175
|
+
}
|
|
1176
|
+
catch (e) {
|
|
1177
|
+
if (this.csvMultisigInputs.has(i)) {
|
|
1178
|
+
allFinalized = false;
|
|
1179
|
+
continue;
|
|
1180
|
+
}
|
|
1181
|
+
throw e;
|
|
1182
|
+
}
|
|
1098
1183
|
}
|
|
1099
|
-
this.finalized =
|
|
1184
|
+
this.finalized = allFinalized;
|
|
1100
1185
|
}
|
|
1101
1186
|
isCSVScript(decompiled) {
|
|
1102
1187
|
return decompiled.some((op) => op === opcodes.OP_CHECKSEQUENCEVERIFY);
|
|
@@ -1233,4 +1318,3 @@ export class TweakedTransaction extends Logger {
|
|
|
1233
1318
|
}
|
|
1234
1319
|
}
|
|
1235
1320
|
}
|
|
1236
|
-
//# sourceMappingURL=TweakedTransaction.js.map
|
package/build/utils/lengths.d.ts
CHANGED
package/build/utils/lengths.js
CHANGED
package/build/utils/types.d.ts
CHANGED
package/build/utils/types.js
CHANGED