Core Feature

Gasless Transactions

Pay transaction fees from a different wallet than your main one. Your primary wallet never appears as the fee payer on-chain, adding an extra layer of privacy.

The Problem

On Solana, every transaction requires a fee payer. By default, this is the sender's wallet. This creates a privacy leak:

Standard Transaction:
fee_payer: Your_Main_Wallet  ← Visible on-chain
signatures: [Your_Main_Wallet]
instructions: [transfer 100 SOL to Recipient]

Problem: Your main wallet is now linked to this transaction

The Solution

SHADE allows you to designate a separate wallet (typically a burner) as the fee payer. Your main wallet signs the transaction intent, but the fee comes from elsewhere.

Gasless Transaction:
fee_payer: Burner_Wallet  ← This appears on-chain
signatures: [
  Main_Wallet,    ← Signs the intent
  Burner_Wallet   ← Pays the fee
]
instructions: [transfer 100 SOL to Recipient]

Result: Observers see Burner_Wallet, not your main wallet

How It Works

1

Create a Prepaid Burner

Create a burner wallet and fund it with a small amount of SOL (0.1 SOL is enough for hundreds of transactions).

2

Set as Fee Payer

Designate the burner as your active fee payer. All subsequent transactions will use this wallet for fees.

3

Send Transactions

When you send a transaction, both wallets sign itβ€”your main wallet for authorization, the fee payer for the fee.

4

Rotate as Needed

When the fee payer runs low or you want fresh privacy, create a new burner and destroy the old one.

Privacy Comparison

Standard Transaction

  • β€’ Fee payer = sender (visible)
  • β€’ Main wallet exposed
  • β€’ Transaction history linkable
  • β€’ Balance deducible

Gasless Transaction

  • β€’ Fee payer = burner (disposable)
  • β€’ Main wallet hidden
  • β€’ Burner can be destroyed
  • β€’ No link to your identity

Technical Implementation

Solana transactions support separate fee payers natively. SHADE leverages this:

async function sendWithFeePayer(
  transaction,
  mainKeypair,
  feePayerKeypair
) {
  // Set fee payer to burner
  transaction.feePayer = feePayerKeypair.publicKey;

  // Get recent blockhash
  transaction.recentBlockhash = await getBlockhash();

  // Both wallets sign
  transaction.sign(mainKeypair, feePayerKeypair);

  return await sendTransaction(transaction);
}

Use Cases

Cold Wallet Transactions

Keep your cold storage address hidden while still transacting.

Treasury Operations

DAO treasuries can transact without revealing the main wallet.

Whale Privacy

Large holders can move funds without signaling to the market.

Combined with Burners

Ultimate privacy: burner as sender + different burner as fee payer.

Cost Efficiency

Solana transaction fees are incredibly low:

~0.000005
SOL per transaction
~200,000
transactions per SOL