Skip to content
Launch App >

The relayer is a critical component for maintaining privacy. Without it, withdrawals would leak information about the recipient.

On Solana, every transaction requires the fee payer to:

  1. Sign the transaction
  2. Pay SOL for transaction fees

If you withdraw directly, your recipient address:

  • Appears as the transaction signer
  • Must have SOL to pay fees
  • Creates an on-chain link between the withdrawal and your address

This defeats the purpose of private transfers - anyone can see that the withdrawal recipient signed the transaction.

A relayer is a service that:

  1. Receives your signed withdrawal proof
  2. Submits the transaction on your behalf
  3. Pays the transaction fees
  4. Receives a small fee from the withdrawn amount

Now the transaction shows:

  • Signer: Relayer’s address (not yours)
  • Fee Payer: Relayer (not you)
  • Recipient: Your address (just receives tokens, no signature required)
With RelayerWithout Relayer
Recipient appears as just a token receiverRecipient appears as transaction signer
No SOL needed in recipient walletSOL required to pay fees
No on-chain link to your signing keyDirect link to your key
  1. You generate a ZK proof proving you can withdraw
  2. You specify the recipient address in the proof
  3. Relayer verifies the proof is valid
  4. Relayer submits the transaction, paying gas
  5. Program verifies the proof on-chain
  6. Tokens transfer to your specified recipient
  7. Relayer fee is deducted from withdrawn amount

The relayer deducts a fee from the withdrawn amount to cover:

  • Solana transaction fees
  • Service operation costs
  • Profit margin

See the Fee Structure page for current fee rates.

The Turbine.cash relayer exposes two endpoints:

EndpointPurpose
POST /relayWithdraw tokens to any address
POST /relay_swapWithdraw and swap via Jupiter

See the API Reference for detailed documentation.