Once the server detects a double-spend attempt, it reacts in one of two ways, depending on the transaction state:
- VTXO settled: broadcast forfeit transaction
- VTXO preconfirmed: broadcast checkpoint transaction
SubmitSignedForfeitTxs RPC method as part of the batch finalization process.
Forfeit Transaction Structure
Forfeit transactions have a specific two-input, two-output structure (BuildForfeitTx) that requires both a VTXO input and a connector input:
- Two inputs: One VTXO input and one connector input
- Two outputs: Forfeit output (to operator) and anchor output
- Timelock support: Can include CLTV locks for time-based constraints

Fraud Detection and Response
The system monitors for fraud attempts (reactToFraud). When a user spends a VTXO offchain and then attempts to redeem the same VTXO onchain (fraud), the operator can broadcast (broadcastForfeitTx) the corresponding forfeit transaction to reclaim the funds:
- Retrieve the commitment transaction containing the VTXO
- Find the correct forfeit transaction and connector outpoint
- Broadcast the connector branch (
broadcastConnectorBranch) leading to the forfeit transaction - Sign and broadcast the forfeit transaction
Security Considerations
- Timing: Forfeit transactions must be submitted within the batch processing window
- Validation: All signatures and transaction structures are verified before acceptance
- Connector Management: Proper connector UTXO locking (
LockConnectorUtxos) prevents double-spending - Fee Bumping: Forfeit transactions support fee bumping for reliable confirmation (
bumpAnchorTx)
