Relayers and fees
Why a relayer
A wallet that pays its own gas has a history. The relayer sends sends and withdrawals on your behalf, so a fresh address can receive from the pool without holding HYPE first. It sees the proof and the encrypted outputs, and the proof binds its fee and the recipient, so it cannot change either.
The relayer checks every request before it pays gas: at most 16 KB, a known pool, strict parsing, a proof that names this relayer, unspent nullifiers, a known root, and a passing gas estimate. It does not store requests. Like any server it can see the IP of a request, so use your own network protections if that matters to you.
Fees
| Action | Lethe fee | Relayer fee |
|---|---|---|
| Shield | none | none, you pay gas |
| Send inside the pool | 0.3% of the relayer fee | yes, from the note |
| Create or claim a pay link | 0.3% when it is claimed and leaves | yes, from the note |
| Withdraw | 0.3% of what leaves the pool | yes, from the note |
The exit fee is 0.3% today (exitFeeBps 30), with a hard cap of 1% in the contract that no function can exceed. It is taken in the pool's asset on everything that leaves the pool, including the relayer's fee, so a user cannot skip it by naming their own wallet as the relayer.
The relayer fee is quoted live: 1.5x the gas cost of 1.6M gas at a 0.2 gwei floor, with a floor in each asset (0.0002 HYPE, 0.02 USDC). A USDC withdrawal also pays for the small amount of HYPE forwarded to the recipient. Quotes move with gas and the HYPE price, and you see the fee before you confirm.