/00  Solana  ·  a launchpad

Launch adeclared bundleon Solana.

Sheaf is a launchpad on the pump.fun curve. A creator's token graduates in the transaction that creates it, and the creator's block sits in a vault that declares its size and caps how fast it can leave.

Schedule
  1. SHEAF mints on pump.fun
  2. First Sheaf bundle
The first bundle is funded with the builder’s own SOL, under the same caps as any creator’s. Both dates are scheduled, not fixed.
Nothing is deployed yet. Any creator can open a bundle, with their own SOL and nobody else's: the creator deposits the whole cap in the transaction that creates the bundle, so every later deposit, from anyone, is refused. A launch costs about 92 to 150 SOL.
§ 01

What a bundle is

The situation

A bundle is a block of a new token's supply, bought at the mint before anyone else can bid.

From outside the launch, three things about it are unpublished: that it exists at all, how large it is, and how fast it is able to leave.

What this declares

A Sheaf bundle publishes all three, in the transaction that creates it.

Not a commitment to hold. A rate written once into an account anyone can read, in a program with no upgrade authority, so it cannot be raised afterward.

The rest of this page is the cap, the fee a trader pays, the four things anyone can check, and the list of what this is not. The numbers that do not flatter this are on the page at the same size as the ones that do.

§ 02

The speed limit

The object behind this page is a sheaf: many filaments, one band. The band is the cap. It is one number, written once when the bundle is created, into an account no instruction rewrites. The vault sells above a reference that can only move up, and the rule is a published function, not a promise. Everything below is what those two sentences cost.

How fast the block can leave
Share of the declared block still in the vault at the fastest settings the program accepts: an outflow cap of 2,500 bps per window, the most it allows, and a window of one fixed hour counted from launch, the shortest it allows. A creator can only slow it: a lower cap or a longer window stretches the line. The light line is the fastest exit the program permits, measured from launch: a quarter can leave at once, nothing more until window 1 opens, then a straight line to zero at four windows. Two paths draw on that allowance, and the vault's own selling is capped again at a twenty-fifth of it.
fastest exit the program permits the vault's own selling, capped separately no cap in code (illustrative)
Hover a window to read it.
Source: flow_cap_bps = 2,500 against a basis fixed at launch, window_len_secs = 3,600, and the vault's own sell cap trade_cap_sell_bps_window = 100, all from docs/IMPLEMENTATION.md §3.4. At most 25 percent leaves in any one window, and every window is a fixed span of at least one hour counted from launch. That is not a bound on any 60 minutes: a sequence timed across a window boundary can move close to two quarters inside an interval just under one hour, measured at 1.9994 times the allowance. Over any span, outflow is at most one allowance plus one allowance per window elapsed. What this bounds is the vault, not the holder: once tokens are redeemed into a wallet no program constrains them, so four windows after launch is the soonest the block can be out of the vault, not a limit on what happens next. The unconstrained case is illustrative: no program constrains an ordinary launch bundle, so there is no measured line to draw.
Table
Windows after launchFastest exit, least still heldIf only the vault sold
0, just after launch75%99%
175%99%
1.562.5%98.5%
250%98%
325%97%
40%96%
No cap in code, any window0%0%
/01 The rule

The rule is a published function, not a promise.

Every bundle runs sell-only mode: the vault's trading rule sells above a reference price and never buys. That reference ratchets up on sustained strength and has no path back down. Every parameter is written at creation, the step is a pure function of on-chain state plus a price anyone can post, and the caller is anyone. So at any price you can compute, from state at a given slot, whether the vault will sell and how much. Nobody decides it at the time. The program also contains a buy branch. It refuses to create a bundle in any other mode, so that branch never runs, and the mode sits in one byte anyone can read.
/02 The rate

At most a quarter of the declared block can leave in any one window.

A window is a fixed span counted from launch, at least one hour and at most one day, written at creation. On every bundle the whole block cannot leave in under three hours from its first outflow, and the vault cannot be empty before four hours after launch. The allowance counts every way out: the vault's own selling and a holder redeeming draw on the same allowance. The vault's own selling is capped again, and far tighter: never above one percent of the block per trade or per window, on any bundle. Both gates fail closed, with no partial fill, so a request over the line does not get part of what it asked for.
/03 The funding

The creator funds the whole bundle, alone, when it is created.

