Dandelion - Reading Assignment

Read this outstanding explainer on Dandelion from monerooutreach.org. Really, you won’t find a better one anywhere on the internet. I’ve looked. Answer the questions and post your answers below:

  1. What is ‘flooding’?
  2. What are the two phases of a Dandelion broadcast and what happens in each phase?
  3. What potential weakness of Dandelion does Dandelion++ aim to address?
  4. Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?

1.Monero node starting the broadcast of a new transaction uses a process called flooding. It is a process it communicates the transaction to all its peers, who in turn communicate to all their peers, and so forth, with some checks to prevent redundant communication. The information travels in all directions over the network like a wave. Some cryptocurrencies, like Bitcoin, randomize the timing of this broadcast, but Monero does not.

2.Dandelion defines a process for finding a proxy node to broadcast, called the anonymity (or stem) phase. And it establishes another process for broadcast, called the spreading (or fluff) phase.

3.There are some minor downsides and limitations. Dandelion++ adds delay to the propagation of transactions. This comes from multiple sources, which are discussed by the Dandelion++ authors [3]. First, the existence of the stem phase adds delay, possibly a few seconds, based on the authors’ analysis and experimental evaluations. Diffusion adds random delays during the fluff phase, typically less than a second. And should the network be subject to a black-hole attack, the confirming wait by the initiator could delay transmission by minutes. These delays are not expected to materially affect the network. Also, Dandelion++ does not encrypt the P2P packets, and does not protect against ISP/VPN-level spying—for this, you can use Tor.

  1. Dandelion transaction propagation proceeds in two phases: first the “stem” phase, and then “fluff” phase. During the stem phase, each node relays the transaction to a single peer. After a random number of hops along the stem, the transaction enters the fluff phase, which behaves just like ordinary flooding/diffusion. Even when an attacker can identify the location of the fluff phase, it is much more difficult to identify the source of the stem.
1 Like
  1. It is a broadcasting process used to communicate transactions across the network, by having all nodes communicating the information to their peers which will then do the same and so on, so forth.
  2. Dandelion’s aim is to first find and route transactions to a proxy node (anonymity phase) and then flood the information throughout the network (spreading phase). Using this method, it is possible to use different sets of connections than with regular flooding, because information is first transferred to another node and then on the basis of its peers the flooding starts.
  3. The risk that nodes within the network may not be “honest” nodes and undermine Dandelion’s anonymity.
  4. Either by using the “epochs switching” method or through the “fail-safe mechanism”.
1 Like
  1. What is ‘flooding’?

Flooding is when a node communicates the transaction to all its peers, who in turn communicate to all their peers, and so forth, with some checks to prevent redundant communication. The information travels in all directions over the network like a wave. Some cryptocurrencies, like Bitcoin, randomize the timing of this broadcast, but Monero does not.

  1. What are the two phases of a Dandelion broadcast and what happens in each phase?

◦ Anonymity (or stem) phase - seeking out a proxy node along a special linear search path

◦ The Spreading (or fluff) phase – After seeking out a proxy node, then from this proxy node spreading the information rapidly and symmetrically

  1. What potential weakness of Dandelion does Dandelion++ aim to address?

Dandelion++ tweaks Dandelion to resist large-scale rule-breaking deanonymization attacks.

  1. Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?

In the new stem phase, to implement dynamic connectivity, it proceeds in discreet intervals, called epochs. Each node switches epoch independently, typically every few minutes. With each new epoch, a node picks two new relay connections at random from its outbound connections. Then whenever the node creates its own transaction it sends it over one of these two relays, always making the same choice for a given epoch. And whenever it gets a transaction from another node for forwarding during stem phase, if it is a relayer (more on this below), it sends it out randomly over one of the two relays.

