@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
JavaScript
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;
}