@arklabs/wallet-sdk
Version:
Bitcoin wallet SDK with Taproot and Ark integration
36 lines (35 loc) • 1.13 kB
JavaScript
import { SigHash, Transaction } from "@scure/btc-signer";
export function buildForfeitTx({ connectorInput, vtxoInput, vtxoAmount, connectorAmount, feeAmount, vtxoPkScript, connectorPkScript, serverPkScript, txLocktime, }) {
const tx = new 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: SigHash.DEFAULT,
});
const amount = BigInt(vtxoAmount) + BigInt(connectorAmount) - BigInt(feeAmount);
// Add main output to server
tx.addOutput({
script: serverPkScript,
amount,
});
return tx;
}