1 Like
  1. Flooding communicates the transaction to all its peers, who in turn communicate to all their peers, and so forth, with some checks to prevent redundant communication.
  2. Dandelion defines a process for finding a proxy node to broadcast, called the anonymity (or stem) phase. And it establishes another process for broadcast, called the spreading (or fluff) phase. Two different sets of peer connections are used with the important difference that the anonymity phase connection set changes with time.
    3.Dandelion++ tweaks Dandelion to resist large-scale rule-breaking deanonymization attacks.
    4.a. The fluff phase in Dandelion++ uses diffusion, the flooding process where the timing of the communications are random to make it harder for spy nodes to locate the source. b.There is an additional, complementary piece to Dandelion++ called the fail-safe mechanism. Each node that relays a transaction during stem phase starts a timer for that transaction. If a time threshold passes without the node receiving the same transaction back during a fluff phase, it starts its own fluff phase.
1 Like
  1. What is ‘flooding’?
    A propagation technic of transactions in the P2P network.

  2. What are the two phases of a Dandelion broadcast and what happens in each phase?
    “Anonymity or stem phase” to find a proxy node to broadcast and “spreading or fluff phase” to broadcast the transaction, using different set of peers in each phase and changing connection set with time in the “anonimity phase”.

  3. What potential weakness of Dandelion does Dandelion++ aim to address?
    Large scale rule breaking deanonymization attacks: bootnet with spy nodes distributed through the network not following the rules and using all available information (time, addresses of senders and receivers,…).

  4. Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?
    With a new epoch, where the nodes classifies itself as relayer (stem) o difusser (fluff)
    If a time threshold passes after relaying a transaction during stem phase and not receiving the same transaction back during a fluff phase, in this case the node starts its own fluff phase.

1 Like
  1. It is a broadcasting process used to communicate transactions across the network, by having all nodes communicating the information to their peers which will then do the same and so on, so forth.
  2. Dandelion defines a process for finding a proxy node to broadcast, called the anonymity (or stem) phase. And it establishes another process for broadcast, called the spreading (or fluff) phase.
  3. Dandelion++ tweaks Dandelion to resist large-scale rule-breaking deanonymization attacks.
  4. Either by using the “epochs switching” method or through the “fail-safe mechanism”.
3 Likes
  1. What is ‘flooding’?
    Is the process used from Monero nodes starting a broadcast.Is called flooding because propagate like a wave, whit the node peers communicating to their peers, that consequently communicate it to their peers and so going.

  2. What are the two phases of a Dandelion broadcast and what happens in each phase?
    STEM phase is called the process of looking for a proxy node to broadcast.
    FLUFF phase is the process of broadcasting (or spreading) to the network.

  3. What potential weakness of Dandelion does Dandelion++ aim to address?
    Is just a refined version of the same thing tuned to resist large-scale rule-breaking deanonymization attacks.

  4. Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?
    Switching the epoch (where the node classificate itself relayer/diffuser) or trough “fail-safe" mechanism(starting his own fluff when, at process started, a Tx doesn’t come back after a set time threshold)

2 Likes
  1. What is ‘flooding’?
    Is a process of a monero node starting to broadcast a new transaction.

  2. What are the two phases of a Dandelion broadcast and what happens in each phase?
    Finding a proxy node to broadcast is called the anonymity (or stem) phase. And it establishes another process for broadcast, called the spreading (or fluff) phase.

  3. What potential weakness of Dandelion does Dandelion++ aim to address?
    Dandelion++ tweaks Dandelion to resist large-scale rule-breaking deanonymization attacks.

  4. Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?
    For each epoch, a node classifies itself as either a relayer or a diffuser. The mode is determined at random at the start of the epoch. If a node is a diffuser, whenever it is given a transaction to relay as stem phase, it instead broadcasts it using diffusion, thereby starting the fluff phase.

1 Like
  1. What is ‘flooding’?
    Flooding means broadcasting a transaction from a node to all of its peers who again broadcast to other peers and so on.

  2. What are the two phases of a Dandelion broadcast and what happens in each phase?

  • Phase 1 “Anonymity (or stem) phase”: Find a proxy node to broadcasting
  • Phase 2 “Spreading (or fluff) phase”: Spreading information through the proxy node.
  1. What potential weakness of Dandelion does Dandelion++ aim to address?
    Some adversaries might not follow the rules of Dandelion to deanonymize the users.

  2. Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?

  • Dynamic connectivity: Nodes switch epochs independently, and in each epoch the node chooses two relays randomly, and when the node forwards a transaction, it sends it to one of these two relays randomly

  • Fail-safe mechanism: Each node that relays a transaction during stem phase starts a timer for that transaction. If a time threshold passes without the node receiving the same transaction back during a fluff phase, it starts its own fluff phase.

