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

Dandelion Implementation / Spec #341

Open
kaiserd opened this issue Sep 23, 2022 · 6 comments
Open

Dandelion Implementation / Spec #341

kaiserd opened this issue Sep 23, 2022 · 6 comments

Comments

@kaiserd
Copy link

kaiserd commented Sep 23, 2022

Background

As I am working on a Dandelion Vac RFC specifying Dandelion for Waku Relay
(and by extension for libp2p, because Waku Relay builds on libp2p gossipsub),
I was looking into current implementations and analyses beyond the Dandelion/Dandelion++ papers.
The first goal is identifying anonymity properties,
and, if possible, relaxations that yield lower latency but still beneficial anonymity properties.

js-libp2p-gossipsub Dandelion Implementation

The current implementation of js-libp2p-gossipsub does not follow the Dandelion and/or Dandelion++ approaches directly.
It currently implements what the Dandelion paper refers to as "diffusion-by-proxy" with a fixed stem length
(the implementation features an additional degree parameter for the anonymity phase, though).

In contrast, Dandelion

  1. fixes the anonymity graph
  2. has a probabilistic stem length
  3. introduces random delay in the fluff phase (because it uses diffusion) which gossipsub does not do

Also, it introduces epochs and a fail-safe that diffuses messages if they are not received via fluff spreading after some time.

I wanted to ask if there is any analysis regarding the design choices made in the current implementation?
It will improve latency, but (presumably) at the cost of lower entropy (i.e. higher recall / precision for the attacker).

Dandelion Vac Spec

Would any js-libp2p-gossipsub Dandelion contributor be interested in collaborating on a Vac RFC specifying Dandelion for libp2p gossipsub / Waku Relay? I am currently working on a first raw version as a basis for discussion. We are interested in trade-offs leaning towards lower latency at a low anonymity cost.

Further References

@dapplion
Copy link
Contributor

CC: @noot @wemeetagain are you avail to participate in the spec-ing process?

@noot
Copy link

noot commented Sep 29, 2022

@kaiserd copy pasting my reply from discord:

hey, a potential solution being looked into is having the stem length be determined probabilistically, so the probability of a stem length of 3-5 is high and decreases after that. while receiving a higher stem length would make it more likely that the sender is the originator, it wouldn't be 100% guaranteed. the reason the stem length was fixed between 3-6 is to have a bound on latency which is critical for validators, but like you said hurts anonymity. the research on this is still ongoing 🙂

I'd be interested in potentially collaborating on this. would also be good to loop in @AtHeartEngineer since he's actively researching this as well.

@AtHeartEngineer
Copy link
Contributor

I'd be interested in potentially collaborating on this. would also be good to loop in @AtHeartEngineer since he's actively researching this as well.

Yep I have been talking to @kaiserd some too. I'm going to figure out a good place for us all to talk/coordinate.

@kaiserd
Copy link
Author

kaiserd commented Sep 29, 2022

Awesome :). Thanks :).

@kaiserd
Copy link
Author

kaiserd commented Sep 30, 2022

For the time being, we could use the #network-privacy channel on the Vac discord.
I'll send you invites :).

@wemeetagain
Copy link
Member

@kaiserd are you still working on this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants