Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wake up wallet nodes before relaying messages or payments #2865

Merged
merged 13 commits into from
Aug 28, 2024

Commits on Aug 21, 2024

  1. Reorder functions in NodeRelay.scala

    This commit doesn't contain any logical change, we just move code to
    align with the FSM flow. It makes it easier to follow the progress of
    the state machine to always scroll down when advancing states.
    t-bast committed Aug 21, 2024
    Configuration menu
    Copy the full SHA
    cfb6c9c View commit details
    Browse the repository at this point in the history
  2. Rework node relay FSM flow

    We refactor `NodeRelay.scala` to re-order some steps, without making
    meaningful functional changes. The steps are:
    
    1. Fully receive the incoming payment
    2. Resolve the next node (unwrap blinded paths if needed)
    3. Wake-up the next node if necessary (mobile wallet)
    4. Relay outgoing payment
    
    Note that we introduce a wake-up step, that will be enriched in future
    commits and can be extended to include mobile notifications. The file
    is now also easier to follow, as steps are done linearly by simply
    scrolling down.
    t-bast committed Aug 21, 2024
    Configuration menu
    Copy the full SHA
    54185b0 View commit details
    Browse the repository at this point in the history
  3. Add wake-up step to channel and message relay

    We allow relaying data to contain a wallet `node_id` instead of an scid.
    When that's the case, we start by waking up that wallet node before we
    try relaying onion messages or payments.
    t-bast committed Aug 21, 2024
    Configuration menu
    Copy the full SHA
    f4c1354 View commit details
    Browse the repository at this point in the history

Commits on Aug 26, 2024

  1. Create peer-wake-up config section

    Create a dedicated `peer-wake-up` configuration section.
    This can be enriched with mobile notification sub-sections.
    t-bast committed Aug 26, 2024
    Configuration menu
    Copy the full SHA
    a395f9f View commit details
    Browse the repository at this point in the history
  2. Make walletNodeId_opt a field in ChannelRelay

    It turns out that we can keep `requestedShortChannelId_opt` and
    `walletNodeId_opt` as fields of this actor instead of resolving
    them once and forwarding the value in every function.
    t-bast committed Aug 26, 2024
    Configuration menu
    Copy the full SHA
    3a3d39e View commit details
    Browse the repository at this point in the history
  3. Include recipient in NodeRelay.sending

    This field is used in feature branches, so we include it to minimize
    the diff.
    t-bast committed Aug 26, 2024
    Configuration menu
    Copy the full SHA
    fbc4577 View commit details
    Browse the repository at this point in the history
  4. Introduce PeerReadyNotifier private class

    This commit doesn't contain any changes apart from using a private class
    to factor common fields of the `PeerReadyNotifier`.
    t-bast committed Aug 26, 2024
    Configuration menu
    Copy the full SHA
    893aac2 View commit details
    Browse the repository at this point in the history
  5. Refactor PeerReadyNotifier

    - clean-up `SomePeerConnected` / `SomePeerDisconnected`
    - include supervision directly inside the actor itself
    t-bast committed Aug 26, 2024
    Configuration menu
    Copy the full SHA
    aad3226 View commit details
    Browse the repository at this point in the history
  6. Track pending PeerReadyNotifier instances

    It can be useful to track pending `PeerReadyNotifier` instances to avoid
    performing duplicate actions when multiple `PeerReadyNotifier` spawn for
    the same peer (e.g. sending a mobile notification).
    
    When a `PeerReadyNotifier` actor is started, it registers itself into a
    singleton `PeerReadyManager`, which tells it whether there are other
    pending attempts for the same peer.
    t-bast committed Aug 26, 2024
    Configuration menu
    Copy the full SHA
    5613204 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    ea613a9 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    28e92c2 View commit details
    Browse the repository at this point in the history
  9. Move register outside of private class

    This way we can have `isFirstAttempt` as a class field, which makes
    sense since this value won't change.
    t-bast committed Aug 26, 2024
    Configuration menu
    Copy the full SHA
    bfb9090 View commit details
    Browse the repository at this point in the history

Commits on Aug 27, 2024

  1. Allow disabling wake-up

    This makes testing easier. We also do small refactorings in the relay
    actors without any behavior changes.
    t-bast committed Aug 27, 2024
    Configuration menu
    Copy the full SHA
    3e23b85 View commit details
    Browse the repository at this point in the history