> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hidemytx.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Private Send (Solana)

> Shield SOL and SPL tokens into a private UTXO pool and send them without revealing the link between sender and recipient.

Private Send on Solana is powered by **PrivacyCash**, a UTXO-based shielding protocol built on top of Solana. When you shield funds, they are deposited into an encrypted on-chain UTXO pool. Withdrawals from that pool break the public link between your wallet address and the recipient — the chain shows only that funds entered and exited the pool, not who sent to whom.

## Supported tokens

| Token | Decimals | Description         |
| ----- | -------- | ------------------- |
| SOL   | 9        | Native Solana       |
| USDC  | 6        | USD Coin (SPL)      |
| USDT  | 6        | Tether USD (SPL)    |
| ZEC   | 8        | Zcash (SPL wrapped) |
| ORE   | 11       | ORE token           |
| STORE | 11       | STORE token         |

## How it works

<Steps>
  <Step title="Connect your Phantom wallet">
    Open HideMyTx and navigate to **Private Send (Solana)**. Click **Connect wallet** and approve the connection in Phantom. Any Solana wallet adapter-compatible wallet will work, but Phantom is the recommended option.
  </Step>

  <Step title="Sign to derive your encryption key">
    After connecting, click **Sign & continue**. Phantom prompts you to sign the message `Privacy Money account sign in`.

    This signature is used to deterministically derive a private encryption key for your PrivacyCash UTXO set. It does not authorize any transaction or spend any funds — it is a read-only cryptographic operation.

    <Note>
      Your signature is cached in your browser so you only need to sign once per wallet address per browser. Subsequent sessions load automatically without prompting you again — unless you clear your browser's site data.
    </Note>

    <Warning>
      Clearing browser data (cookies, site storage, or `localStorage`) removes the cached signature. Without it, HideMyTx cannot scan or spend your shielded UTXOs. If you plan to clear browser data, first withdraw all shielded funds back to a regular Solana wallet.
    </Warning>
  </Step>

  <Step title="View your balances">
    Once the session is initialized, HideMyTx scans your UTXO set and displays two balances:

    * **Public wallet SOL** — the on-chain balance visible to anyone
    * **Private (shielded) balance** — the balance of UTXOs you own inside the PrivacyCash pool

    Select a token from the dropdown to view its private balance. The scan runs against available Solana RPC endpoints with automatic fallback.
  </Step>

  <Step title="Top up your private balance (shield)">
    Enter the amount you want to shield, select the token, and click **Top up private balance**.

    The transaction goes through several stages:

    1. Scanning existing UTXOs
    2. Generating a ZK proof
    3. Signing the transaction in Phantom
    4. Confirming on-chain

    Once confirmed, your shielded balance updates. You need at least **0.002 SOL** in your wallet to cover the network fee for any deposit.
  </Step>

  <Step title="Send privately">
    Enter the amount to send, the recipient's Solana address, and click **Private send**.

    1. Scans your spendable UTXOs
    2. Generates a ZK proof selecting the UTXOs to spend
    3. Submits the transaction with the recipient address embedded in the proof

    The recipient receives funds directly without any onchain link to your wallet address.

    <Note>
      You must top up your private balance before you can send. The **Private send** button is disabled until you have a positive shielded balance for the selected token.
    </Note>
  </Step>
</Steps>

## Public vs. private balance

Your **public wallet SOL** balance is your standard Solana account balance, visible on any block explorer. Your **private (shielded) balance** lives inside the PrivacyCash UTXO pool and is only readable by someone who holds your encryption key.

When you shield funds, they move from your public balance into the pool. When you send privately, the pool pays out directly to the recipient. Your public balance is used only to cover the deposit and gas fees, not to fund the private send.

## Two-step flow

The intended flow is always:

1. **Top up** — Shield funds from your wallet into the PrivacyCash pool
2. **Private send** — Spend from the shielded pool to a recipient

You cannot skip the top-up step. If you attempt to send more than your current shielded balance, an error is shown.

## Error reference

| Error                                                | What to do                                                             |
| ---------------------------------------------------- | ---------------------------------------------------------------------- |
| `Insufficient wallet balance for this top up`        | Add more SOL or the selected SPL token to your wallet before shielding |
| `Need at least 0.002 SOL in wallet for network cost` | Ensure your wallet holds at least 0.002 SOL for transaction fees       |
| `No spendable private balance yet`                   | Wait for your top-up transaction to confirm, then retry                |
| `Withdrawal amount too low`                          | Increase the send amount; PrivacyCash enforces a minimum withdrawal    |
| `Network/RPC issue`                                  | A Solana RPC endpoint returned an error; wait a few seconds and retry  |

## Frequently asked questions

<AccordionGroup>
  <Accordion title="Can I use any Solana wallet?">
    HideMyTx uses the Solana Wallet Adapter, so any compatible wallet works.
  </Accordion>

  <Accordion title="Is the encryption key stored on any server?">
    No. The encryption key is derived entirely  from your wallet signature. Neither the key nor the signature is ever sent to HideMyTx's server.
  </Accordion>

  <Accordion title="Can the recipient tell where funds came from?">
    No. The recipient sees only a standard Solana transaction from a PrivacyCash pool address. There is no on-chain connection between your wallet and the recipient.
  </Accordion>
</AccordionGroup>
