What is ‘flooding’?
Flooding is the old method Monero used to broadcast transactions across the network. A node would communicate a transaction to all its peers, who when then further communicate the transaction to all their peers, and so on.
The problem with this is that you could often, or somewhat trace this back to a specific geography, as the transaction propagates in waves.
Any monitoring systems would be able to see which nodes are propagating a certain transaction, and approximate the transactions location.
What are the two phases of a Dandelion broadcast and what happens in each phase?
-
The anonymity (or stem) phase
The stem phase uses discreet intervals with switching relays every few minutes to select its outbound peers.
-
The spreading (or fluff) phase
The fluff phase then uses the flooding method to broadcast transactions, however in the fluff phase, the timing is done at random.
What potential weakness of Dandelion does Dandelion++ aim to address?
With Dandelion, sometimes a node could not follow the rules of the network.
Dandelion++ added delay to propagating transactions and added tweaks to the propagation methods to resist against deanonymization attacks by nodes that won’t abide by the rules of the Dandelion network.
Under the Dandelion++ protocol, what are the two ways to transition from the ‘stem’ phase to the ‘fluff’ phase?
With every new epoch, a node will classify itself as a relayer (stem) or diffuser (fluff), and once a node creates its own transaction, it will send it over one of two relays. Whenever it gets a transaction from another node for forwarding stem phase, if it’s a relayer, it will then send it out randomly over one of two relays.
The second way to transition from the stem phase to the fluff phase is if the time threshold passed without the node receiving the same transaction back during a fluff phase. In this case, the node would then start its own fluff phase.