Screened entry
The MultiHopper client requests a quote, prepares a transfer bundle, and broadcasts signed transactions in order. The entry is public and traceable.
VISIBLE ON CHAINA VPN for Solana: screened at the door, mixed with others in rooms, out through fresh wallets. The room code makes a simple input-to-exit link less clear. Your entry and the rooms themselves remain public.
This animation follows the source's two-layer, six-seat butterfly plan. Thirty-six wallets form six rooms, then regroup into six new rooms. It explains the wiring; the separate devnet lab currently executes one room at a time.
MultiHopper routes to staging first. This segment can still be followed on-chain.
On-chain, the exit has a set of possible room inputs. Other clues may narrow it.
Choose Play or Step to follow a sample route through the code’s stages.
The entry transaction is public. Room transfers can be reconstructed from the chain.
Each room is one all-or-nothing Solana transaction. Equal amounts enter and equal amounts leave, with no direct pairing marked on-chain. Later rooms can combine different participant histories.
The MultiHopper client requests a quote, prepares a transfer bundle, and broadcasts signed transactions in order. The entry is public and traceable.
VISIBLE ON CHAINThe room builder shuffles seat transfers, exit transfers and public exit-table order. A verifier checks exact amounts, destinations and fees before a seat signs.
ATOMIC + VERIFIEDA random wait separates turns. The scheduler can favor participants whose possible origin sets overlap less; room mates can still repeat when choices are limited.
TRAFFIC DEPENDENTThe coordinator is the Solana fee payer. It also funds the nonce account and public exit lookup table. Before signing, a seat checks that it is not the fee payer and that its exact payment, exit and any agreed equal service fee are correct.
That removes a separate user-to-operator fee-payment trail. It does not hide the room inputs, outputs, any fee collector, or the public entry.
The implementation includes a butterfly wiring module and an analyst probability model. The numbers below describe an ideal network with independent participants and equal probability across possible origins. We executed 18-wallet and 36-wallet two-layer routes and a 64-wallet three-layer route on devnet. The values describe possible room paths if participants are treated as independent; they are not measured privacy.
In our 64-wallet, four-seat, three-layer devnet run, a public-chain backward trace reached 4, then 16, then 64 starting seats. A single equal-probability guess is 1/64 under that model. The operator knows the test pairings.
This is one analyst-guess probability under stated assumptions. The devnet butterfly test used one funding source for every wallet. Common funding and coordinator knowledge defeat any claim of 36 independent users.
Designed for people who want a fresh wallet for a legitimate part of their Solana activity while understanding what chain observers can still see.
Separate a wallet tied to your identity from future everyday activity.
Avoid giving every payer a direct line to all later balances and transfers.
Keep a public-facing treasury separate from routine operations.
The source code is the reference for this page. These modules exist separately; this overview is an interactive explanation. The devnet lab connects a wallet for a single room; a complete routed Fast or 30-minute Max mode is not implemented.
A fixed message signature becomes a master seed, then indexed staging and exit wallets. Anyone who obtains that signature could derive the same wallets. The devnet lab asks for a derivation message signature locally and does not send that signature to its service.
A durable nonce starts the transaction. Equal seat transfers flow into a temporary box; equal exits and any agreed equal fee leave in the same transaction. The box holds zero between rooms. Each seat verifies the exact message before signing; the coordinator and box sign too.
The timer scheduler groups ready wallets by room depth, applies randomized waits, and can use origin-overlap scores to choose less overlapping histories. When draining is enabled, its straggler rule can allow smaller rooms, which weaken the crowd.
Chain analysts can reconstruct room inputs and outputs. The entry route stays public. The coordinator currently knows registered seat-to-exit mappings, and network metadata or distinctive spending can reconnect wallets. The implementation does not guarantee anonymity.
src/round/{round,scheduler,mixnet,anonymity}.tssrc/wallets/derive.tssrc/multihopper/{client,deploy}.ts