How it works

Overview

  • Depositors drop a bag of an approved memecoin into the pool and lock some SOL behind it as its value. While the bag sits in the pool they earn a share of the fee from every pack anyone opens, and they can take their bag (or its SOL) back whenever they leave.
  • Buyers pay a price to open a pack, which pulls out one random bag. They then pick one: keep the coins, or take the SOL that was backing the bag instead.

How the odds work: the more SOL you lock behind your bag, the less often it gets pulled, so it sits in the pool longer and earns more fees. Lightly-backed bags get pulled the most. So a big backing is safer and slower, a small backing is cheaper but gets drawn fast.

The risks (read this): when your bag is eventually pulled, you give something up. If the buyer keeps the coins, you lose the bag (you get about 99% of your backing SOL back). If the buyer cashes out, you lose the backing SOL (you keep the bag). Either way you keep the fees you earned along the way, but you can come out behind if the coin's price moved against you while it was locked. Buyers take the opposite risk: the bag you pull can be worth less than you paid, and cashing out only returns 85% of that bag's backing.

Everything below is the exact detail: the price, the odds, and where every lamport goes.

Positions & backing

A depositor deposits a memecoin bag and locks SOL backing alongside it. That pair is a position. Any number of people can deposit the same eligible asset — each deposit is its own position with its own backing.

The backing does three jobs at once:

  • sets the position's draw odds,
  • funds the buyback bid a purchaser can cash out against,
  • is the depositor's own stake, returned on withdraw.

Draw weight is inverse to backing: weight = 1e27 / backing. The more backing a position has, the less often it is drawn, so it sits in the pool longer and earns more fees over time. Backing is always denominated in SOL, never in the memecoin.

Pricing

The live acquisition price is the harmonic mean of all backings, times (1 + surcharge). Because each weight is 1/backing, the expected value of a pull (weightedBackingTotal ÷ totalWeight) collapses to that harmonic mean — so the price tracks the cheap, lightly-backed positions and whales barely move it.

The pull — keep or cash out

A purchaser pays the price and pulls one weighted-random position (lightly-backed ones come out most often). They then choose one, never both:

  • Keep the memecoin, or
  • Cash out~85% of the position's SOL backing.

Randomness comes from Switchboard VRF (a request, then a callback), never a block hash. Requests settle in strict FIFO so a late callback can't reshape an earlier draw.

Fees & payouts — how depositors earn

When a purchaser opens a pack they pay the acquisition price. The whole price is the acquisition fee, and at reveal it is distributed — not paid to any single depositor:

  • 99% to depositors, split equally across every active position via a dividend accumulator (accFeePerShare).
  • 1% to protocol, taken before the split (this is the acquisition cut).

Every active position earns the same amount per play — the position that gets drawn is not special; it collects its equal 1/N share exactly like every other position. Heavily-backed positions earn more total only because they survive more plays before being drawn. Claiming is pull-based: a depositor withdraws accrued fees whenever they want.

A depositor's P&Lis the fees they've earned plus the settlement outcome, measured against their locked backing.

Settlement — where the money goes

