Stolon is a transaction diffusion algorithm inspired by Dandelion, with
additional privacy properties. Dandelion diffuses transactions across a p2p
network in two phases, a “stem” phase where transactions are relayed in a line
and a “fluff” phase where transactions are broadcast as widely as possible.
Stolon, named for runners that extend horizontally at or just below the
soil to spread new plants, tweaks this approach to perform the “stem” phase
over ephemeral Tor connections and the “fluff” phase over the clearnet p2p
Stolon is designed to for use both by full nodes such as Zebra and Zcashd as
well as by wallet software. This RFC describes:
- the threat model Stolon addresses;
- how Zebra’s architecture makes Stolon easy to implement;
- how Stolon can be used by Zebra or Zcashd;
- and how Stolon can be used by wallet software.
In addition, we have a proof-of-concept implementation that works today, with no additional infrastructure: https://github.com/ZcashFoundation/zebra/pull/1008
The implementation in the
stolon crate is available as a Rust library, or as a standalone
stolon binary that reads a raw transaction from stdin and sends it to the Zcash network. We hope that this code will be useful for wallet software, and we’d be interested in working with developers of wallet software to smooth out any rough edges.