-
Notifications
You must be signed in to change notification settings - Fork 991
Double-reservation in the withdraw flow #8925
Copy link
Copy link
Open
Labels
BOUNTY! 🫰A bounty is available for this PRA bounty is available for this PRQABlockstream QA team have reproduced, or a test has been created! Look for the linked PR/IssueBlockstream 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.The issue has been given to a team member for resolution.
Milestone
Metadata
Metadata
Assignees
Labels
BOUNTY! 🫰A bounty is available for this PRA bounty is available for this PRQABlockstream QA team have reproduced, or a test has been created! Look for the linked PR/IssueBlockstream 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.The issue has been given to a team member for resolution.
Issue description
After used
withdraw <addr> all slow, I've got a transaction broadcasting error due to feerate limit251 < 253. I was expecting the inputs were rolled back to unreserved, however the input remained reserved.Root Cause
withdraw-->fundpsbt--> reserve UTXOs for 72 blockssignpsbtsendpsbt--> re-reserves for 72 more blockssendrawtransaction(failed due to feerate < mempoolminfee)sendpsbt_done(failure path, walletrpc.c:1004-1018 unreserves its own 72 blocksHowever, the
fundpsbtreservation is never cleaned up. Fund are stuck as reserved.