executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
bitcoin-privacy-dandelionDandelion++ (BIP156): tx broadcast privacy. Stem phase (forward to one peer) → fluff phase (gossip to all). Hides origin IP. USE WHEN: evaluating tx-broadcast privacy, implementing Dandelion- aware relay logic.
Independent GitHub snapshot · Automated classification · Original documentation governs
A tx broadcast privacy enhancement. Without Dandelion, tx broadcast to all your peers immediately = first peer with chain analytics can infer your IP.
Two phases, run over an anonymity graph that is rebuilt every ~10 min on average (an "epoch"). Routing is fixed per epoch, not drawn per transaction.
DANDELION_MAX_DESTINATIONS = 2) and maps every
inbound peer to one of them.1/q — ~10 hops at BIP156's q = 10%.During stem, only the chain of forwarders sees the tx.
q = 10% — a coin flip
per transmission.invs to all its peers; from there the tx
propagates network-wide via standard gossip.Assigned: 2017-06-09 in the BIP
header); the Dandelion++ paper is the 2018 item.inv flooding.dandelion-org/bitcoin), never merged upstream. Outside
Bitcoin, Grin and Monero implement Dandelion++ natively (both
present on master, checked September 2026). btcsuite/btcd
carries no Dandelion code, commits or issues (checked September
2026).Core 31.0 (19 April 2026) added -privatebroadcast, a boolean node
option, default false (checked on master, September 2026). When
enabled, txs submitted via sendrawtransaction are broadcast over
short-lived connections through Tor or I2P only, and are not put
in the local mempool first.
Two privacy properties, per the 31.0 release notes:
Introspection/control RPCs, also new in 31.0:
getprivatebroadcastinfo — lists txs currently being privately
broadcast.abortprivatebroadcast — drops matching txs from the private
broadcast queue.Constraints (from init.cpp on master, September 2026):
sendrawtransaction.-connect (private broadcast must open its own
connections to randomly chosen Tor/I2P peers); use
-maxconnections=0 -addnode=... instead.-proxyrandomize=0, since Tor circuits for private
broadcast may then correlate with other Tor connections.MAX_PRIVATE_BROADCAST_CONNECTIONS); further ones pause.Upgrade note: 31.0 leaked the originator IP — under certain
circumstances connections were made over clearnet rather than the
enabled privacy network. Fixed in 31.1 (July 2026). Do not rely
on -privatebroadcast on 31.0.
Beyond (or without) -privatebroadcast, best practice for broadcast
privacy:
onlynet=onion) — defeats IP correlation.Tor-only setups achieve stronger broadcast privacy than Dandelion++ would have in practice.