Classic sandwich attacks rely on public mempool visibility:
The attacker front-runs a victim’s swap to move price.
The victim executes at a worse rate.
The attacker back-runs to lock in the spread.
Normally, private relays (Flashbots Protect, Jito, MEV Blocker, CoW Swap, etc.) shield you from this by hiding orders from public bots.
But if you control both sides, it is called Self-Sandwich
How Self-Sandwiching Works
Step 1 — The Setup
The Main Wallet places a very large buy/sell transaction in an illiquid token with high slippage tolerance (>20–30%).At the same time, multiple Sandwich Wallets (also controlled by the same actor) line up sandwich trades around that big order.
Step 2 — Bundle Formation
All these transactions (the big trade + the sandwiches) are sent together via a Searcher Wallet. Importantly, the Searcher Wallet is also controlled by the same entity — so both “victim” and “attacker” are actually the same person.
Step 3 — Private Relay Execution
Instead of broadcasting to the public mempool (where bots could front-run), the whole bundle is submitted privately through Flashbots/Jito. A Builder packages the bundle, and the Proposer (validator) executes it atomically in the block.
And there are multiple flavours to it, there can be 2 Variants of Self-Sandwiching
Single Huge Order Variant - A wallet places one very large buy/sell transaction with a massive slippage tolerance. Sandwich wallets then extract around this single order, making it appear like an unlucky whale got sandwiched.
Bot-Like Churn Variant - Instead of one large order, a wallet behaves like a trading bot, executing many small buy/sell transactions back and forth, each with modest slippage tolerance.
Multiple Searcher Wallets (all controlled by the same entity) bundle and sandwich these smaller trades in sequence.
Why this is done
Stealth Cashouts - Big exits in illiquid tokens has huge slippage and obvious dumps afterwards. With self-sandwiching, those exits get sliced across multiple wallets and trades so they look like unlucky orderflow getting farmed by bots.
On-chain proof of loss - Sometimes showing losses is useful for taxes, or to look like a victim instead of a dumper. Self-sandwiching makes those losses look real: a wallet gets hit with bad trades, the chain records the slippage, and everything resembles organic MEV activity.
Simple mixing - Or the reason can be this simple. Route funds across multiple wallets through sandwiches, making value transfers look like ordinary market churn.