Repository navigation
Conversation
|
👋 I see @tankyleo was un-assigned. |
f3r10
left a comment
There was a problem hiding this comment.
Thanks, this looks good to me overall, and the test covering a dust and a non-dust HTLC at the same time is nice.
And about that comment on the commit: I ran channel_full_cycle_force_close_trusted_no_reserve 5× on this branch (4 pass, 1 fail [panic: …]) and 5× on the parent commit (5 pass). That's too few runs to tell whether the test is flaky or something changed here, but since this diff only adds read-only fields to ChannelDetails and nothing in the force-close path touches them, I'd expect a pre-existing flake.
7e6c231 to
9113433
Compare
Yeah, it's flaky currently. |
9113433 to
5467061
Compare
|
Reassigning @tankyleo . |
tankyleo
left a comment
There was a problem hiding this comment.
- Can we remove the
splice_amount_msat > channel_details.outbound_capacity_msatcheck insrc/lib.rs,fn splice_out? There are cases where a user can specify an amount greater than the outbound capacity of the channel and still get a successful splice. We should let rust-lightning be fully responsible for validating the amount that the user wants to withdraw from the channel. - If we proceed with this, we will also want to update
let excessive_splice_out_sats = node_a.list_channels()[0].outbound_capacity_msat / 1000 + 1;to use the new splice out maximum intests/integration_tests_rust.rs. - Perhaps this is also a TODO in the rust-lightning documentation, but it might be worth clarifying in the docs here that passing
next_splice_out_maximum_satdirectly tofn splice_outwill not work: thefn splice_outspecifies the value of the spliced output, and this amount plus the fees of the splice transaction needs to be smaller thannext_splice_out_maximum_sat. - A follow-up to this PR could be adding a
splice_out_with_allfunction similar to the currentsplice_in_with_all. - Do we need to update the pending changelog with the new fields ?
Not sure. It's there intentionally to abort early for impossible cases. What are the cases that still would allow a successful splice? |
Make pending payment state and dust exposure available to callers so that they can inspect stalled payments and assess force-close risk. Also expose the maximum splice-out amount to help plan withdrawals. Expose the same information through Rust and the language bindings. Check that settling a dust HTLC leaves the non-dust HTLC committed with no dust exposure, and match payment failures to their IDs. Fixes lightningdevkit#1102 Co-Authored-By: HAL 9000
5467061 to
ad03a6f
Compare
Using How about we keep the guard, but replace Below is a case codex reproduced where it withdrew an amount greater than the outbound capacity of the channel: |
Make pending payment state and dust exposure available to callers so they can inspect stalled payments and assess force-close risk. Also expose the maximum splice-out amount to help plan withdrawals.
Expose the same information through Rust and the language bindings.
Rust and UniFFI checks, unit tests, the new integration test in both configurations, doctests, and binding generation pass. The full integration run had two failures in existing tests. Both passed in isolation, but channel_full_cycle_force_close_trusted_no_reserve failed again with Bitcoin Core RPC at tests/common/mod.rs:632. Its clean-main run passed, so the cause remains unresolved. UniFFI rustdoc also fails on three broken links reproduced on main.
Fixes #1102