SkyhookThe Contracts

Providing Liquidity

In the Skyhook Bridge, a liquidity provider on the Zcash side is simply a shielded ZEC holder who is online. Unlike pooled exchanges and wrapped-token bridges, the Skyhook Bridge never asks providers to deposit or lock their ZEC: the coins stay in the provider’s own wallet until the moment the provider decides to fill a request, and the provider is paid the requester’s escrowed ETH, including a spread, once the payment is final. Because the provider is the sender of a shielded payment, their identity is never disclosed, with or without zero-knowledge proofs.

Why only one side locks

The two chains in a swap play different roles. Ethereum is the scriptful side, the verifier: its contracts can hold funds and release them on conditions, so the requester’s ETH waits there in escrow. Zcash is the scriptless side, the verified: it doesn’t run the bridge’s logic at all, and only has to carry an ordinary shielded payment that Ethereum later checks. The conditions of the swap therefore live entirely on Ethereum, and nothing on the Zcash side needs to be locked, wrapped or handed to a custodian.

This is what removes bridge risk for providers. Pooled systems hold providers’ funds in vaults or under a threshold key, so a provider trusts whoever controls them; a Skyhook Bridge provider never transfers custody of anything until it pays a requester directly.

How a fill works

  1. The provider’s wallet connects to a liquidity server and advertises how much ZEC it can supply.
  2. A requester locks ETH on Ethereum for an amount of ZEC, at a quote that includes the provider’s spread.
  3. The server picks a provider that can cover the quote, and the provider’s device receives a request to send.
  4. The provider approves the send, or the device approves it automatically, up to a limit the provider has set.
  5. The wallet pays the requester’s shielded address in an ordinary shielded transaction.
  6. Once the payment is final, the escrow, the amount plus the spread, is paid to the provider in ETH.
Providing liquidity from a shielded walletInteractive
Exchange rate 1 ZEC = ETH You sell at ETH per ZEC, including your spread
Coinbase spot, 2026-10-15
    ZEC you send
    –
    ETH you receive
    –
    Of which spread
    –
    ZEC locked at any point
    0
    A ZEC holder's device stays connected to a liquidity server and advertises its holdings. Nothing is locked: the only escrow is the requester's ETH on Ethereum. If picked, the device is asked to send, or sends on its own up to the limit you set, and the escrow, which includes your spread, is paid to you once the payment is final. The starting rate is Coinbase's spot price when this site was built; drag the meter to see a fill at other prices. Dollar values always use Coinbase's ZEC and ETH spot prices from the same build, whatever the meter shows. Gas is ignored.

    Apart from staying online, the provider does nothing; the server builds the intent and drives the fill. The life of a swap describes the same steps from the contract’s side.

    What providers earn and risk

    A provider earns the spread written into the quote. This is market-making rather than free yield: a provider who fills a request has sold ZEC at the quoted rate, and carries the price risk of having done so. The spread is what pays for that risk.

    In bespoke mode, each requester states how far below the spot-equivalent amount they will accept, and a provider’s spread is the discount it charges within that tolerance. A higher discount earns more on each fill but leaves fewer requesters willing to accept it. The projection below explores that trade-off under assumed traffic.

    Projected daily earningsInteractive
    Advanced: traffic assumptions
    Expected earnings per day ETH
    Typical range (10th–90th)
    Requests filled per day
    ZEC sold per day
    Per year, at this rate

    Each simulated day draws every request's size and the discount below spot its requester will accept from the normal distributions under Advanced. You can fill a request if its requester accepts at least your price below spot and you still hold enough ZEC that day; the server routes you your share of those, and requests above your auto-accept limit go through only when you approve. You earn your discount on each fill. Each day starts with the full advertised amount, as if you restocked ZEC at spot overnight for free; in practice restocking costs something, and the ZEC you sell becomes ETH. Prices are Coinbase spot, 2026-10-15; the traffic numbers are assumptions to explore, not measurements, and price risk on the ZEC you sell is not included.

    Automatic approval means the device holds keys that can spend. The per-send limit bounds what an automatic approval can pay out, and providers who prefer can approve every request by hand.

    The chain never learns who a provider is, but the liquidity server does see what a provider advertises and how its device connects. Milestone 5 delivers a standard and binary for self-hosted liquidity nodes, so that providers need not trust a server run by someone else.

    What requesters risk

    A provider could accept a quote and then never pay, leaving the requester’s ETH in escrow until the request’s refund time passes. The requester loses no funds, only time, and short deadlines with the payment’s expiryHeight keep that time bounded. Where reputation or Sybil attacks become a problem, providers can also choose to form yield pools on the shielded side, something Skyhook makes possible on Zcash for the first time.

    Standing orders

    Standing orders work only on the Ethereum side: a provider selling ETH locks it once in a standing order and then quotes against it. Zcash has no way to set up a standing order, and ZEC providers don’t need one, since they lock nothing.

    See also