]> git.bitcoin.ninja Git - rust-lightning/commit
Move `PackageTemplate` merging decisions entirely into `package.rs`
authorMatt Corallo <git@bluematt.me>
Fri, 6 Sep 2024 18:00:44 +0000 (18:00 +0000)
committerMatt Corallo <git@bluematt.me>
Wed, 18 Sep 2024 16:48:42 +0000 (16:48 +0000)
commit09bab0ec61a04e53cf27e102b36fecd6b2cace7a
tree83ac6a3597d943135305704b4c4924fd6fb40b2c
parent7e344dfc11ec0217f28643a05f990d2b06c935f4
Move `PackageTemplate` merging decisions entirely into `package.rs`

Currently our package merging logic is strewn about between
`package.rs` (which decides various flags based on the package
type) and `onchaintx.rs` (which does the actual merging based on
the derived flags as well as its own logic), making the logic hard
to follow.

Instead, here we consolidate the package merging logic entirely
into `package.rs` with a new `PackageTemplate::can_merge_with`
method that decides if merging can happen. We also simplify the
merge pass in `update_claims_view_from_requests` to try to
maximally merge by testing each pair of `PackateTemplate`s we're
given to see if they can be merged.

This is overly complicated (and inefficient) for today's merge
logic, but over the coming commits we'll expand when we can merge
and not having to think about the merge pass' behavior makes that
much simpler (and O(N^2) for <1000 elements done only once when a
commitment transaction confirms is fine).
lightning/src/chain/onchaintx.rs
lightning/src/chain/package.rs
lightning/src/ln/functional_tests.rs