-
Notifications
You must be signed in to change notification settings - Fork 371
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Async Persistence TODOs #3052
Comments
This is, somewhat surprisingly, not currently broken, but its quite subtle and I kinda want to block related channels here anyway. Right now, when we do a claim, we hold the This relies on another important property that is critical to our payment receipt flow working, but is not documented and we really shouldn't rely on - the If we assume we make that change, the MPP-with-async-persist flow would become unsafe - we could have one channel complete its full claim persist and commitment_signed dance then restart and wouldn't be able to reclaim the payment because the preimage is missing. Thus, I'd like to go ahead and land an |
We're not gonna get all the testing we wanted, but we'll get #3414 for 0.1 and that handles the only known-broken case. There's some less common cases described above which may or maybe not be broken in 0.1. |
While we "shipped" async persistence quite a few releases ago, we've always maintained that it is an alpha feature and has some known (and probably unknown) bugs. This is a tracking issue for both, specifically things I think we should audit as well as things I'm confident are broken, or at least at some point or another took a note of because I was confident it was broken at that time.
Things that are probably broken
ChannelMonitorUpdate
persist for claims against closed channels #3414)2023-11-mon-claim-bug branch
branch - Block monitor updates to ensure preimages are in each MPP part #3120)ChannelMonitor
learns a preimage for an outbound HTLC and needs to provide the preimage back to the inbound edge of the forwarded HTLC, theChannelMonitor
cannot be pruned until the inbound edgeChannelMonitor
is persisted. See Add infra to block ChannelMonitorUpdates on forwarded claims #2167 (comment) Tracked as ChannelMonitor balances don't reflect preimages for other channels #2153, fixed in Ensure monitors are not archived if they have a preimage we need #3450Things we should audit carefully
test_monitor_update_fail_claim
#3126.Similarly, if we do persist the monitor but not the manager, we'll force-close and fail the HTLC back, which is the same end-result(this was never true, we'll obviously use the preimage in a monitor to claim on-chain 🤦).we shouldn't provide the PaymentClaimable event until the last RAA persistence completes. also delays PaymentClaimable which is good for privacy (makes it look more like a forward)Finally, to actually "release" it, we should:
The text was updated successfully, but these errors were encountered: