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.
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.
Shield, swap, unshield
Shield
Choose a token and amount, then sign a wallet transaction. Funds move from your public wallet into a Vanish-backed private balance.
Swap
Ghoste quotes routes in parallel, chooses the best net route, and asks you to sign authorization. The trade executes from your shielded balance.
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.
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.
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.
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.
Your keypair never touches Ghoste. The frontend asks your wallet to sign. The backend forwards signed payloads to Vanish Core and handles API orchestration.
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.
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.
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.
After shield
Ghoste refreshes private balance after the deposit is committed.
After swap
Ghoste refreshes private balances and adds the trade to history.
After unshield
Ghoste refreshes private balance and records the withdrawal result.
Common issues we found
These are the important debugging lessons from building Ghoste locally and preparing it for launch.
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.
401 from Vanish
Signature payloads must be encoded exactly as Vanish expects. Support confirmed base64 encoding matters for signature-related 401 errors.
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.
Expired withdrawals
Expired attempts usually mean Vanish created a withdrawal action but the transaction did not complete and commit before the action window closed.
Response shape mismatch
When Vanish returned a different field shape, strict backend validation failed. The backend must accept the documented response shape.
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.