Baseline hygiene
Layer 2: the transport-independent client discipline every wallet owes, on top of whatever scenario it picks. It’s §5 of the network privacy analysis.
Assume an ideal transport. The destination still receives, for every request, its content and its arrival time. These countermeasures are transport-independent: they work in every configuration and are the wallet's responsibility regardless of which scenario is chosen. A light wallet resumes each sync from the height where it last stopped, so consecutive sessions chain. Which endpoints are fingerprintable depends on the range. For the routine catch-up it is only the start: the end equals the chain tip, shared by every client syncing at that moment. Rescan ranges positioned by the wallet's own notes expose both endpoints. The countermeasure below therefore quantizes both edges of every requested range; for a catch-up, rounding the end up to the tip changes nothing.
You don’t have to build these duties yourself: the nym-swizzle-zcash library implements both, with parameters taken from ZIP 318: the quantization grid nests with its 144-block anchor grid, and the broadcast delays are its transfer-scheduling distribution. See implementing baseline hygiene, and how the policy layer composes with the transport crates.
Start-height quantization
V3 · vs L2Since the linking key is the requested range (V3, content), above all its start height, the fix is to make ranges collide: quantize every requested range to a network-wide grid, so that every client resuming anywhere in the same grid cell emits exactly the same request.
The cost is re-downloaded cover blocks only: for catch-ups above a day, typically 1.5x to 2x the blocks actually needed, never more than 3x; below a day the cost is bounded in absolute terms, at most one grid cell (~0.5 MB of compact blocks).
Implemented by nym-swizzle-zcash — use the library →
Broadcast hygiene and scheduling
V2 · vs L2Broadcast timing is a V2 (timing) leak at the destination. In-transit mixing does not remove it (the destination still observes wall-clock arrival time), so the wallet must decorrelate broadcasts itself.
Implemented by nym-swizzle-zcash — use the library →
Parameters
V3 + V2 · vs L2The parameters are part of the protocol, not per-wallet tuning: the mechanism works by every wallet emitting the identical rule.
The library: implementing baseline hygiene → · How it composes with the transport crates →
These measures apply in every configuration of the site and are the wallet’s responsibility regardless of transport.