Security

Nothing of ours to break into.

WiSP runs no program, holds no admin key and keeps no server that can touch a key. Your positions are ordinary Solana wallets derived on your device. What is left to secure is the code that runs in your browser, so that is what gets tested, reviewed and run on mainnet before every release.

531checks pass before a release shipsbefore every release · 56 suites
168adversarial review rounds, every finding closed with a regression testand counting
0keys, phrases or wallet maps held by WiSPby construction, not policy
2 of 3signatures to move treasury funds, with a 1 SOL/day worker limit enforced on chainSquads, verifiable below

What we never have

Five things that cannot leak, because they never reach us.

Each one is structural. There is no setting, no promise and no employee between you and it.

Your recovery phrase

Twenty-four words, generated in your browser. Every key WiSP ever uses, for the pool and for every position wallet, is derived from them on your device. The phrase is the whole account; back it up and nobody else can rebuild it. One-time Receive addresses, when that feature is on, use indices recorded in your encrypted backup as well: keep that backup current.

How to checkWatch the network tab while creating or unlocking an account: no request carries the phrase, a password or a secret key. Keys are derived in a worker inside your browser.paths m/44'/501'/9281'/0' (pool) · …/1'/i' (positions)

Your position keys

Every position lives in its own wallet, derived at a published path and used only on your device. The sell is your signature from that wallet. No key is uploaded, escrowed, split or mirrored.

How to checkKeys page → Show key on any wallet: its private key opens the same wallet in Phantom or any wallet app, with no WiSP and without your phrase. Or rebuild the account from the phrase in a second browser: the same wallets appear, without any WiSP server involved.measured on mainnet: the whole pool read and a funded account rebuilt in under two minutes

Your wallet map

Which deposit funded which wallet, and which wallets are yours, is written down in one place: the encrypted vault on your device. WiSP's server is static files plus one referral endpoint; it has no table of users and no way to build one. The parties the Privacy page names (your RPC provider above all) see the public addresses you ask them about and could correlate them; that is why the RPC is yours to choose.

How to checkRead what the server stores on the Privacy page. There is no device lease or session service, so nothing counts who is active.

A program over your funds

WiSP deploys no on-chain program. Resting funds sit in a shielded pool with twenty audits that we do not run; open positions sit in your wallets. There is nothing of ours on chain to pause, cap, upgrade or exploit.

How to checkInspect any WiSP transaction: the programs are the pool's, the launch curve's, the route finder's and Solana's own. None is ours.

A relayer in your trade

Buys and sells are built in your browser, checked instruction by instruction, and sent through the RPC you chose. No server of ours sees the transaction before the chain does, so none can reorder, delay or front-run it.

How to checkEvery buy and sell shows a checked receipt before you sign: fee recipient, amount, guards and venue, read from the bytes you are about to sign.

Who can stop you

Every design has people who can stop you. The honest ones write the list down.

Here is ours. Positions: nobody. Resting funds: the pool's team, under the controls they publish. Us: nothing that touches your money.

PowerOver your positionsOver resting funds (the pool)Held by WiSP
Pause depositsnobodythe pool's team; terms not published by themno
Refuse or delay a withdrawalnobodythe pool's relayer, which signs exits and screens; the proof binds recipient and amount, so it cannot redirectno
Cap a size or a tokennobodynone publishedno
Freeze a positionnobody, except a token's own issuer for that tokennot applicable; the pool holds SOLno
Choose your route or your momentnobody; you sign from the wallet that holds the positionnot applicableno
Change the rulesnobody; a wallet is a walletthe pool's multisig can upgrade its program; 20 audits and formal verification stand behind the current oneno
Raise the fee on a tradenobody; the fee is an instruction inside the transaction you sign, shown before you sign itthe pool sets its own exit feeonly for future trades, visibly
Read your activityyour RPC sees what it is asked; WiSP has no server in that paththe pool's indexer serves the same public notes to everyoneno
Push code to your keys——yes: we serve the app, like any web app. Mitigation is open; see below

Checked before every release

531 checks, six areas, one rule: a release ships only when all of them pass.

The suite runs before every release. A release gate then inspects the shipped bundle itself and refuses one that carries a test switch, an open acceptance gate or an unreplaced feature flag.

