Skip to content

Expose current dust exposure in ChannelDetails#4470

Open
Bortlesboat wants to merge 2 commits intolightningdevkit:mainfrom
Bortlesboat:feat/expose-dust-exposure
Open

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

Conversation

@Bortlesboat
Copy link

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

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

codecov bot commented Mar 9, 2026

Codecov Report

❌ Patch coverage is 77.77778% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 86.19%. Comparing base (4a3aaef) to head (6ea327e).
⚠️ Report is 78 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   107450    +2020     
  Branches   105430   107450    +2020     
==========================================
+ Hits        90690    92619    +1929     
+ Misses      12229    12213      -16     
- Partials     2511     2618     +107     
Flag Coverage Δ
tests 86.19% <77.77%> (+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

🔔 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
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

🔔 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.

Add current_dust_exposure_msat field to ChannelDetails that surfaces
the total dust exposure including both dust HTLC values and the
commitment transaction fee component. This is the maximum of the
holder and counterparty commitment transaction dust exposures.

Users can compare this value against max_dust_htlc_exposure in
ChannelConfig to understand how close a channel is to its dust
exposure limit without needing internal channel access.

Fixes lightningdevkit#2264
@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
Collaborator

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

@ldk-reviews-bot
Copy link

🔔 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
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

🔔 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.

///
/// This is the maximum of the dust exposure on the holder and counterparty commitment
/// transactions, and includes both the value of all pending HTLCs that are below the dust
/// threshold as well as any excess commitment transaction fees that contribute to dust
Copy link
Collaborator

Choose a reason for hiding this comment

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

Needs a link to the config knobs that limit it.

@TheBlueMatt TheBlueMatt removed the request for review from tankyleo March 19, 2026 20:41
Copy link
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

outbound_capacity_msat,
next_outbound_htlc_limit_msat: available_capacity_msat,
next_outbound_htlc_minimum_msat,
dust_exposure_msat,
Copy link
Contributor

Choose a reason for hiding this comment

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

@TheBlueMatt it's a current quirk of the tx_buider API we currently report the dust exposure on the commitment that matches the local: bool parameter in NextCommitmentStats. With this PR we'd now also take the max of both the local and the remote commitments here, and report it in AvailableBalances.

Seems ok to me for now.

/// [`ChannelConfig::max_dust_htlc_exposure`] to determine whether new HTLCs can be
/// accepted or offered on this channel.
///
/// This field will be `None` for objects serialized with LDK versions prior to 0.2.1.
Copy link
Collaborator

Choose a reason for hiding this comment

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

The version here says "prior to 0.2.1" but Cargo.toml has version = "0.3.0+git", so this field will first appear in 0.3.0. The previous field (funding_redeem_script) correctly says "prior to 0.2.0".

Suggested change
/// This field will be `None` for objects serialized with LDK versions prior to 0.2.1.
/// This field will be `None` for objects serialized with LDK versions prior to 0.3.0.

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