Fees and the relayer
The two fees Sombra charges, who pays the Solana costs, and why you should let the relayer submit.
Sombra charges two fees, and neither is a percentage. You also need someone to pay Solana's own costs, and normally that is the relayer rather than you.
The two fees
The protocol fee is set by the pool. It is a flat amount per action — one price for a deposit, one for a transfer, one for a withdrawal. Sending more money does not cost more.
The relayer fee is what you pay to have someone else submit your transaction. You choose it. Zero is allowed.
Both are paid in a single fee token, chosen once when the deployment is created and never changed after. That token will be wrapped SOL, so you can read the prices below as SOL.
| Action | Protocol fee |
|---|---|
| Deposit | 0.001 SOL |
| Transfer | 0.001 SOL |
| Withdraw | 0.001 SOL |
These are the devnet prices, and devnet prices can change without notice. The mainnet prices will be published here before they are switched on.
Why one token, on its own leg
Your fee is paid from separate notes, in the fee token, not out of the money you are moving.
That keeps the fee from leaking anything. If a fee came out of the amount you sent, the fee would tell an observer which token you moved and roughly how much. Paying it on its own leg in one public token says nothing about the payment it belongs to.
The price is fixed when you start
The fee is stamped onto your action when it opens. If the pool changes its prices while your payment is in flight, yours settles at the price you were quoted.
You are never charged more than you agreed to, and a price change cannot strand a payment that has already started.
The relayer
The relayer submits your transaction for you. It pays Solana's gas, and it takes the relayer fee you set.
Use it for everything except deposits. There are two reasons.
The first is privacy. If you submit the transaction yourself, you pay for it with your own Solana account, and that account is public. Anyone watching can see your public wallet paying for an action at that moment. Let the relayer submit, and your Solana key never touches it — there is no public account of yours attached to the payment at all.
The second is practical. You do not need any SOL. A new wallet with nothing but shielded notes can still pay.
Deposits are the exception
A deposit moves your own public tokens into the pool, so it has to be signed by the account holding them. That is you. The relayer cannot deposit for you, and it never will.
The deposit is also the one step that is public anyway, so there is less to protect. See Security.
What your relayer fee buys
A higher fee lands your payment sooner. The relayer spends a share of what you pay on Solana's priority fee, so on a busy chain a larger fee buys a better position — up to a cap, because past a point more spending stops helping.
If you set the fee to zero, the relayer still pays a small priority fee out of its own pocket so your payment lands. That is deliberate: a free payment that never confirms would be worse than a free payment that confirms slowly.
The pool sets a ceiling on the relayer fee, so a wallet cannot be talked into overpaying.
You do not have to stay online
Once your action is open, the rest does not need you.
Verifier nodes sign their own votes, but anyone can pay to put a vote on chain. The final step has no gatekeeper at all — anyone can finalise an action that has reached quorum. In practice the relayer and the nodes handle it.
So closing your laptop after you hit send does not strand the payment.
Solana's own costs
Separate from Sombra's fees, every transaction costs Solana gas, and some accounts need rent while they exist.
When the relayer submits, it covers all of this and charges you the relayer fee instead. When you submit a deposit yourself, you pay it directly.
There is no refund or reclaim to track. What you pay is what it costs.
Next: Keys — how one phrase produces every key, for the curious.