1 Like
  1. What is ‘flooding’?
    • The process of propagating transactions and blocks to nodes in an wave like organized manner. Bitcoin propagation is random, Monero’s is not.
  2. What are the two phases of a Dandelion broadcast and what happens in each phase?
    • Stem phase: First anonymity is secured by broadcasting linearly to a proxy node (with this connection set changing through time).
    • Then in the fluff phase transactions are broadcasted to all nodes rapidly and symmetrically.
  3. What potential weakness of Dandelion does Dandelion++ aim to address?
    • Dandelion does not resist adversaries seeking to link transactions with IP addresses not following the rules of the network.
  4. Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?
    • For each epoch, a node classifies itself as either a relayer or a diffuser. The mode is determined at random at the start of the epoch. If a node is a diffuser, whenever it is given a transaction to relay as stem phase, it instead broadcasts it using diffusion, thereby starting the fluff phase.
    • A fail-safe: If a time threshold passes without the node receiving the same transaction back during a fluff phase, it starts its own fluff phase.
1 Like
  1. It communicates the transaction to all its peers, who in turn communicate to all their peers, and so forth, with some checks to prevent redundant communication.
  2. First, Dandelion defines a process for finding a proxy node to broadcast, called the anonymity (or stem) phase. And secondly it establishes another process for broadcast, called the spreading (or fluff) phase.
  3. Dandelion++ tweaks Dandelion to resist large-scale rule-breaking deanonymization attacks.
  4. Either by using the “epochs switching” method or through the “fail-safe mechanism”.
1 Like
  1. it is a way of transmitting information across a network, 1 node starts by sending info to all its peers, and each node that recives the info, will send it to its peers.
  2. first phase, randomly choose a proxy node, and then that proxy node floods the network with the informaion.
    3.dandilion ++ tweeks dabdilion to adjust for large scale deanonymisation attacks
    4.by using either the epoch system or the fail safe system. epoch system, the timing of communications is random, fail safe mechanis, and if a node doesn’t get back the same info it sent out in a certain time interval, it starts the fluff phase
1 Like

1- Flooding communicates the transaction to all its peers, who in turn communicate to all their peers, and so forth, with some checks to prevent redundant communication. The information travels in all directions over the network like a wave. Some cryptocurrencies, like Bitcoin, randomize the timing of this broadcast, but Monero does not.

2- Dandelion defines a process for finding a proxy node to broadcast, called the anonymity (or stem) phase. And it establishes another process for broadcast, called the spreading (or fluff) phase. In general, the two phases use different sets of peer connections with the important difference that the anonymity phase connection set changes with time.

3- Dandelion++ tweaks Dandelion to resist large-scale rule-breaking deanonymization attacks.

4-“Epochs switching” method or through the “fail-safe mechanism”.

1 Like
  1. ‘flooding’ is the diffusion of the transaction to all nodes connected
    “flooding. It communicates the transaction to all its peers, who in turn communicate to all their peers, and so forth, with some checks to prevent redundant communication. The information travels in all directions over the network like a wave”
  2. a) “the anonymity (or stem) phase” = “defines a process for finding a proxy node to broadcast” “process of first seeking out a proxy node along a special linear search path”(process example: connect to just 1 neighbor node and pass the transaction(and a ttl like counter) while a stemTTL-- counter is not zero)
    b) “the spreading (or fluff) phase” = “then from this proxy node spreading the information rapidly and symmetrically” (example to broadcast the transaction to all connected nodes when a stemTTL-- counter reaches zero)
  3. Dandelion++ aims to cover existence of malicious nodes in the network “nodes need not follow the rules”, examples: nodes diffusing right away, “black-hole attacks where adversarial nodes discard transactions during the stem phase rather than relaying them”
  4. “Each elegant Dandelion++ node makes its own decisions about its behavior”, a node decides itself between the 2-propagation phases called “epoch”. “For each epoch, a node classifies itself as either a relayer or a diffuser.”
    a) When a transaction at-stem-phase reach a node “relayer” it gets relayed, and also hold for a period of time (a timer is set), while the timer is ticking the transaction should be received back in their fluff-phase due to diffusion and therefore the timer reset and the transaction processed as ‘usual’ (tx validated and stored into the mempool), if the timer expires the node changes state into “diffuser” and 'fluff’s the stored/timer-expired transaction,
    b) When a transaction reaches a node “diffuser” it changes into “fluff” phase and gets diffused and processed (tx validated and stored into the mempool).

