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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions