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
- The provider’s wallet connects to a liquidity server and advertises how much ZEC it can supply.
- A requester locks ETH on Ethereum for an amount of ZEC, at a quote that includes the provider’s spread.
- The server picks a provider that can cover the quote, and the provider’s device receives a request to send.
- The provider approves the send, or the device approves it automatically, up to a limit the provider has set.
- The wallet pays the requester’s shielded address in an ordinary shielded transaction.
- Once the payment is final, the escrow, the amount plus the spread, is paid to the provider in ETH.
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.
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.