posl docs
poslFees and costs

Fees and costs

Who pays what for each action: the pool fee in ZEC, the Solana network fee, and the small rent that marks a note as spent.

Pool fees (in ZEC)#

ActionPool feeGoes to
Shielddeposit_fee_rate, 0 in the parameter filesReward budget and relayer
Send out, exitwithdrawal_fee_rate, 25 bps (0.25 %)60 % reward budget, 40 % relayer
Lock, unlockUp to max_relayer_fee (0.01 ZEC); the app sends 0 todayRelayer
ClaimsNone
Exit to ZcashWithdrawal fee plus the bridge's own cost (see Exit to Zcash)Pool, relayer, bridge

The deposit and withdrawal fee rates are capped in the program at 100 bps (1 %), whatever the admin sets, and any change waits before it applies. See Admin powers and limits.

Solana costs (in SOL)#

Every transaction pays the base network fee of 5,000 lamports per signature. Some actions also create small accounts that stay on chain forever as markers: a spent-note marker is 9 bytes, and closing one would let the note be spent again. The figures below were measured on 19/09/2026 (docs/COUTS.md): real transactions on a local validator, then the same accounts priced at the mainnet rent read live from two RPC endpoints, (128 + size) * 5,080 lamports. A marker costs 695,960 lamports on mainnet (953,520 on a local validator, which charges 6,960 per byte).

ActionWho pays the SOLAccounts createdCompute used / reservedMainnet lamportsUSD
Shield (deposit)Your wallet2 markers241,517 / 282,7451,396,9200.156
Private transfer, mergeRelayer2 markers237,065 / 277,6251,396,9200.156
Lock (opens the end epoch)Relayerepoch + 2 markers252,776 / 295,6932,738,0400.306
Lock (end epoch already open)Relayer2 markers243,922 / 285,5111,396,9200.156
Send out, exit to ZcashRelayer2 markers279,216 / 326,0991,396,9200.156
+ recipient token account, if missingRelayer165 bytes21,933 / 30,2231,493,4400.167
Stake claim (per note, per epoch)Relayer1 marker188,615 / 221,908700,9600.078
Volume claim (1 to 4 credits)Relayer4 markers219,872 / 257,8532,788,8400.312
UnlockRelayer1 marker182,778 / 215,195700,9600.078
Open an epoch (not yet open)Keeper136 bytes16,104 / 23,5201,346,1200.151
Finalize up to 8 epochsKeepernone21,070 / 29,2315,0000.001
Initialize the pool (once)Adminstate, 3 trees, epoch 0, vault65,103 / 79,86970,256,3207.858

USD at 111.85 dollars per SOL (Coinbase and Kraken, 19/09/2026). The compute reserved per transaction is the simulated use plus 15 % plus 5,000; the priority fee follows the median of the last 150 slots on the written accounts, capped at 20,000 micro-lamports per unit, and that median was 0 on the day of the measurement.

What you pay in total

In SOL: only your deposit, 0.0014 SOL. After it, no relayed action takes a lamport from you (tested). In ZEC: the 0.25 % withdrawal fee when you send out or exit. Lock, unlock and claims cost 0 ZEC.

A deposit has no input note, but the circuit has two input slots, so it still creates two markers. A volume claim with one credit creates four. Changing this needs a circuit change and a new ceremony; it is a proposal in docs/COUTS.md, not decided.

Why the relayer pays#

If your own wallet paid the Solana fee of a withdrawal or a claim, it would sign it and appear on chain next to your private action. The relayer signs instead and is paid back in ZEC from the withdrawal fee. An action counts as paid when the relayer receives at least 21,000 ZEC base units (0.00021 ZEC, the measured cost of a withdrawal to a new wallet); everything else is free and draws on a daily SOL quota, 1 SOL by default (see Relayer API).