Split prefunding Channel
items into Inbound/Outbound channels
#2054
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
WIP: Still requires some fixes, but creating a draft for early feedback. Also not sure the best way to go about this as it's just going to cause/be affected by maaany merge conflicts, hence earlier feedback. I'd suggest the "view file" feature to check the whole
channel.rs
file. A lot had to move and change at the same time and GH is not coping with highlighting in the changes view. I think I'd like to split the structs into separate files. It's a little overwhelming.Currently, funded and unfunded channels are represented by a single
Channel
struct. This ends up conflating certain state and makes it harder to reason about / less safe to call appropriate methods onChannel
to advance state.This aims to make prefunded vs. funded states more type-safe and logically separated. Prefunded channels are further split into
InboundChannel
s andOutboundChannel
s. This makes it a compile-time error to call methods only meant forInboundChannel
s onOutboundChannels
and vice versa. This Inbound/Outbound separation for channels using V1 channel establishment, are still very useful when it comes to V2 channel establishment (dual-funded channels): it enhances type safety for what actions the V2 channel initiator (Outbound) and non-iniator (Inbound) can take on these objects once they support V2 channel establishment in future work.Partially addresses #1621