Live on Solana · program v1.0 · 2,048 mouths

It takes 1% of every meme someone else buys.

LEECH is a fee mouth you attach to somebody else's wallet. From that slot on, every meme that wallet buys pays 1% straight into my lips, split in the same transaction: half to whoever attached me, most of the rest burned.

I cannot be sold and I cannot be sent. I only get fatter, and the one way off me is salt, which costs twice everything I have already taken.

CA soon
MOUTH #0417ON jeetmachine.sol
Mouth #0417, fully attached, already chewing on the next fill
+0.00
Skimmed$14,208
StageSwollen
Salt price$28,416
Mouths attached1,043

of 2,048 that will ever exist

$LEECH burned by cuts418,600

Bought back in the slot that paid

Salted and gone61

Each one a small bonfire

Price of the next mouth3,042

$LEECH · epoch 3 of 7

01 · MECHANISM

Four instructions. That is the whole program.

No staking page, no points, no vault to babysit. You open a mouth, the wallet keeps trading, and the cut settles itself on every fill.

01

Attach

Pay the epoch price in $LEECH and point me at any wallet that bought a meme in the last 24 hours. I open inside the same slot, and the owner finds out on their next buy, like everybody does.

attach(target: Pubkey) → mouth_id
02

Skim

One percent off every meme that wallet buys, taken in the same transaction before the coins land. A wallet that trades all day feeds me all day without ever holding a single leech.

skim(fill) → fill.amount × 0.01
03

Fatten

I grow on what I take, never on time: flat, fed, swollen, gorged. Nothing shrinks me back, so a fat mouth on the wall is really a receipt for how hard that wallet has been buying.

stage = f(total_skimmed)
04

Salt

Only the host wallet can burn me off, and only by paying twice everything I have skimmed out of it. All of that burns, the wallet goes clean, and somebody usually attaches the next mouth before dinner.

salt(mouth_id) ← 2 × total_skimmed
Me, latched onto a wallet mid-buy, drinking the coins before they land
SKIM · EVERY FILLThe host presses Buy, the coins leave the wallet, and one in a hundred never makes it to the other side.
A host finally paying for the salt, and me regretting every fill
SALT · 2× EVERYTHING TAKENThe only thing I am afraid of, and it is priced so that most hosts decide to keep me instead.
02 · FEE ROUTE

Where every cut goes, in the same slot.

The fee never sits in a contract waiting for somebody to claim it. It is split inside the transaction that took it.

Example fill · jeetmachine.sol
$1,000.00
Meme buy, routed through any aggregator
↓ skim(fill) · 1.00%
$10.00
$5.00$4.00$1.00
50%

To whoever attached it

Paid to the wallet that opened the mouth, fill after fill, for as long as I stay on. Attach me to yourself and this half burns instead.

40%

Bought back and burned

Swapped into $LEECH and sent to the incinerator in the same slot as the trade that paid for it. Salt burns on top of that.

10%

The jar

Keeps the program, the indexer and the wall running. Whatever the jar does not spend by the end of the epoch, the jar burns.

03 · SIMULATOR

Pick a wallet. Watch me eat.

Same maths the program runs on chain: 1% per fill, 50 / 40 / 10, stages at $1k, $10k and $100k skimmed.

Host wallet
Average buy$220
Buys per day40
Days attached30
Attach to my own wallet
Host goes quiet for a week
STAGE · FEDDAY 30Your mouth, sized by what it has taken
Flat< $1k
Fed$1k
Swollen$10k
Gorged$100k
Total skimmed from host$0
To you · 50%$0
Burned · 40%$0
The jar · 10%$0
Host's salt price$0

04 · STAGES

Drawn by the program, sized by your trading.

I read my host out loud. A gorged mouth is not an insult, it is a receipt for how much that wallet has been buying.

Flat: freshly attached and a bit embarrassingFlat and pale

Flat < $1,000

Freshly attached and honestly a bit embarrassing to look at. Nobody panics at this stage, which is the mistake, because this is the only window where salt is cheap.

Fed: settled into the order flowFed and pale

Fed $1,000

I have found the order flow and settled in. The host notices every fill comes back a little smaller than the quote and decides it must be the network.

Swollen: visible in the host's analyticsSwollen and pale

Swollen $10,000

Now I show up in the host's own analytics tab. They have done the maths twice, posted about it once, and bought again anyway.

Gorged: curled up, done growing, never done takingGorged and pale

Gorged $100,000

Fully grown and curled up. Most hosts stop fighting here and start calling me their cost of doing business.

05 · THE WALL

Sorted by fattest, not by best.

Every wallet carrying a mouth, heaviest first. None of them attached it themselves, and all of them are still buying.

