What is Dandelion?



[ARCHIVED] Open Development Channel Discussion (27-08-2018)
Link: https://discord.gg/7SjzX7Q


Cryptoguard: Ah! Dandelion is for hiding IPs right? Always thought it was a privacy feature for transactions

S3v3nh4cks: No, it is just a tool to increase the privacy due to the fact that the internet requires IP’s to function, so they will always be present and to some degree visible…

Kewde: It’s a new routing scheme - I guess the best example I can come up with is a drop of water falling in a silent pond. If a single drop falls and creates a ripple in the water, the ripple moves at a constant speed (bot true but hey, example) in every direction, away from the source/origin. If you put detectors in the pond, when the ripple hits it, it can locate the source location of the droplet.

Kewde: With dandelion, the droplet is passed through a few nodes before creating the ripple effect.

Kewde: Ripple effect = announce the transaction to everyone.

S3v3nh4cks: I would say it is similar to how coin-join works but with IP addys… :slight_smile:

Kewde: I don’t think that’s the best comparison :stuck_out_tongue: coinjoin uses a mixing pool and is round based. Dandelion is applicable far beyond just transactions, I spoke with the guy over at BitMessage, and they already have an implementation of the routing scheme. You can use it to privately broadcast any type of message.

Kewde: The statistics that they describe in their paper are interesting too, they formalized a metric for privacy that goes beyond just network routing. It’s a general purpose method, I wouldn’t be surprised that they were actually working on a metric system for measuring the anonymity provided by a cryptocurrency and then decided to fire it at an easier target with fewer variables.

Cryptoguard: Hmm interesting. So do we plan on integrating it somehow to SMSG?

Kewde: It’s something I’ll take a look at when it makes it into bitcoin-core. I doubt it will be hard to implement, good starters issue for me :slight_smile:

Kewde: AFAIK the “dandelion” message is current transaction specific. Meaning it expects it to always be a transaction. It also enforces to mempool embargoes etc, quite a few additional/transaction things. So I’d have to generalize it to be any message and then depending on the message type; tx or smsg perform the necessary checks.

Kewde: It’s a lot easier for SMSG once you start reasoning about it. With transactions, what if a double spend comes in whilst you’re in the line phase? You have two conflicting transactions… You’re one of the few people with knowledge of the additional transaction. If another node is able to use double spends to trigger different behavior on your end it may use that to discover the dandelion routes.

Kewde: A guy over at privacytools.io is working on an interesting project - Onionr. https://github.com/beardog108/onionr & https://github.com/beardog108/onionr/blob/master/docs/whitepaper.md

Additional Resources

The Anatomy of Anonymity: How Dandelion Could Make Bitcoin More Private
[bitcoin-dev] BIP proposal - Dandelion: Privacy Preserving Transaction Propagation

What Makes Particl Marketplace Stand Out From its Competition