Skip to content

Handle fallible per commitment point in channel establishment#3109

Merged
TheBlueMatt merged 7 commits into
lightningdevkit:mainfrom
alecchendev:2024-06-async-commit-point-funding
Dec 15, 2024
Merged

Handle fallible per commitment point in channel establishment#3109
TheBlueMatt merged 7 commits into
lightningdevkit:mainfrom
alecchendev:2024-06-async-commit-point-funding

Conversation

@alecchendev

@alecchendev alecchendev commented Jun 6, 2024

Copy link
Copy Markdown
Contributor

Handles fallible get_per_commitment_point signer method (except for channel reestablish).

We make get_per_commitment_point return a result type so that in the Err case, we (LDK) can resume operation while an async signer fetches the commitment point. This will typically block sending out a message, but otherwise most state updates will occur. When the signature arrives, the user is expected to call ChannelManager::signer_unblocked and we will retry get_per_commitment_point however this time the signer will return the commitment point with Ok, and we'll send out our message.

This PR implements this flow for channel establishment, i.e. open_channel, accept_channel, and channel_ready.

Rough outline of how our HolderCommitmentPoint advances and gets new signatures:

  • sending open_channel - creates new outbound channel, immediately requests the first commit point, waits to have the first 2 commit points to be unblocked to send the message
  • sending accept_channel - same ^
  • sending funding_created - no op regarding commit points
  • receiving funding_created - uses point to verify first commitment, then advances commitment, requesting next point
  • sending funding_signed - no op
  • receiving funding_signed - same as above, verifies, advances, requests next point
  • sending channel_ready - waits to have the next commit point ready, then once unblocked sends the current point in the channel_ready message

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

4 participants