UNPKG

@btc-vision/transaction

Version:

OPNet transaction library allows you to create and sign transactions for the OPNet network.

41 lines (40 loc) 1.24 kB
import { isP2TR, pubkeyPositionInScript } from '@btc-vision/bitcoin'; export function isTaprootInput(input) { return (input && !!(input.tapInternalKey || input.tapMerkleRoot || (input.tapLeafScript && input.tapLeafScript.length) || (input.tapBip32Derivation && input.tapBip32Derivation.length) || (input.witnessUtxo && isP2TR(input.witnessUtxo.script)))); } export function getInputRelevantScript(input) { if (input.redeemScript) { return input.redeemScript; } if (input.witnessScript) { return input.witnessScript; } if (input.witnessUtxo) { return input.witnessUtxo.script; } if (input.nonWitnessUtxo) { } return null; } export function canSignNonTaprootInput(input, publicKey) { if ((input.nonWitnessUtxo && !input.redeemScript && !input.witnessScript && !input.witnessUtxo) || input.redeemScript) { return true; } const script = getInputRelevantScript(input); if (script) { return pubkeyInScript(publicKey, script); } return false; } export function pubkeyInScript(pubkey, script) { return pubkeyPositionInScript(pubkey, script) !== -1; }