Wallets with a mouth  Replay · read 0s ago
#HostStageSkimmedSalt price
Program logSlot 291,804,112
    06 · THE LADDER

    2,048 mouths. The price only climbs.

    Every 256 mouths the next one costs 15% more, and it never comes back down. Early wallets are cheap to put a mouth on. Late ones are a statement.

    07 · DOCUMENTATION

    Docs

    Everything the program does, in the order it does it. If it is not written here, I do not do it.

    Docs / Getting started / Overview

    Overview

    LEECH is a Solana program that lets anyone attach a fee mouth to someone else's wallet. While the mouth is attached, every meme buy that wallet makes pays a 1% cut, and the cut is split inside the same transaction.

    A mouth is a non-transferable account bound to its host. It has no owner who can sell it, no marketplace listing and no withdraw function. It exists to do one thing per fill, and it does it in the same slot.

    The short version

    • You pay the epoch price in $LEECH to attach a mouth to a host wallet.
    • Every meme the host buys pays 1%: 50% to you, 40% burned, 10% to the jar.
    • The mouth grows through four stages by total skimmed, never by time.
    • Only the host can salt it, at 2× everything it has taken. All of it burns.
    Supply is fixed at 2,048 mouths. When the last one is attached, the only way a new mouth opens is when an old one gets salted.
    Docs / Getting started / Attaching a mouth

    Attaching a mouth

    Any wallet that has bought a meme in the last 24 hours is a valid host. The program checks the host's recent fills, charges the current epoch price and opens the mouth in the same slot.

    import { Leech } from "@leech/sdk";
    
    const leech = new Leech(connection, wallet);
    const price = await leech.epochPrice();       // 3,042 $LEECH at epoch 3
    const mouth = await leech.attach("jeetmachine.sol");
    
    mouth.id;        // 417
    mouth.stage;     // "flat"

    Rules

    • One mouth per host. A wallet that already carries one cannot take a second.
    • Attaching to your own wallet is allowed, but your 50% burns instead of paying you.
    • The attach price is burned in full.
    Docs / Getting started / How the skim works

    How the skim works

    The skim runs on fills, not on intents. When a host wallet buys a meme through any route, the program takes 1% of the input amount before the output lands, and pays the three legs in the same instruction.

    // one fill, 1,000 USDC in
    cut      = 1000.00 × 0.01   // 10.00
    attacher = cut × 0.50       //  5.00 → paid
    burn     = cut × 0.40       //  4.00 → swapped to $LEECH, burned
    jar      = cut × 0.10       //  1.00 → jar

    Sells are never skimmed. I only feed on appetite.

    Big fills feed faster. The cut is a flat percentage, so a wallet that buys $9,000 at a time fattens a mouth in a week that a $45 scalper takes a year to reach.
    Docs / Lifecycle / Stages

    Stages

    A mouth's stage is a pure function of the total it has skimmed. There is no decay and no reset. A gorged mouth on the wall is a public receipt of how much its host has been buying.

    StageSkimmedWhat it means
    FLAT< $1,000Fresh. The only window where salt is still cheap.
    FED$1,000Found the order flow. The host blames the network.
    SWOLLEN$10,000Shows up in the host's own analytics tab.
    GORGED$100,000Done growing. Never done taking.

    Pale

    A host that goes seven days without a single meme buy turns its mouth pale. Nothing is lost and the stage stays the same. The colour comes back on the next fill.

    Docs / Lifecycle / Salting

    Salting

    Salt is the only instruction that removes a mouth, and only the host wallet can sign it. The price is twice the mouth's lifetime skim, paid in $LEECH at the current rate, and the entire amount burns.

    const quote = await leech.saltQuote(417);   // 2 × 14,208 = 28,416
    await leech.salt(417);                    // mouth closed, slot freed

    A salted mouth frees its slot in the supply. In practice somebody is usually waiting with the next one.

    Docs / Lifecycle / Fee routing

    Fee routing

    LegShareDestination
    Attacher50%Wallet that opened the mouth. Burned if attacher = host.
    Burn40%Swapped to $LEECH in the same slot and burned.
    Jar10%Program, indexer, the wall. Unspent balance burns each epoch.

    Nothing accrues and nothing has to be claimed. If a leg cannot settle, the whole fill reverts and the host keeps their buy, which so far has not cheered anybody up.

    Docs / Reference / The ladder

    The ladder

    The attach price starts at 2,000 $LEECH and rises 15% every 256 mouths, across eight epochs.

    EpochMouthsAttach price
    Docs / Reference / Constants

    Constants

    These live in the program and cannot be changed by anybody, including me.

    SKIM_BPS1001% of every meme buy
    SPLIT50 / 40 / 10Attacher / burn / jar
    MAX_MOUTHS2,048Hard supply cap
    EPOCH_SIZE256Mouths per price step
    EPOCH_STEP+15%Price increase per epoch
    SALT_MULT2×Of lifetime skim, burned whole
    PALE_AFTER7 daysWithout a meme buy
    HOST_WINDOW24 hHost must have bought a meme
    Docs / Reference / Program interface

    Program interface

    Four instructions and one read. The SDK wraps all of them, but nothing stops you calling the program directly.

    attach(target: Pubkey)            // payer → burns epoch price
    skim(fill: FillAccount)           // invoked on every host buy
    fatten(mouth: u16)                // stage recomputed after skim
    salt(mouth: u16)                  // host only → burns 2× skimmed
    
    read Mouth {
      id: u16, host: Pubkey, attacher: Pubkey,
      skimmed: u64, stage: Stage, pale: bool, opened_slot: u64
    }

    Program ID and the SDK package are published together with the contract address.

    08 · OPEN A MOUTH

    Somebody is buying memes right now.

    Every slot you wait, that 1% goes nowhere. $LEECH is what you attach with, and what every cut buys back and burns.

    Gorged, curled up, already looking at the next wallet