Privacy is a property of systems, not primitives. SWIRL stacks three independent layers — identity, flow, settlement — each engineered to close a different oracle.
Every payment that crosses the public graph leaves a metadata trail: node identities, channel positions, timing signatures. SWIRL is engineered so that this trail never forms in the first place.
# Offer anatomy — a static code with no identity inside.
$ swirl offer create --silent --label "donations"
lno1zcp8x4vq...k9w7
├─ signing pubkey ← ephemeral, derived per-offer
├─ blinded path ← intro hops + ECDH-blinded tail
└─ node id ∅ (never encoded)Four routes. Each one strips a power from the coordinator.
Invoice resolution reveals the receiver's node. Gossip reveals its channels. Channel closes reveal its UTXOs. Chaining exactly these public signals, researchers have already linked 46% of the network's nodes back to on-chain entities.
SWIRL breaks that chain at every link.
payer scans static code lno1zcp8x4...k9w7fresh one-time invoice via onion message3 blinded hops — sender ↔ receiver severedsubmarine swap — in ≠ out on-chainsettled — no node, no route, no trace