Solana privacy research / Interactive prototype

Go in visible.
Leave harder
to follow.

A 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.

01 / ENTRY02 / COHORTS03 / EXIT
ROUTE TOPOLOGYMODEL / NOT LIVE
01 01 01 02 02 02
Your public entry Possible paths Fresh exits
Model view: a tracker sees every room, but a full equal-amount transaction does not label its input-to-exit pairing.
EQUAL AMOUNTS✳ATOMIC ROOM✳SHUFFLED ORDER✳NEW COHORTS✳COORDINATOR PAYS NETWORK FEE✳EQUAL AMOUNTS✳ATOMIC ROOM✳SHUFFLED ORDER✳
01 THE EXPERIENCE

Watch the trail
branch.

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.

BUTTERFLY MODEL / 36 WALLETS → 2 LAYERS

Your route begins here.

00 / 06DEMO COUNTDOWN
◎Wallet
↗Entry
1Layer 1
✳Rewire
2Layer 2
?Trace
↗Exit
PHASE 01 / PUBLIC ROUTECHAIN-VISIBLE
YOUsenderMHroute 1MHroute 2◎staging

MultiHopper routes to staging first. This segment can still be followed on-chain.

PUBLIC SEAT ADDRESSES
YOUABCDE
6 equal payments
✳
ONE ATOMIC
BOX TRANSACTION
BOX: ZERO BETWEEN ROOMS
FRESH EXIT ADDRESSES
??????
6 equal payouts
◎COORDINATOR→PAYS NETWORK FEEyour seat does not
ABCYOUDE
↗
◎FRESH EXIT

On-chain, the exit has a set of possible room inputs. Other clues may narrow it.

ENTRY PUBLICLAYER — / 2PAIRING DIRECT BEFORE ROOMS
WHAT CHANGES

Choose Play or Step to follow a sample route through the code’s stages.

WHAT A TRACKER STILL SEES

The entry transaction is public. Room transfers can be reconstructed from the chain.

Paused · no wallet connected
02 THE MECHANISM

Privacy comes from
the crowd.

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.

01 / THE DOOR

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 CHAIN
02 / THE ROOM
● ● ●✳○ ○ ○

Equal in. Equal out.

The 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 + VERIFIED
03 / THE NEXT TURN

Regroup and repeat

A 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 DEPENDENT
03 A SMALL DETAIL THAT MATTERS

Your wallet does
not pay the room’s
network fee.

The 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.

COORDINATORNETWORK FEE↘
ONE ROOM TRANSACTION6 equal inputs
→ 6 equal exits
Any service fee is equal per seat
PARTICIPANTSIGNS AFTER
VERIFYING
↗
04 THE MATHEMATICS

How many paths
remain possible?

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.

TESTED 64-WALLET GRAPH · CONDITIONAL MODEL
1.56%

One guess among 64 possible starting seats.

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.

1 room4 possible origins
2 layers16 possible origins
3 layers64 possible origins
3 ROOMS × 6 · 2 LAYERS5.56%1 / 18 in the conditional model
6 × 2 LAYERS2.78%1 / 36 in the ideal model
6 × 3 LAYERS0.46%1 / 216 in the ideal model
Not “99.54% privacy.”

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.

05 WHO IT IS FOR

A public wallet
shouldn’t be a
public biography.

Designed for people who want a fresh wallet for a legitimate part of their Solana activity while understanding what chain observers can still see.

◎

Public wallet holders

Separate a wallet tied to your identity from future everyday activity.

◫

Payment recipients

Avoid giving every payer a direct line to all later balances and transfers.

✳

Teams and creators

Keep a public-facing treasury separate from routine operations.

06 UNDER THE HOOD

Clear mechanism.
Clear limits.

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.

01Wallet derivation+

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.

02Atomic room and signatures+

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.

03Timers and changing cohorts+

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.

04What remains visible+

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.

SOURCE BASISsrc/round/{round,scheduler,mixnet,anonymity}.tssrc/wallets/derive.tssrc/multihopper/{client,deploy}.ts