[1. What is ‘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.
2. What are the two phases of a Dandelion broadcast and what happens in each phase?
Anonymity – To find a proxy node to broadcast
Spreading (or Fluff) – The actual process of broadcasting
3. What potential weakness of Dandelion does Dandelion++ aim to address?
To resist large-scale rule-breaking deanonymization attacks.
Gives formal guarantees of resistance to deanonymization.
4. 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.
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. Diffusion starts, though, in special way with Dandelion++. 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.