Skip to content

Expose current dust exposure in ChannelDetails#4470

Open
Bortlesboat wants to merge 1 commit intolightningdevkit:mainfrom
Bortlesboat:feat/expose-dust-exposure
Open

Expose current dust exposure in ChannelDetails#4470
Bortlesboat wants to merge 1 commit intolightningdevkit:mainfrom
Bortlesboat:feat/expose-dust-exposure

Conversation

@Bortlesboat
Copy link
Copy Markdown

Summary

Adds a current_dust_exposure_msat field to ChannelDetails that surfaces the current total dust exposure on a channel.

  • The value is the maximum of the dust exposure across the holder and counterparty commitment transactions
  • Includes both dust HTLC values and the commitment transaction fee component (as noted by @TheBlueMatt in Expose current dust exposure #2264, dust exposure now includes commitment tx fees, not just dust HTLCs)
  • Users can compare this against ChannelConfig::max_dust_htlc_exposure to monitor how close a channel is to its dust limit
  • Field is Option<u64>, None for objects serialized prior to 0.2.1
  • TLV tag 49 for backwards-compatible serialization

Implementation

  1. Added dust_exposure_msat to AvailableBalances — computed as max(local_dust_exposure_msat, remote_dust_exposure_msat) in get_available_balances (tx_builder.rs)
  2. When folding across multiple funding scopes (splices), takes the max dust exposure
  3. Added current_dust_exposure_msat: Option<u64> to ChannelDetails struct, populated from the balance computation in from_channel

Fixes #2264

@ldk-reviews-bot
Copy link
Copy Markdown

ldk-reviews-bot commented Mar 8, 2026

👋 I see @tankyleo was un-assigned.
If you'd like another reviewer assignment, please click here.

@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from 06585ba to c571ad4 Compare March 9, 2026 01:31
@tankyleo tankyleo requested review from tankyleo and removed request for valentinewallace March 9, 2026 11:18
@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from c571ad4 to 4f9b1e5 Compare March 9, 2026 18:25
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 9, 2026

Codecov Report

❌ Patch coverage is 75.00000% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.19%. Comparing base (4a3aaef) to head (515b244).
⚠️ Report is 97 commits behind head on main.

Files with missing lines Patch % Lines
lightning/src/ln/channel_state.rs 66.66% 1 Missing ⚠️
lightning/src/routing/router.rs 50.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4470      +/-   ##
==========================================
+ Coverage   86.01%   86.19%   +0.17%     
==========================================
  Files         159      160       +1     
  Lines      105430   107554    +2124     
  Branches   105430   107554    +2124     
==========================================
+ Hits        90690    92707    +2017     
+ Misses      12229    12221       -8     
- Partials     2511     2626     +115     
Flag Coverage Δ
tests 86.19% <75.00%> (+0.17%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ldk-reviews-bot
Copy link
Copy Markdown

🔔 1st Reminder

Hey @tankyleo! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@Bortlesboat
Copy link
Copy Markdown
Author

Quick follow-up from my side: I’m treating review-required PRs as top priority this week. If you want any specific changes, rebase, or split, I can turn them around quickly.

@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from 4f9b1e5 to 03c307d Compare March 13, 2026 04:41
@ldk-reviews-bot
Copy link
Copy Markdown

🔔 2nd Reminder

Hey @tankyleo! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from 03c307d to b856d80 Compare March 15, 2026 18:19
@ldk-claude-review-bot
Copy link
Copy Markdown
Collaborator

ldk-claude-review-bot commented Mar 15, 2026

I've reviewed the entire PR diff thoroughly, checking all changed files against the codebase context I have from prior reviews.

Prior review status:

  • The #[allow(deprecated)] issue (tx_builder.rs) — fully resolved, the annotation was removed.
  • The version string issue (channel_state.rs:493) — partially resolved. It was changed from "prior to 0.2.1" to "prior to 0.3." but the suggestion was "prior to 0.3.0" to match the three-part version convention used elsewhere (e.g., "prior to 0.2.0" on line 480). This is a minor inconsistency, not a bug.

New issues: None found. The implementation is correct:

  • max(local_dust_exposure_msat, remote_dust_exposure_msat) correctly captures worst-case dust exposure.
  • The fold across funding scopes uses .max() — correct for worst-case across splices.
  • TLV tag 49 (odd, sequential after 47) is correct for backwards-compatible optional serialization.
  • All 4 AvailableBalances construction sites and all ChannelDetails construction sites include the new field.
  • Serialization round-trip test at line 777 covers the new field.
  • Option<u64> in ChannelDetails (with None for old serialized data) vs plain u64 in AvailableBalances is appropriate.
  • Error/fallback paths default dust_exposure_msat to 0, consistent with the existing pattern for other balance fields in those paths.

No issues found.

@ldk-reviews-bot
Copy link
Copy Markdown

🔔 3rd Reminder

Hey @tankyleo! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

@Bortlesboat
Copy link
Copy Markdown
Author

Hi @tankyleo — no worries if you're busy! Could another maintainer pick this up? Happy to address any feedback quickly.

@ldk-reviews-bot
Copy link
Copy Markdown

🔔 4th Reminder

Hey @tankyleo! This PR has been waiting for your review.
Please take a look when you have a chance. If you're unable to review, please let us know so we can find another reviewer.

Comment thread lightning/src/ln/channel.rs
@TheBlueMatt TheBlueMatt removed the request for review from tankyleo March 19, 2026 20:41
Copy link
Copy Markdown
Contributor

@tankyleo tankyleo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the delay

Comment thread lightning/src/sign/tx_builder.rs
Comment thread lightning/src/ln/channel_state.rs Outdated
@Bortlesboat
Copy link
Copy Markdown
Author

Hi — tankyleo appears to be unavailable (4 reminders sent). Could another reviewer pick this up? It's a small addition exposing dust exposure values that are already computed internally. Happy to address any feedback.

Copy link
Copy Markdown
Collaborator

@TheBlueMatt TheBlueMatt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two small things, one that actually needs fixing, otherwise we'll land this. Thanks!

Comment thread lightning/src/ln/channel_state.rs Outdated
Comment thread lightning/src/ln/channel.rs Outdated
Comment thread lightning/src/sign/tx_builder.rs
Copy link
Copy Markdown
Collaborator

@TheBlueMatt TheBlueMatt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please feel free to squash the fixup commits down so that the git history only contains the one main commit

@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from 40ce774 to 515b244 Compare March 25, 2026 17:12
@Bortlesboat
Copy link
Copy Markdown
Author

Done — squashed into a single commit.

@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from 515b244 to d660c33 Compare April 12, 2026 16:50
Comment thread lightning/src/sign/tx_builder.rs Outdated
@TheBlueMatt
Copy link
Copy Markdown
Collaborator

Please address the claude comment - its correct, we should drop that allow i think it snuck in from a back rebase. Also please feel free to squash the fixup commit again.

@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from d660c33 to cb34df1 Compare April 14, 2026 16:58
Co-authored-by: Codex <codex@openai.com>
@Bortlesboat Bortlesboat force-pushed the feat/expose-dust-exposure branch from cb34df1 to 1ee9480 Compare April 14, 2026 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose current dust exposure

5 participants