Uh oh!
There was an error while loading. Please reload this page.
Expose HTLCStats in ChannelDetails - #2349
Conversation
2d30dad to
374cec2CompareCodecov ReportPatch coverage:
❗ Your organization is not using the GitHub App Integration. As a result you may experience degraded service beginning May 15th. Please install the Github App Integration for your organization. Read more. Additional details and impacted files@@ Coverage Diff @@## main #2349 +/- ##
==========================================
- Coverage 90.48% 90.47% -0.01%
==========================================
Files 104 104 Lines 53920 53930 +10 Branches 53920 53930 +10 ==========================================
+ Hits 48790 48795 +5 - Misses 5130 5135 +5
☔ View full report in Codecov by Sentry. |
tnull
left a comment
There was a problem hiding this comment.
Generally makes sense to me, thanks for having a go at this!
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| impl_writeable_tlv_based!(HTLCStats, { | ||
| (0, pending_htlcs, required), | ||
| (1, pending_htlcs_value_msat, required), |
There was a problem hiding this comment.
When introducing mandatory fields for a new structure they usually should be even-numbered as this makes older nodes which for whatever reason encounter the unknown field stop and error rather than ignore and continue deserialization.
There was a problem hiding this comment.
Ah I didn't realize this follows BOLT 1 serialization, done.
Uh oh!
There was an error while loading. Please reload this page.
| /// The total dust exposure for the local node. | ||
| pub on_holder_tx_dust_exposure_msat: u64, | ||
| /// The total value of pending, outgoing HTLC's being added that are awaiting remote revocation. | ||
| /// See `ChannelState::AwaitingRemoteRevoke`. |
There was a problem hiding this comment.
ChannelState is not public, so we shouldn't refer to it in the public API. If it has some relevant docs/information, we need to replicate them here in brief.
There was a problem hiding this comment.
Added additional explanation instead of the reference.
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.
| (35, self.inbound_htlc_maximum_msat, option), | ||
| (37, user_channel_id_high_opt, option), | ||
| (39, self.feerate_sat_per_1000_weight, option), | ||
| (40, self.incoming_htlc_stats, option), |
There was a problem hiding this comment.
These fields should both be odd: older nodes should just ignore them if they would ever encounter a ChannelDetails that was serialized with version 0.0.116 or above.
| /// Statistics on pending incoming HTLCs. | ||
| /// | ||
| /// This field is only `None` for `ChannelDetails` objects serialized prior to LDK 0.0.116. | ||
| pub incoming_htlc_stats: Option<HTLCStats>, |
There was a problem hiding this comment.
As the channel module is not public, HTLCStats is currently not exposed. We need to expose the object itself if it is now exposed through ChannelDetails.
There was a problem hiding this comment.
Moved HTLCStats to the channelmanager module for that purpose.
374cec2 to
039c38dCompareTheBlueMatt
commented
Jun 12, 2023
This needs a lot more motivation, I'm not sure I understand the goal here - I'm not sure whether this is intended to work towards #2087 or #2264 or something else. I'm also afraid these are a bit hard to discipher for a user, there's a lot of states an HTLC can be in, and the |
039c38d to
0f5cd35Compare
The main goal is to enable measuring the saturation of a channel with regards to
Does this refer to |
TheBlueMatt
commented
Jun 13, 2023
Ah! Okay, that's much more straightforward, so let's not expose all the nuance - lets try to break down the value into buckets such that it always totals to the current channel value eg: I think such an API will be much easier to use than the current That fails to communicate the dust exposure (ala #2264) but accomplishes what you want. Bonus points for solving both in one go - instead of returning the htlc amount/count, return the actual list of HTLCs with extra info (is it dust? its payment hash, CLTV expiry, etc). |
Uh oh!
There was an error while loading. Please reload this page.
wvanlint
commented
Jul 22, 2023
Will handle both use cases by returning the list of pending HTLC's in #2442. |
Exposes details around in-flight HTLCs through
HTLCStatsinChannelDetails. This enables measuring saturation of a channel with regards tomax_accepted_htlcsandmax_htlc_value_in_flight_msat.