A launch costs about 92 to 150 SOL of the creator's own. The program refuses to create a bundle unless the first deposit equals the cap, so the bundle is full from its first transaction and every later deposit, from anyone, fails. The three allocations are declared at creation and sum to the cap exactly. The program refuses a cap above 150 SOL and a tier-clearing allowance above 5 SOL. The worked example sits at both ceilings: 86.50 SOL of launch, up to 5 SOL of tier clearing and 58.50 SOL held as quote, 150 SOL in all. Graduation itself measured 86.07 SOL, so the launch cap carries about 0.43 SOL of margin against a change in the curve fee. The launch buy is exact-out, so it never spends more than graduation needs, and the unused part stays in the vault.
/04 The basis

The cap measures against the block declared at launch, not against what is left.

A cap measured against the current balance shrinks as the balance does, so the drain never finishes and the published unwind is meaningless. A fixed basis keeps it linear and the unwind finite.
/05 The authority

The program is specified to deploy with no upgrade authority.

The deploy script revokes that authority right after deploy, before any bundle exists, reads the account back, and stops if it reads as anything other than None. That is what makes the sentence above worth reading. It also means a bug cannot be patched.
/06 The exit

A holder redeems for a slice of two balances, in kind.

No price, no oracle, no value the program has to honor. The exit path imports neither the strategy, the oracle, nor the venue, and a test confirms it by running a successful redemption with all three absent from the transaction. A holder who redeems then holds ordinary tokens in an ordinary wallet, and nothing in this program has any say over them after that.
/07 The shares

Shares mint only inside a closed funding window.

One share unit per unit deposited, all of it minted to the creator, because the creator is the only depositor. The mint authority is revoked at launch, so the supply is fixed before anything trades. Harvested fees raise every holder's claim instead of being paid out, so there is no distribution step. The one transfer out at a harvest is the protocol fee: 10 percent of the creator fees other traders paid, to a wallet compiled into the program.

Full unwind is a computed figure, not a promise.

ceil( vault_base ÷ ( cap_basis_base × flow_cap_bps ÷ 10,000 ) ) windows
It comes to at least four windows after launch on every bundle, and exactly four at the fastest settings the program accepts, when nobody has donated. Anyone can send base tokens to the vault with a bare transfer, and those tokens sit outside cap_basis_base, which extends the true unwind. The program cannot refuse an incoming transfer, so the figure is published live from two on-chain numbers rather than printed here as a constant.
§ 03

The step at 420 SOL

This part is about the fee a trader pays. pump.fun takes a cut of every trade and splits it three ways, and the coin creator's leg steps at one exact line. A token that has just graduated sits a whisker under it. Both numbers were invisible until they were read off chain.

The coin-creator leg against notional market cap
Read off the PumpSwap fee account, one step per tier. The horizontal scale is logarithmic. Seventeen tiers in the middle of the schedule were not decoded, so they are not drawn.
coin-creator leg, decoded tiers where a fresh graduate lands
Hover a step to read it.
Source: PumpSwap fee_config PDA 5PHirr8joyTMp9JMm6nW7hNDVyEYdkzDqazxPD7RaTjx, seeds ["fee_config", AMM], 4,097 bytes, decoded 2026-09-28 and reconciled against the lamport deltas of a live swap. Graduation constants read from pump.fun's own Global account the same day. The live rate is read from that account at transaction time, never from this chart.
Table
Tier, market cap fromCoin-creator leg
0 SOL30 bps
420 SOL95 bps
1,470 SOL90 bps
2,460 SOL85 bps
3,440 SOL80 bps
4,420 SOL75 bps
9,820 SOL70 bps
Tiers 7 to 22not decoded
93,330 SOL8 bps
98,240 SOL5 bps
Where the whole 120 bps goes, above the first tierLeg
Liquidity providers, every tier20 bps
pump.fun's protocol leg, every tier5 bps
The coin creator, at the first tier95 bps

Below 420 SOL the split is different and worse for the creator: liquidity takes 2 bps, pump.fun takes 93, and the creator takes 30. That bottom tier is a penalty band on small pools, and it is where every fresh graduate starts. The creator leg is paid to the bundle's vault. At each harvest, 10 percent of the part other traders paid goes to Sheaf's protocol fee wallet, fixed in the program; the vault keeps the rest, and all of what its own trades paid.

Graduation lands near 410.9 SOL, just under the boundary.

About 2.2 percent of price separates a fresh graduate from the step. One instruction, clear_tier, makes a single capped purchase targeting 430 SOL, and it fails closed: if the spend would exceed its cap, or the buy would land short of the target, the whole transaction reverts and the vault spends nothing. Until that succeeds the creator leg is 30 bps, not 95. Measured on a mainnet fork from a fresh graduate, the purchase to 430 SOL costs 1.99 SOL, inside its 5 SOL cap. The program refuses a tier purchase above 5 SOL, or a target above 450 SOL of market cap, on any bundle.
/08 The admin

