Ghoste Docs

Private trading docs for Solana traders.

Ghoste is a private-first meta-aggregator on Solana. It compares routes from major aggregators, ranks them by what you actually receive, then uses Vanish Core to execute through shielded balances and one-time wallets.

Getting started

What Ghoste is

Every Solana aggregator optimizes for price. Ghoste optimizes for price and privacy. The app requests quotes from Jupiter, Titan Prime, and DFlow, compares the net output after real costs, then routes the winning trade through Vanish Core.

Ghoste was built for Solana traders and the Colosseum Frontier Hackathon. The problem we noticed is simple: onchain transparency is useful for settlement, but it also leaks strategy. Wallet trackers, copy traders, and MEV searchers can learn from every public swap. Ghoste is built to protect that trading edge.

The short version: shield funds into a private balance, swap from that balance, then unshield back to your wallet when you want to exit.
Core flow

Shield, swap, unshield

1

Shield

Choose a token and amount, then sign a wallet transaction. Funds move from your public wallet into a Vanish-backed private balance.

2

Swap

Ghoste quotes routes in parallel, chooses the best net route, and asks you to sign authorization. The trade executes from your shielded balance.

3

Unshield

Choose token and amount, authorize the withdrawal, then Vanish settles the funds back to your original wallet.

The target user experience is fast and simple: one clear action, one wallet approval, then automatic balance and history refresh after completion.

Privacy

What is public and what is hidden

Ghoste protects your trade path from public observers. It does not turn the system into a mixer. Deposits and withdrawals remain visible, and Vanish applies integrity checks before private execution.

Visible
Protected
Shield: your wallet sends funds into the Vanish intake flow.
The swap route, selected aggregator, and execution wallet are not linked to your wallet.
Unshield: Vanish settles funds back to your wallet.
The private swap activity between shield and unshield is not exposed as your wallet activity.
Final amounts can appear once funds return onchain.
Wallet trackers cannot follow your live strategy through the trading path.

A successful swap may show a one-time wallet or Vanish-related signer on Solscan. That is expected. The important part is that the public trade is not executed directly from your wallet.

Wallet model

What you sign

Ghoste uses wallet approvals for two different reasons: authorization and settlement. A read-only message proves wallet ownership without creating a Solana transaction. A transaction signature is used when funds actually move.

Action
Wallet approval
Read private balance
Sign a read-only message.
Shield funds
Sign and send a Solana transaction.
Swap privately
Sign an authorization message for Vanish Core.
Unshield funds
Authorize withdrawal, then complete the Vanish withdrawal flow.

Your keypair never touches Ghoste. The frontend asks your wallet to sign. The backend forwards signed payloads to Vanish Core and handles API orchestration.

Execution quality

Why net-output ranking matters

Gross quote is the headline number. Net output is the number a trader should care about. Ghoste ranks quotes after costs such as Vanish fees, priority fees, Jito tips, ATA rent, and slippage buffer.

A route that looks better on gross output can land worse after execution costs. Ghoste ranks the route by what the user actually receives.

Slippage is customizable in the app. Lower slippage gives tighter execution but can fail more often in volatile markets. Higher slippage is more flexible but gives the route more room to move before settlement.

Account state

Balances and history

Private balances come from Vanish Core after the user signs read authorization. Ghoste caches that session so the app can refresh more smoothly after shield, swap, or unshield.

History should update immediately after a successful action. Vanish can expose completed private trade history, but Ghoste also stores its own action history so deposits, buys, and withdrawals can be shown in one place.

1

After shield

Ghoste refreshes private balance after the deposit is committed.

2

After swap

Ghoste refreshes private balances and adds the trade to history.

3

After unshield

Ghoste refreshes private balance and records the withdrawal result.

Debugging notes

Common issues we found

These are the important debugging lessons from building Ghoste locally and preparing it for launch.

1

Empty token list

Trace the flow from Jupiter to backend, backend to API route, API route to frontend, then frontend state. Temporarily disable filtering to find where the list becomes empty.

2

401 from Vanish

Signature payloads must be encoded exactly as Vanish expects. Support confirmed base64 encoding matters for signature-related 401 errors.

3

Failed to fetch

This can mean the backend returned a 500 without CORS headers, the Vanish host could not resolve, or the frontend timed out before a long withdrawal finished.

4

Expired withdrawals

Expired attempts usually mean Vanish created a withdrawal action but the transaction did not complete and commit before the action window closed.

5

Response shape mismatch

When Vanish returned a different field shape, strict backend validation failed. The backend must accept the documented response shape.

Launch notes

What is ready for users

Ghoste is not a mobile-only dApp. The interface is responsive, but the first launch is built around desktop and mobile browser use with Solana wallets.

Early users should expect a focused trading flow: connect wallet, shield funds, compare routes, swap privately, then unshield back to the same wallet when ready. The product is built to make private execution feel close to a normal swap.

The first version is intentionally simple. Balances and history refresh after successful actions, quotes show the estimated USD value, and the interface labels deposits as Shield and withdrawals as Unshield so users understand what is happening.

Ghoste is for traders who want better routes without broadcasting every strategy signal from their public wallet. For the underlying shielded execution layer, read the Vanish documentation.