Dandelion with Onion rings

I was thinking of ways to increase aggregation during the Dandelion stem phase. There’re a couple of ways to approach this, some of them being:

  1. you wait and aggregate if you’re lucky (what we do now)
  2. someone special waits and aggregates (I’d say Objective dandelion is of this type)
  3. you are proactive and ask around who wants to aggregate stem txs (onion rings)

The main idea is to have a stem node either:

  1. create a ring of peers that will contribute their stem transactions for aggregation with yours (in an encrypted way) which makes your stem tx bigger
  2. participate in such a ring without being the creator, which means you give away your transaction to another ring creator and make their transaction grow

The idea is that you start as a ring creator to make your tx obfuscated enough and then contribute the transaction to other rings as a participator. This way, even if you get surrounded in a ring by an attacker, you must have had a transaction obfuscated enough to be confident to share it with rings you didn’t create. If the ring creator does not broadcast the transaction you passed them in some given time, you can simply broadcast it yourself because if you were confident it was obfuscated enough to share it around, you can surely broadcast it.

This is a very high level overview of the idea. It can be visualized as stem peers jointly creating a snowball that keeps growing and passing it among each other until it is broadcasted. I answer some questions at the end of the gist document (incuding why I call them onion rings).