147

Account and keys

Phrase to keys, the encrypted vault, password unlock, wallet-signed shields, a second device linked and kept in step, the privacy profiles, every state the account can be in.

59

Transaction inspection

Every instruction a buy or sell carries is decoded and checked against the plan you approved: fee recipient and amount, the guards, the venue, the route.

64

Referrals and treasury

Invite proofs, the payout worker's arithmetic, the on-chain spending limits, the treasury address, the holder fee tiers.

53

Pool notes and proofs

Note encoding, blinding, selection, deposit construction, withdrawal recovery after an interrupted step, recovery quotes.

151

Review regressions

One test per finding from the adversarial rounds, so a fixed defect cannot come back unnoticed.

53

Hosting

Host routing, headers, body limits, the public-RPC fallback, pacing against a slow provider, the proving-file download, the token catalog, the token lookup and the swap rail's address and quote checks.

Adversarial review

168 rounds of trying to break it.

Each round, an independent reviewer that has not seen our fixes is given the code and one goal: find a way to lose a user's funds, link a user's wallets, or make the app lie. It returns a verdict and ranked findings. A round ends only when every finding is fixed and has a test, and the next round starts from the new code. The reviewer is a separate AI model run with no access to our repository history; it is not a substitute for the human audit below, and we do not present it as one.

Things it caught before you could: a two-device case that showed "Up to date" on a spent balance; a note identifier leaking in a refresh; a venue check that stranded a position when its launch curve completed; a top-up that counted an allowance as spendable cash. All closed, all with regression tests.

Run on mainnet

Tested with real SOL, not a devnet.

Runs on the live chain, with the app you will use. Transaction references are published at go-live.

Recovery with funds in the pool

A fresh account shielded SOL, was wiped, and was rebuilt from its 24 words in a clean browser. The rebuild read every note in the pool, found the balance, funded a position, bought, sold and swept it home.

ResultEvery pool note read in under two minutes. Balance recovered to the lamport.mainnet · desktop

The fee lands where the page says

Every buy and sell carries its fee as two transfers: 70% to the published treasury, 30% to the buyback wallet. Measured on chain.

Result0.5% base and 0.25% referred, received by the treasury vault to the lamport.mainnet

A referral payout, inside its on-chain limit

The payout worker moved a referrer's reward from the referral vault and refilled it from revenue, both through Squads spending limits that cap what a stolen worker key could ever move.

ResultPayout and refill confirmed; the worker's key can move at most 1 SOL a day from the pool vault and 3 SOL a week from revenue, only to the pool vault.mainnet

Load and edge

The whole public surface runs on one small machine behind a global edge. It was loaded from the outside while the limiter was probed in parallel.

ResultAbout 60 page loads a second; p95 1.7 s at 50 concurrent; zero server errors in the window. Rate limits held under a parallel burst.from outside the host

The pool we stand on

Built on the largest shielded pool on Solana. Not ours.

Privacy Cash

Resting funds sit in Privacy Cash: Groth16 proofs built in your browser, a Poseidon note tree, nullifiers against double spends, public source, a trusted-setup ceremony with named outside contributors, and audits from several firms with formal verification on top. We chose a pool run by a party that is not us, so that nothing of ours sits in the row that matters. Its powers are listed against us in the table above.

Pinned proving files

The circuit and proving key your browser uses are fetched from the pool's published release and verified by size and content hash before they are used. A changed file is refused, not loaded.

Pinnedcircuit2.wasm · 3,208,099 B · fe752ced413ed3a47b5bfa94199728ccb103c6eacircuit2.zkey · 16,461,496 B · 75c13038c7dff9ddeea5b43fa08fca545394bfa3git blob hashes of the upstream release

NEAR Intents, for other chains

Arriving from Zcash, Bitcoin, Ether or USDC, or leaving to them, goes through NEAR Intents (its 1Click service), called from your browser with no WiSP key and no WiSP server in between. An exit is an ordinary pool withdrawal to the deposit address it quotes; an entry lands at your funding address from a swap. It is a separate business under its own terms: it can hold, screen or refund a swap, and WiSP cannot intervene in one. The app names it on the screen where it is used, and never routes a trade through it.