I do like to read and study from good articles, and thanks for great selection and nice learning order of them all, but, I would suggest additional/more examples of ‘media’ presentations on the course, even if there where no time to release why not use some good ones are available ‘open’ already out there on the internet …
some other ‘verbal’ explanations about Dandelion :
from Andreas Antonopoulos:


from Jimmy Song:

@ivan explained also
2 Likes
  1. Method of broadcasting transaction in Monero

  2. Stem: Transaction is tunelled to a proxy node.
    Fluff: Transaction is then broadcasted to peers like adandelion.

  3. Protection against large-scale rule-breaking deanonymization attacks with large fraction of nodes being active (dishonest).

  4. If the node is a relayer it sends it randomly to 1 of 2 relays,
    If the node is a diffuser, it broadcasts transaction, thus starting the fluff phase.

1 Like
  1. It a broadcasting process of transaction over the network by having nodes communicating to their peers and will do the same to their peers and so on.
  2. Phase 1 (STEM} finding a proxy node to broadcast from.
    phase 2 (FLUFF) Broadcasting the transactions threw the network to all nodes.
    3.Large scale rule breaking (demonetization attacks)
  3. Epochs or fail safe
1 Like
  • What is ‘flooding’?
    The node communicates the transaction to all its peers, who in turn communicate to all their peers, and so forth, with some checks to prevent redundant communication. The information travels in all directions over the network like a wave.

  • What are the two phases of a Dandelion broadcast and what happens in each phase?
    First seeking out a proxy node along a special linear search path, then from this proxy node spreading the information rapidly and symmetrically.

  • What potential weakness of Dandelion does Dandelion++ aim to address?
    Some nodes may not follow the rules of the network. Some honest nodes may not run Dandelion.

  • Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?
    In the new stem phase, to implement dynamic connectivity, it proceeds in discreet intervals, called epochs. Each node switches epoch independently, typically every few minutes. With each new epoch, a node picks two new relay connections at random from its outbound connections.
    The fluff phase in Dandelion++ uses diffusion, the flooding process where the timing of the communications are random to make it harder for spy nodes to locate the source. Once a transaction has started the diffusion process it continues to propagate using diffusion, never going back to the stem phase.

1 Like
What is ‘flooding’?

A node broadcasts to all the peers it knows then each of those peers broadcast to all their peers, etc.

What are the two phases of a Dandelion broadcast and what happens in each phase?
  1. Stem phase: find a proxy node along a linear path
  2. Fluff phase: broadcast the transaction in a symmetrical manner
What potential weakness of Dandelion does Dandelion++ aim to address?

Dandelion requires nodes to follow the Dandelion rules, but not all nodes may be using Dandelion. The ++ version is resistant to large scale rule breaking attacks.

Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?
  • When a difusser node receives a transaction it starts the fluff phase by broadcasting using the diffusion method. Nodes are chosen at random to be either Relayers or Diffusers at the beginning of each epoch.
  • Relay nodes can begin the fluff phase if a certain time threshold has passed. This is occurs if the nodes does not receive back the transaction in a broadcast. This protects against an attack where bad nodes don’t propagate transactions and make it even harder to use timing to figure out the origin.
1 Like

Thanks for the suggestion, it’s a good idea! We can easily add some ‘further research’ links to podcasts or other YouTube videos.