This whole schedule is a third party's editable parameter.

The fee account carries a mutable admin. pump.fun can set every creator tier to zero in one transaction, and nothing in this program can prevent that, detect it in advance, or route around it. Watching the account and publishing the last-read rate is the entire response.
§ 04

Four things anyone can check

Everything above is a claim until you read it yourself. Four calls settle all of it, and not one of them requires running our software. Nothing is deployed, so there are no addresses to fetch yet. These are the checks, published before the addresses exist.

  • Which trades were the vault's? Every trade a vault makes carries a marker address derived from the program id and that bundle's address, and the marker appears in nothing else the program does. One call lists every transaction that touched it. Keep the ones that succeeded and whose instruction is this program's crank or tier clear, and what remains is every swap that bundle's vault ever made, chronologically, with no cooperation from us. The second filter is required: anyone can list the marker in an unrelated transaction, and those are not trades. You can separate the vault's volume from everyone else's and check the arithmetic yourself.
    ExpectedgetSignaturesForAddress(
      findProgramAddress(
        [b"vault_trade", bundle],
        PROGRAM_ID))
    → every vault swap, once failed
      and foreign calls are dropped
  • Can the code be replaced? Fetch the program's data account and read its upgrade authority. If it reads as anything else, stop: every other sentence on this page is conditional on that one field, because an upgrade authority can replace the program that the rest of this describes.
    Expectedupgrade_authority → None
  • Can it take anyone else's money? Fetch the bundle account and read two fields: the cap and the amount deposited. They are equal from the transaction that creates the bundle, because the program refuses to create one unless its creator deposits the whole cap, so every later deposit, from anyone, fails.
    Expectedescrowed_quote →
      tvl_cap_quote
  • What is the cap, right now? Fetch the bundle account and read three fields: the rate, the window length, and the basis the rate measures against. Those are the published speed limit, and dividing the vault balance by the product of the rate and the basis is the live unwind figure, in windows.
    Expectedflow_cap_bps → 1 to 2,500

The exact recipe is in the litepaper, with byte offsets.

Reading the raw bytes at published offsets means the check works with curl and xxd rather than with our client. A verification that requires running our software is not a verification. A test serializes a known struct and indexes the bytes, so the build fails if a field moves and the published recipe goes stale.
§ 05

What this is not

Stated plainly, because the alternative is stating it later. The full version, with the figures, is in the litepaper.

  • /09 Nothing deployed

    This describes a specification, not a program you can call today.

    No program is deployed, no bundle exists, and no bundle has launched a token. Every figure here describes the design, and the on-chain figures are read from other people's accounts, not from ours.
  • /10 No outside money

    Every bundle is its creator's own SOL, and no one else can deposit.

    The program refuses to create a bundle unless its creator deposits the whole cap in the same transaction, so the cap is full before anyone else can act, and every later deposit fails. Any creator can launch their own bundle that way; nobody can fund someone else's. A bare transfer can still send tokens to a vault, and it mints no shares.
  • /11 No audit

    Nobody outside the build has read the code.

    An audit at the scope this deserves costs more than the whole project has, and the decision was to accept that rather than cut the part that needs reviewing. A test matrix is the only defect control the program gets, and whatever it does not exercise ships unexercised. Every bundle's capital is its creator's own. The first is the builder's, funded with his own SOL under the same floors as any creator's.
  • /12 No payout

    Fees raise the claim per share. There is no distribution step.

    Nothing is sent to holders on a schedule or on any event. A position changes hands or is redeemed in kind, and that is the whole surface. Taking income means reducing the position. The only transfer out at a harvest is the protocol fee, 10 percent of the creator fees other traders paid.
  • /13 No control of the rails

    The creator fee belongs to pump.fun, and its config has a mutable admin.

    Every creator tier can be set to zero in one transaction by a party this program has no relationship with. Read § 03 before treating that line of income as durable.
  • /14 No favorable case

    The modeled median outcome for a creator is a loss.

    The mean clears break-even only because of a single row in 336, and the median ticket is down. Operating income is not monotonic in success either: the creator leg steps down as the pool grows, so a bigger token pays less per unit of volume. It was modeled before the 10 percent protocol fee, which can only lower it. Both results are in the litepaper rather than softened here.