UNPKG

@bigmi/core

Version:

TypeScript library for Bitcoin apps.

51 lines 1.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.cancelTransaction = cancelTransaction; const bitcoinjs_lib_1 = require("bitcoinjs-lib"); function cancelTransaction(psbt, accountAddress) { const newPsbt = new bitcoinjs_lib_1.Psbt(); const inputs = psbt.data.inputs; const txInputs = psbt.txInputs; for (let i = 0; i < inputs.length; i++) { const input = inputs[i]; const txInput = txInputs[i]; const inputData = { hash: txInput.hash, index: txInput.index, }; if (input.nonWitnessUtxo) { inputData.nonWitnessUtxo = input.nonWitnessUtxo; } else if (input.witnessUtxo) { inputData.witnessUtxo = input.witnessUtxo; } else { throw new Error('Input UTXO information is missing'); } if (input.redeemScript) { inputData.redeemScript = input.redeemScript; } if (input.witnessScript) { inputData.witnessScript = input.witnessScript; } newPsbt.addInput(inputData); } const outputs = psbt.txOutputs; let totalOutputValue = BigInt(0); for (const output of outputs) { totalOutputValue += output.value; } if (totalOutputValue <= BigInt(0)) { throw new Error('Total output value must be greater than zero'); } const outputScript = bitcoinjs_lib_1.address.toOutputScript(accountAddress); newPsbt.addOutput({ script: outputScript, value: totalOutputValue, }); newPsbt.txInputs.forEach((_, index) => { newPsbt.setInputSequence(index, 0xfffffffd); }); return newPsbt; } //# sourceMappingURL=cancelTransaction.js.map