A purchaser pays price = EV × (1 + surcharge) plus a flat 0.0005 SOL processing fee (funds the reveal worker's gas). At reveal the acquisition fee is booked: 1% of the price to protocol, the other 99% to all active positions equally. At settle the backing is returned and the purchaser chooses one:

  • Keep — takes the memecoin; the depositor gets 99% of their backing back (1% keep fee to protocol), plus their fee dividends.
  • Cash out — takes 85% of the backing (15% spread to protocol); the memecoin returns to the depositor, who also keeps their fee dividends.

Every branch conserves exactly — money in equals money out — so the pool stays solvent no matter which choice is made. The winning position is chosen with verifiable Switchboard randomness, and each draw emits an on-chain event (the random value, the weight snapshot, the winner, the protocol cut) so anyone can recompute and confirm the draw was fair.

Exact fee model — full transparency

Nothing is hidden. Here is every lamport of fee the protocol touches, who pays it, and where it goes. All values are constants in the on-chain program.

Depositors earn (per pack opened)

  • An equal 1/N share of 99% of the acquisition priceof every pack — paid to all active positions, whether or not you're the one drawn.
  • When your position is drawn and the buyer keeps: 99% of your SOL backing back (you keep the dividends; lose the coin).
  • When your position is drawn and the buyer cashes out: your memecoin back, plus your dividends (you keep the coin).

Protocol revenue (three streams)

  • Acquisition cut — 1% of the acquisition price on every pack opened.
  • Settlement cut — 1% of the backing when the buyer keeps, or the 15% spread when the buyer cashes out.
  • Processing fee— 0.0005 SOL per pack, which funds the reveal worker's transaction gas.

Rounding always favors the pool: any sub-lamport dust that can't divide evenly across positions is swept to protocol, so the pool never pays out more than it collected. If a pack is somehow opened against an empty active set, the whole acquisition fee falls to protocol (it can never be lost).

Worked examples — follow the SOL

Same pack, traced end to end. The numbers are exact so you can see every fee land.

Setup

  • Pool has 4 active positions, each backed by 1 SOL.
  • Harmonic-mean backing (EV) = 1 SOL; surcharge = 10%.
  • Pack price = 1 × 1.10 = 1.10 SOL (+ 0.0005 SOL processing).
  • Position #2 gets drawn; it holds 1,000,000 PEPE backed by 1 SOL.

Step 1 — reveal (identical no matter what the buyer chooses)

Buyer pays1.1005 SOL
Acquisition cut to protocol (1% of 1.10)0.0110 SOL
Processing fee to protocol0.0005 SOL
Distributable to 4 positions equally (1.089 ÷ 4)0.27225 SOL each

All four positions — including #2, the one being drawn — bank 0.27225 SOL in dividends. Nobody is paid the "base" specially.

Step 2a — buyer KEEPS

  • Buyer gets: 1,000,000 PEPE
  • Depositor #2 gets: 0.27225 dividend + 0.99 backing (99%) = 1.26225 SOL
  • Protocol keep-fee: 1% of backing = 0.01 SOL
  • Other 3 depositors: 0.27225 each, keep their positions

Protocol total this pack: 0.011 + 0.0005 + 0.01 = 0.0215 SOL

Step 2b — buyer CASHES OUT

  • Buyer gets: 85% of backing = 0.85 SOL
  • Depositor #2 gets: their 1,000,000 PEPE back + 0.27225 dividend
  • Protocol spread: 15% of backing = 0.15 SOL
  • Other 3 depositors: 0.27225 each, keep their positions

Protocol total this pack: 0.011 + 0.0005 + 0.15 = 0.1615 SOL

Both branches conserve exactly: buyer's 1.1005 SOL + position #2's own 1 SOL backing = 2.1005 SOL in, and 2.1005 SOL out (protocol + dividends + the settled backing) every time — the pool can never pay out more than it took in.

Solvency invariant

Each position's backing is segregated — never pooled, never lent, never used to pay another position. Every buyback is funded by that position's own locked SOL, and credits are conservatively rounded so the pool always collects at least what it pays out. The protocol is solvent by construction, not by statistical tuning.

The allowlist is a security boundary

Only approved memecoins are eligible. Unlike a blue-chip NFT floor, a memecoin's price is live and manipulable by its own creator, who could pump or dump to game the keep-vs-cash decision. So the allowlist is a strict security gate — deep liquidity, locked LP, healthy holder distribution, a manipulation-resistant price source — not curation.

Parameters — live defaults

These are the fee and odds knobs the protocol runs on today. The values below are the deployed defaults — each is configurable per-pool (fees) or per-asset (minimum backing).

ParameterDefaultWhat it does
Surcharge10%Premium added on top of the harmonic-mean backing to set the acquisition price (the price a purchaser pays to open a pack).
Acquisition fee to depositors99% of the priceAt reveal, 99% of the full price the purchaser paid is split EQUALLY across every active position as dividends (the accFeePerShare accumulator).
Acquisition fee to protocol1% of the priceThe protocol takes a 1% cut of the acquisition fee before distributing the rest — earned on every pack opened. (constants.rs ACQUISITION_FEE_BPS = 100.)
Keep fee1% of backingWhen the purchaser keeps the memecoin, the depositor gets 99% of their backing back; the 1% to protocol.
Cash-out spread15% of backingWhen the purchaser cashes out, they receive 85% of the position's backing; the 15% spread to protocol.
Processing fee0.0005 SOLFlat fee paid at purchase to fund the reveal worker's gas. Non-refundable on expiry; accrues to protocol revenue on-chain.
Minimum backing0.1 SOLSmallest SOL backing allowed per position. Configurable per asset. The token deposit only has to be > 0.
Draw-weight scale1e27 / backingFixed-point weight so lightly-backed positions are drawn most often. Not a fee — an odds parameter.

Verify it on-chain

The whole system is one Solana program on mainnet. Your backing lives in your own position account, every draw emits a public event (the random value, the weight snapshot, the winner), and the randomness is Switchboard on-demand VRF, so anyone can independently recompute a draw and confirm it was fair. The addresses below are everything.

The program is upgradeable behind an authority (so fixes and new features can ship); it can never seize a depositor's backing, which is segregated in each position account. Instruction and event layouts are in the on-chain IDL.