@arklabs/wallet-sdk
Version:
Bitcoin wallet SDK with Taproot and Ark integration
39 lines (38 loc) • 1.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildForfeitTx = buildForfeitTx;
const btc_signer_1 = require("@scure/btc-signer");
function buildForfeitTx({ connectorInput, vtxoInput, vtxoAmount, connectorAmount, feeAmount, vtxoPkScript, connectorPkScript, serverPkScript, txLocktime, }) {
const tx = new btc_signer_1.Transaction({
version: 2,
lockTime: txLocktime,
});
// Add connector input
tx.addInput({
txid: connectorInput.txid,
index: connectorInput.vout,
witnessUtxo: {
script: connectorPkScript,
amount: connectorAmount,
},
sequence: 0xffffffff,
});
// Add VTXO input
tx.addInput({
txid: vtxoInput.txid,
index: vtxoInput.vout,
witnessUtxo: {
script: vtxoPkScript,
amount: vtxoAmount,
},
sequence: txLocktime ? 0xfffffffe : 0xffffffff, // MAX_SEQUENCE - 1 if locktime is set
sighashType: btc_signer_1.SigHash.DEFAULT,
});
const amount = BigInt(vtxoAmount) + BigInt(connectorAmount) - BigInt(feeAmount);
// Add main output to server
tx.addOutput({
script: serverPkScript,
amount,
});
return tx;
}