How to checkThe service's documentation and termsquote, deposit address and status only

Where the fees go

A multisig you can read, with a worker that cannot run away.

Treasury: 2 of 3

Fees are paid by the transaction you sign to vault 0 of a Squads multisig. Moving them takes two of three signers. Referral rewards are paid from vault 1 by an automated worker whose key is allowed exactly two things, enforced by the Squads program, not by us: up to 1 SOL a day out of vault 1 to anyone, and up to 3 SOL a week out of vault 0 into vault 1 only.

The fee is in the bytes

There is no fee setting on a server. The 0.5% (0.25% with an invite, for 30 days) is two transfer instructions inside the transaction, 70% to the treasury and 30% to the buyback wallet, built in your browser and shown on the receipt before you sign. A different recipient or amount fails the inspection and is never signed.

How to checkOpen any WiSP buy on an explorer: two system transfers next to the trade, to the vault above and to the buyback wallet.

30% of every fee buys back $WiSP

The buyback wallet receives 30% of every platform fee inside the trade that pays it. A service that holds only that wallet's key buys $WiSP with it on PumpSwap about every six hours and burns every token it bought. It can spend only what the trades sent it.

How to checkThe buyback walletEvery buy and burnon chain, readable by anyone

The token

$WiSP: one mint, one deployer, one lock.

Every address that matters, and where to read it.

The only WiSP token

Mint USEu5qroduzuvrSZfvs3xM1MwyU83joapQF5LMyWiSP, created on pump.fun through kontract.fun by the deployer fTQGbMHMt4MeanYpZp8PoecvWCzRHWitVVJEY5aWiSP, in one transaction that also bought 25% of the supply. Mint and freeze authority: none. Any other token called WiSP is not ours.

24.5% locked for one hundred years

245,000,000 WiSP sit in a Jupiter Lock escrow the deployer created right after the launch: cancel mode none, so nobody, including us, can cancel it; everything unlocks at a cliff one hundred years after creation; the recipient is vault 0 of the treasury multisig. The multisig can re-point the recipient to a successor treasury and can do nothing else to it.

How to checkThe escrowThe lock transactionProgram Locp…qjn (Jupiter Lock); read recipient, cancel mode and cliff from the account.on chain

0.5% to the team wallet

5,000,000 WiSP sent in the same transaction as the lock to the fomo.family team wallet 4BepgEZjxxGtzyJBjUoxAyFh3p1HZchfdZ2sX3BvUa9A.

How to checkThe team walletThe transferOpen the lock transaction on the deployer wallet: one token transfer next to the escrow creation.on chain

The treasury's keys

The multisig CL2NZ7GpDbQkHqhwVLvAkECNopL5HvYGWKhQTiyAECF9 needs 2 of 3 signers: 13mnth9zxXnT757yBhXD55Qy2gzjFeeDGCHTh3uSWiSP, LvA7V1y4DwL5o1di9k8XQERm1ju7zKEz2c4YUK1WiSP, fsFPPMxATYPyJMMRwuzaVgmHNv1Jz3AvMvhe9CaWiSP. The payout worker 2GUzPU9GxkPaN3AxoayGeppgSf2jNqCBtoASFAhZWiSP holds a key that the Squads program lets do exactly two things: pay up to 1 SOL a day from vault 1 Dooj5zFzeH5Qbz3gE375uJQZMhupqtsCnkYNJUTKrhRd to anyone, and move up to 3 SOL a week from vault 0 to vault 1.

Not done yet

What this page cannot claim today.

We would rather you read it here than discover it.

AUDITNo third-party audit of the WiSP client has been performed. The pool it uses is audited; WiSP's own code is not. Audit firms are approached as the platform gains traction; until then, size positions as you would on any unaudited client.
SOURCEThe client source is not yet published, so you cannot rebuild the app and compare hashes. Until it is, "we serve the app" is the one row above where you trust us the way you trust any website.

Found something?

Tell us first.

If you find a way to lose a user's funds, link a user's wallets, or make the app lie, we want the private report before the public one, and we will say in writing what we did about it. Write to security@usewisp.trade. The build hashes are published with go-live.

Trust is a receipt, not a promise.