UNPKG

@arklabs/wallet-sdk

Version:

Bitcoin wallet SDK with Taproot and Ark integration

36 lines (35 loc) 1.13 kB
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; }