Skip to content

Consider adding an extra monitor update upon ChannelManager::funding_transaction_signed #4358

@wpaulino

Description

@wpaulino

@TheBlueMatt pointed out in #4336 a case where we end up with a force close when canceling a splice:

  1. tx_complete is exchanged
  2. Node 1 handles Event::FundingTransactionReadyForSigning, calls funding_transaction_signed, and sends its commitment_signed
  3. Node 2 processes it, and sends its own commitment_signed and tx_signatures
  4. Node 1 crashes without persisting the latest ChannelManager, and needs to handle Event::FundingTransactionReadyForSigning again
  5. Node 1 chooses to cancel the splice this time around and sends tx_abort
  6. Node 2 has already committed to the funding transaction via their tx_signatures, so they can't tx_abort back and force closes instead

Note that that is only worth fixing once we no longer force close due to a desync between the ChannelManager and ChannelMonitor persisted state.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions