Skip to content

Add deduplication or stable IDs for user-facing events #967

Description

@joostjager

Problem

Without stable event ids in LDK, ldk-node has no reliable upstream identity to persist with app-facing events. A replayed LDK event can therefore look like a fresh event to ldk-node, which can lead to duplicate app-facing events after restart.

Payment events usually carry enough payment-level identifiers for careful applications to dedupe the highest-risk side effects, but that is an event-specific workaround rather than a general event identity contract. For non-payment events, applications may create duplicate notifications, accounting entries, operational actions, or fulfillment work if they treat ldk-node events as exactly-once.

Upstream and Remaining ldk-node Work

The upstream rust-lightning side is tracked in https://git.rust-bitcoin.org/lightningdevkit/rust-lightning/issues/4794. That issue covers the missing public logical identity for replayed lightning::events::Events.

If LDK exposes a stable event identity or idempotency token, ldk-node should persist it, or an app-event identity derived from it, with the queued app-facing event. On replay, ldk-node should then recognize that the corresponding app event was already queued or handled instead of appending a duplicate.

ldk-node should also decide whether to expose this identity to applications. If app-facing events remain at-least-once, exposing a stable event id or idempotency key would make that contract explicit and give applications a reliable dedupe key.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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