Skip to content

Pending BTC Refund: Chain Swap kH6qIdUAyetA - 3000 sats locked #110

@bernd2022

Description

@bernd2022

Summary

A user has 3,000 sats locked in a BTC HTLC that can be refunded. The timeout has passed but the refund has not been claimed yet.

Swap Details

Field Value
Swap ID kH6qIdUAyetA
Pair BTC/cBTC
Status transaction.refunded (cBTC side only)
BTC Amount 3,000 sats
Lockup Address bc1p4malv5m4jzcle5afez3j6uaqaxe3swpe98l9tjpl6jxmcsha52rqem9wd5
Lockup TX 748f1eefa69e8306bdd917d953b75647a4118d286d07ec75e5725a3faf284828
Timeout Block 933,983
Current Block ~934,069+

Current State

  • ✅ cBTC side was refunded (TX: 0xa1f66707f2ca05eddeb23ee029b591ec81a887a92c01756c40fbee20d94f2167)
  • ❌ BTC side: 3,000 sats still locked - UTXO is unspent
  • ✅ Timeout reached: Refund is possible

How the User Can Claim Their Refund

Option 1: Via Boltz Web Interface (Recommended)

  1. Go to boltz.exchange or the interface where the swap was created
  2. Navigate to the Refund section
  3. Enter the Swap ID: kH6qIdUAyetA
  4. The interface will detect the refundable swap and guide through the process
  5. Provide a BTC address to receive the refund
  6. Sign the refund transaction

Option 2: Via Boltz API

  1. Get swap status and refund details:

    curl -X GET "https://api.boltz.exchange/v2/swap/chain/kH6qIdUAyetA"
  2. Request refund transaction:

    curl -X POST "https://api.boltz.exchange/v2/swap/chain/kH6qIdUAyetA/refund" \
      -H "Content-Type: application/json" \
      -d '{
        "index": 0,
        "pubNonce": "<user_public_nonce>",
        "transaction": "<unsigned_refund_tx>",
        "address": "<btc_refund_address>"
      }'

Option 3: Manual Refund (Advanced)

If the user has the original swap data (keys, redeem script), they can construct and broadcast a refund transaction manually:

  1. Prerequisites:

    • Private key used to create the swap
    • Refund public key
    • Swap tree / redeem script
    • Timeout block height: 933983
  2. Construct refund transaction:

    • Input: UTXO 748f1eefa69e8306bdd917d953b75647a4118d286d07ec75e5725a3faf284828:0
    • Use the timeout path of the HTLC script
    • Since current block > 933,983, the timelock condition is satisfied
  3. Sign and broadcast via any Bitcoin node or service like mempool.space

Important Notes

  • No deadline: Once the timeout is reached, the user can claim the refund at any time
  • 💰 Amount: 3,000 sats (minus transaction fee for the refund TX, ~200-500 sats depending on fee rate)
  • 🔐 Requirement: User needs the original key/seed used when creating the swap

Action Items

  • Attempt to contact the user (check if webhook or referral data exists)
  • Document this case for potential UX improvements (auto-refund notification)
  • Consider implementing automatic refund reminders for stuck swaps

Detected on 2026-01-28 via debug query analysis

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions