Skip to content

Randomized overpaying (treat as routing fees) to reduce traceability #1089

@ZmnSCPxj

Description

@ZmnSCPxj

BOLT#4 specifically allows overpayment of invoices of up to twice the invoice amount. BOLT #11 explicitly mentions:

the payee SHOULD accept up to twice the expected amount, so the payer can make payments harder to track by adding small variations.

My intent is the below:

  1. In combination with fuzz from Improve route randomization #1012, also generate a random amount to add up to some fraction of the maxfeepercent setting to add to the destination.
  2. If the resulting route exceeds the actual desired payment by more than maxfeepercent, reduce the fraction for overpayment and/or fuzz (maybe even use the same variable for both?) and retry. Only raise a PAY_ROUTE_TOO_EXPENSIVE) if both the fuzz and overpayment fraction are very close to 0.0

An idea is to pay exactly when the resulting route is a single hop (i.e. direct route to destination), since nobody else will receive our onion routing message and the destination already knows how much the exact payment is (it generated the invoice...), but if we want to hide our identity from the destination, we will want to be able to pretend to be somebody else further away, meaning we should still overpay in that case.

In combination #1086, we could have "plausible" shadow routes by also overdelaying payment timeouts.

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