UNPKG

@okxweb3/coin-bitcoin

Version:

@ok/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
"use strict"; 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