Uh oh!
There was an error while loading. Please reload this page.
Channel Establishment for V3 Channels - #3792
Conversation
👋 I see @wpaulino was un-assigned. |
TheBlueMatt
left a comment
There was a problem hiding this comment.
Cool, basically all LGTM.
| #[test] | ||
| fn test_anchors_zero_fee_htlc_tx_fallback() { | ||
| fn test_anchors_zero_fee_htlc_tx_downgrade() { |
There was a problem hiding this comment.
Congrats, you touched it, now you get to move it out of channelmanager into some other test-specific file that isn't 15000 lines of code 😂
There was a problem hiding this comment.
Done this in a follow up in #3797 so that move + format can be reviewed separately.
| /// back to a `anchors_zero_fee_htlc` (if [`Self::negotiate_anchors_zero_fee_htlc_tx`] | ||
| /// is set) or `static_remote_key` channel. | ||
| /// | ||
| /// *Implies [`Self::negotiate_anchors_zero_fee_htlc_tx`].* |
There was a problem hiding this comment.
These are in conflict - one says we'll fall back if its set, the other says that its implied (ie always set) if we set this flag.
ldk-reviews-bot
commented
May 22, 2025
👋 The first review has been submitted! Do you think this PR is ready for a second reviewer? If so, click here to assign a second reviewer. |
ldk-reviews-bot
commented
May 22, 2025
✅ Added second reviewer: @valentinewallace |
wpaulino
left a comment
There was a problem hiding this comment.
LGTM after Matt's comments are addressed
3a36506 to
b9ec89cComparecarlaKC
commented
May 23, 2025
Removed conflicting docs statement + opened followup for test separation (felt wrong to do move+format in the same PR, happy to include if we want it in here). |
ldk-reviews-bot
commented
May 26, 2025
🔔 1st Reminder Hey @TheBlueMatt@wpaulino! This PR has been waiting for your review. |
1 similar comment
ldk-reviews-bot
commented
May 26, 2025
🔔 1st Reminder Hey @TheBlueMatt@wpaulino! This PR has been waiting for your review. |
tankyleo
left a comment
There was a problem hiding this comment.
Sorry for the delay, here's a first pass :)
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
ldk-reviews-bot
commented
May 28, 2025
🔔 2nd Reminder Hey @TheBlueMatt@wpaulino! This PR has been waiting for your review. |
1 similar comment
ldk-reviews-bot
commented
May 28, 2025
🔔 2nd Reminder Hey @TheBlueMatt@wpaulino! This PR has been waiting for your review. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
b9ec89c to
892d87aComparecarlaKC
commented
May 29, 2025
Major change in push is using get_initial_channel_type in channel type downgrades to DRY up the code a bit. |
tankyleo
left a comment
There was a problem hiding this comment.
Thank you for the downgrade tests ! Just three nits at this point :)
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
892d87a to
e56e32aComparecarlaKC
commented
May 30, 2025
ldk-reviews-bot
commented
May 31, 2025
🔔 3rd Reminder Hey @TheBlueMatt@wpaulino! This PR has been waiting for your review. |
1 similar comment
ldk-reviews-bot
commented
May 31, 2025
🔔 3rd Reminder Hey @TheBlueMatt@wpaulino! This PR has been waiting for your review. |
ldk-reviews-bot
commented
Jun 2, 2025
🔔 4th Reminder Hey @TheBlueMatt@wpaulino! This PR has been waiting for your review. |
carlaKC
commented
Jun 4, 2025
Two followups for this to do some test cleaning while we're here:
|
Uh oh!
There was an error while loading. Please reload this page.
Useful for the commits that follow where we add more downgrade tests.
e430212 to
99c645eComparecarlaKC
commented
Jun 4, 2025
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@## main #3792 +/- ##
==========================================
+ Coverage 89.91% 89.93% +0.02%
==========================================
Files 160 160 Lines 129307 129579 +272 Branches 129307 129579 +272 ==========================================
+ Hits 116262 116539 +277 + Misses 10355 10352 -3 + Partials 2690 2688 -2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
TheBlueMatt
left a comment
There was a problem hiding this comment.
Grrr, one issue sorry.
| eligible_features.clear_anchor_zero_fee_commitments(); | ||
| eligible_features.clear_anchors_zero_fee_htlc_tx(); | ||
| assert!(!eligible_features.supports_anchor_zero_fee_commitments()); | ||
| assert!(!eligible_features.supports_anchors_nonzero_fee_htlc_tx()); |
There was a problem hiding this comment.
Isn't this trivially reachable if a peer sets the nonzero-fee-htlc-tx feature bit? Generally, though, all the assertions here seem like they could be debug_assertions or elided entirely (asserting that we don't support something we just cleared probably belongs in a features test, and I believe already exists).
There was a problem hiding this comment.
Will remove the feature bit asserts 👍
Isn't this trivially reachable if a peer sets the nonzero-fee-htlc-tx feature bit?
ofc, it should be on channel_type 🤦♀️
Rather than duplicating our channel type preference ordering in downgrade logic, make a modified version of the remote peer's supported features and remove our current channel type from it to get the next preferred channel type.
To allow testing along the way in this PR, turn on negotiation of zero fee channels. Co-authored-by: Matt Corallo <git@bluematt.me>
Sender: MUST set `feerate_per_kw` to zero Receiver: MUST fail the channel if `feerate_per_kw` != 0 Co-authored-by: Matt Corallo <git@bluematt.me>
Like anchor channels, these channels require that the user reserves a UTXO to bump the channel. If we automatically accept this channel type and the user does not have such reserve available, they are at risk of losing funds because they cannot fee bump the channel.
99c645e to
23de01cCompare| // We should never have negotiated `anchors_nonzero_fee_htlc_tx` because it can result in a | ||
| // loss of funds. | ||
| let channel_type = &funding.channel_transaction_parameters.channel_type_features; | ||
| assert!(!channel_type.supports_anchors_nonzero_fee_htlc_tx()); |
There was a problem hiding this comment.
Moved this assert up because we should never negotiate a non-zero-htlc-anchor channel, and it's a risk of lost funds if we do.
Couldn't see a historical reason why we only checked it if the channel type was supports_anchors_zero_fee_htlc_tx - went back a few commits and couldn't find reasoning. cc @TheBlueMatt
carlaKC
commented
Jun 6, 2025
Removed asserts + moved |
Uh oh!
There was an error while loading. Please reload this page.
This PR updates the channel establishment flow to allow and validate V3 channels (behind
testflag).