@okxweb3/coin-bitcoin
Version:
@okxweb3/coin-bitcoin is a Bitcoin SDK for building Web3 wallets and applications. It supports BTC, BSV, DOGE, LTC, and TBTC, enabling private key management, transaction signing, address generation, and inscriptions like BRC-20, Runes, CAT, and Atomicals
37 lines • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.validatePrevTx = void 0;
const common_1 = require("../common");
const utils_1 = require("./utils");
function validatePrevTx(metadata, prevTxHex, prevPrevTxHex, network) {
let prevTokenInputIndex = 0;
const prevTx = new common_1.btc.Transaction(prevTxHex);
const input = prevTx.inputs.find((input, inputIndex) => {
const witnesses = input.getWitnesses();
if (Array.isArray(witnesses) && witnesses.length > 2) {
const lockingScriptBuffer = witnesses[witnesses.length - 2];
const { p2tr } = (0, utils_1.script2P2TR)(lockingScriptBuffer);
const address = (0, utils_1.p2tr2Address)(p2tr, network);
if (address === metadata.tokenAddr ||
address === metadata.minterAddr) {
prevTokenInputIndex = inputIndex;
return true;
}
}
});
if (!input) {
return null;
}
const prevPrevTxId = prevTx.inputs[prevTokenInputIndex].prevTxId.toString('hex');
const prevPrevTx = new common_1.btc.Transaction(prevPrevTxHex);
if (prevPrevTx.id != prevPrevTxId) {
return null;
}
return {
prevTx,
prevPrevTx,
prevTokenInputIndex,
};
}
exports.validatePrevTx = validatePrevTx;
//# sourceMappingURL=prevTx.js.map