What Leaks, and to Whom
What each participant reveals in a Skyhook swap or deposit, to whom, and when, including the leaks that come from users’ own setups.
Step through a flow
What Skyhook reveals
These follow from how the Skyhook Bridge works today, and are the same for every user:
- The requester’s receiving address and the amount are written into the request, so they are public on Ethereum from the moment the ETH is locked. Milestone 3 removes the address with a NIZK. Until then, parties who need more privacy can use an offline NIZK and agree on the commitment between themselves.
- Which Zcash transaction paid a swap. The claim proves a specific transaction, so its ID appears on Ethereum next to the swap. Its contents stay encrypted, and its sender stays unknown.
- A costly link to the next spend. Because the payment’s note openings are public until Milestone 3, heavy computation could in theory link that note to the transaction that later spends it.
- The Ethereum addresses involved. Ethereum is a transparent chain: the address that locks ETH, the address a provider is paid at, and any address a P2SC contract pays out to are all public, with their full histories.
What never appears anywhere, for anyone: viewing keys, spending keys, and the address a shielded payment was sent from. A liquidity provider is a sender, so its Zcash identity and holdings beyond what it advertises are never revealed.
What your own setup can leak
Skyhook is a powerful tool, but how you use it matters if privacy is important to you. Some leaks are out of Skyhook’s hands, because they come from how a user holds and moves funds before and after a swap. They are worth knowing anyway:
| Leak | Why it happens | What helps |
|---|---|---|
| Your Ethereum history | The address you lock from, or are paid at, is public and carries everything it has ever done | Use a fresh Ethereum address for swaps |
| Transparent ZEC | Funds sent from or to a transparent address show their amounts and addresses on the Zcash chain | Keep funds shielded end to end |
| Moving funds out of Orchard | Orchard is now withdrawal-only; moving funds through the turnstile into Ironwood reveals the amount | Migrate before you swap, ideally in amounts that don’t match the swap |
| Your wallet’s server | A light wallet’s server sees its queries and, unless you use Tor, its IP address | Tor, or a full node of your own |
| The liquidity server | A provider’s server sees what it advertises and how it connects | Tor, or a self-hosted node |
| Timing and amounts | A lock and a payment of matching size at similar times can be correlated by an observer of both chains | Vary amounts and timing where you can |
| Exchanges and custodians | Anything you deposit with a service that knows who you are is linked to you there | Treat swaps as no more private than the endpoints around them |
Which shielded pool a user’s funds sit in is decided by their wallet, not by Skyhook, which never sees their keys or balances. The Zcash documentation’s guide to addresses and value pools explains the differences.
See also
- Milestone 3: Full Privacy, including what a leaked viewing key would expose by contrast
- Providing Liquidity
- Policy and Compliance
- Ironwood and Branch Identifiers