Skip to content

Double-reservation in the withdraw flow #8925

@enaples

Description

@enaples

Issue description

After used withdraw <addr> all slow, I've got a transaction broadcasting error due to feerate limit 251 < 253. I was expecting the inputs were rolled back to unreserved, however the input remained reserved.

Root Cause

  1. withdraw --> fundpsbt --> reserve UTXOs for 72 blocks
  2. signpsbt
  3. sendpsbt --> re-reserves for 72 more blocks
  4. sendrawtransaction (failed due to feerate < mempoolminfee)
  5. sendpsbt_done (failure path, walletrpc.c:1004-1018 unreserves its own 72 blocks

However, the fundpsbt reservation is never cleaned up. Fund are stuck as reserved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    BOUNTY! 🫰A bounty is available for this PRQABlockstream QA team have reproduced, or a test has been created! Look for the linked PR/IssueStatus::AssignedThe issue has been given to a team member for resolution.

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions