SkyhookStart here

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.

Never revealedViewing keys, spending keys, the sender’s address, and a provider’s holdings beyond what it advertises.
Public by designWhat a request offers and asks for, the ETH locked and paid, contract addresses, and the fact that a shielded transaction happened.
Depends on your setupYour Ethereum address and its history, your IP address as seen by liquidity and wallet servers, and which Zcash transaction paid a swap.
Shouldn’t be publicThe requester’s receiving address and the payment’s openings, and a costly link to the note’s next spend. Milestone 3 removes all of them.

Step through a flow

What leaks, and whenInteractive

    Choose a role and step through the flow. "Public" is what anyone watching Ethereum or Zcash can see; "Counterparty" is what the other party and the services you connect to learn; "Private" is what nobody learns. Earlier items stay listed, because nothing is ever unlearned. Colour says whether that is acceptable, not who sees it. "After Milestone 3" is on by default: what its NIZK removes is crossed out in blue; untick it to see today's beta.

    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:

    LeakWhy it happensWhat helps
    Your Ethereum historyThe address you lock from, or are paid at, is public and carries everything it has ever doneUse a fresh Ethereum address for swaps
    Transparent ZECFunds sent from or to a transparent address show their amounts and addresses on the Zcash chainKeep funds shielded end to end
    Moving funds out of OrchardOrchard is now withdrawal-only; moving funds through the turnstile into Ironwood reveals the amountMigrate before you swap, ideally in amounts that don’t match the swap
    Your wallet’s serverA light wallet’s server sees its queries and, unless you use Tor, its IP addressTor, or a full node of your own
    The liquidity serverA provider’s server sees what it advertises and how it connectsTor, or a self-hosted node
    Timing and amountsA lock and a payment of matching size at similar times can be correlated by an observer of both chainsVary amounts and timing where you can
    Exchanges and custodiansAnything you deposit with a service that knows who you are is linked to you thereTreat 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