dtr-org/unit-e

Feature: Dandelion-lite

gfanti opened this issue · 0 comments

Just had a discussion with @AM5800 and @amiller about a possible alternative Dandelion implementation, which we call Dandelion-lite. Summary of 3 candidate approaches below:

(1) Dandelion
Described in detail in BIP 156.
Pros:

  • Strong privacy guarantees (for a routing algorithm)
  • Relatively lightweight (adds a few seconds of latency for a stem length of ~10)

Cons:

  • Somewhat high complexity, especially for orphan transactions, RBF, etc
  • Analysis does not cover what happens when a Dandelion route is changed
  • Latency may be too high for Unit-e given focus on speed

(2) Dandelion-lite
The stem phase lasts only 1 hop before fluffing. Each node keeps track of only its own transactions that were sent to a dandelion relay, and starts an embargo timer for each such transaction. A note describing the protocol and analysis can be found here.
Pros:

  • Simpler than Dandelion (no need for orphan handling)
  • Privacy guarantees are similar to Dandelion when the adversary knows the graph (see linked document for analysis)
  • Lower latency than Dandelion since stem phase is only 1 hop

Cons:

  • More complex than doing nothing
  • Worse privacy than Dandelion when the adversary does not know the graph

Diffusion
This is what is done now: send to each peer with independent exponential delays.
Pros:

  • Already implemented
  • Lowest latency of the 3 options

Cons:

  • Poor privacy guarantees

We are currently leaning towards Dandelion-lite due to the simplicity of implementation, relatively low latency, and the fairly good privacy guarantees (compared to full Dandelion). I will also run some simulations on diffusion and upload them here so we can get a numeric comparison. Thoughts/comments welcome.