I came upon this through the Bitcoin Wiki and I think it would be a bandwidth-friendlier alternative for transaction broadacasting than simply syncing an entire node via the Tor network and then relying on that for broadcasting.
You don't have to sync your node over Tor to broadcast a transaction over Tor. Wasabi Wallet has had this private broadcast feature forever, and it was just merged into Bitcoin Core:
https://github.com/bitcoin/bitcoin/pull/29415Murch explained why this method is preferable to Dandelion in the Bitcoin Optech podcast:
I think this is better than Dandelion, yes. Basically, Dandelion still had the problem that you were asking your peers to participate in essentially a conspiracy against the network, “Hey, I’m giving you this transaction, but don’t broadcast it, just forward it to someone else”. Of course, the neighbor didn’t know whether they were the first hop or the third hop in this stem phase of Dandelion, but you still leaked the originator of the transaction to at least one peer. In this case, yes, the recipient knows, “Oh, this is an ephemeral new private connection. Clearly, this is coming directly from the originator to me”. But because of how the connection is being made, they can’t actually tell who the originator is in clearnet; they don’t learn the IP address.
So, I think this takes the idea that led to Dandelion, “We want to obfuscate who the originator of a transaction is”, and improves on it by basically just inserting the transaction on some random points on a network until it is properly broadcast. And it gets rid of the concerns with the stem phase, where Dandelion required you to have separate mempools for every peer to facilitate these stem phases. And now, you just remember who you sent a transaction to, but there is no multi-hub, there is no keeping track of who you told about transactions in the stem phase or whether you saw them later. It’s binary basically, “Have I seen the transaction? Then I can broadcast it. Otherwise, I remember who I sent it to”.
...
I have maybe one little follow-up on Dandelion. I didn’t explain very well why it was complicated with mempools on Dandelion. So, when you broadcast a transaction and it has two phases in Dandelion, first the stem phase where every peer just forwards it to one more peer, and then the fluff, where someone randomly then decides to broadcast it. And the problem here was everybody along the way had to basically keep track whom they got the transaction from so they wouldn’t send it back to the same one, and who they sent it to, and then behave differently regarding that transaction until they saw it back to the network. Like, they would pretend not to have seen the transaction. But with this approach that we now actually have in Bitcoin Core, you don’t have to pretend. It’s just as soon as you get it on a network, you use it as if it were a foreign transaction and you had seen it for the first time. And everybody that you broadcast it to just treats it as a new transaction they received. So, there’s none of the special behavior and you don’t have to have extra mempools for every peer.