Documentation

How EarnPad works.

What a vault does with a deposit, how the coins are split, what happens inside the launch transaction, and the limits the program will not bend. Written against the program's source.

Overview

An EarnPad vault collects USDC and puts it straight into Jupiter Lend, where it earns as jlUSDC. Depositors can take their principal back whenever they like. What the vault spends is only what that position earned on top of everyone's principal.

When the interest reaches the target the creator set, anyone can fire the launch. The program creates the coin on pump.fun, priced in USDC, and spends the whole raise on the first buy of its curve. Depositors split those coins by how much they parked and for how long, and from then on they also receive the coin's pump.fun creator fees.

No admin. The program has no owner, no config account and no fee. Each vault is an account of the program, and its funds sit in token accounts owned by that vault's own address.

Lifecycle

PhaseWhat can happen
FundingDeposits until the deadline, withdrawals any time. The launch once the interest covers the target. The creator can cancel at any time, anyone after the deadline.
LaunchingThe interest has been taken out and the weights frozen; the coin is created in the same transaction, so this phase normally lasts no time at all. If pump.fun refused the create for a whole day, anyone could abort and the raise would go back to depositors.
LaunchedCoins can be claimed, creator fees collected and claimed, principal withdrawn.
CancelledThe interest is owed back to depositors on their weights. Principal is withdrawn as usual.

Depositing and withdrawing

A deposit moves USDC from your wallet into the vault's USDC account and, in the same instruction, into Jupiter Lend. The program checks that every unit went in and that jlUSDC came back for it. Your principal is recorded in your own record, a small account at ["dep", vault, you] that you pay rent for on your first deposit.

Withdrawing

While the vault is funding, a withdrawal takes exactly the principal you ask for out of Jupiter Lend and leaves the interest where it is, because the interest belongs to the launch. After the close, the vault's remaining position is frozen against the remaining principal, so a withdrawal also carries whatever that position earned since. A depositor who waits a year after the launch to withdraw gets that year.

Leaving does not erase the weight you have already built. That weight measures interest you have already handed over, so you keep your share of the coins even if you withdraw before the launch.

How allocation is worked out

Weight is principal multiplied by seconds held, kept up to date in constant time: the vault keeps a running total and each record keeps its own, both brought forward whenever they are touched. The clock stops at the close.

Every deposit earns the same rate in the same pool, so weight is exactly proportional to the interest each depositor contributed. That closes the obvious attack for free: ten times the money parked for the last day of a six month run is under 6% of the total.

Depositors split what the launch bought, minus the creator's cut, in proportion to weight. Every later stream (a launch's leftover, creator fees, a cancelled vault's interest) is paid on the same weights through an accumulator, so claiming often or rarely makes no difference.

Sizing a target

Interest is slow. At the rate Jupiter publishes today, ..., a year of $100,000 earns about .... The launch form shows how much has to be deposited to reach a target by the deadline you pick.

pump.fun's USDC curve starts at $4,292 of virtual USDC and fills at a little over $12,000 of buys. A raise below that is spent in full on the first buy. A raise above it fills the curve, which then graduates to PumpSwap, and the part the curve could not take goes back to depositors in USDC.

Opening a vault

The creator names the coin, uploads an image (pinned to IPFS through pump.fun), and sets a target, a deadline, a per-depositor cap and a cut for themselves. The creator puts in no money, only rent for the vault account and its two token accounts. They can add their own deposit in the same transaction, which is an ordinary deposit in every way.

What the program refuses

LimitWhy
Creator's cut at most 10%A creator who can take the launch will.
A per-depositor capOne wallet must not be able to own a launch.
Deadline 7 to 365 days outMoney is never committed open-endedly.
Target above zero, name 32 bytes, ticker 10What pump.fun accepts.

None of the terms can be changed after the vault exists.

The launch transaction

The site sends two instructions in one transaction, and anyone can send them:

  • close asks Jupiter Lend to refresh its share price, keeps enough jlUSDC to cover every dollar of principal plus a tenth of a cent, redeems the rest, and checks that what came out covers the target. The weights freeze here.
  • launch creates the coin on pump.fun, priced in USDC, with the vault's own address as its creator, checks that the curve pump.fun made is the one expected, and spends the raise on the first buy.

Nobody can buy ahead of that first buy: the coin does not exist until the same instruction creates it. The sender supplies the new coin's address and pays pump.fun's rent for a new coin, about 0.031 SOL.

Measured on a mainnet fork: close and launch together use about 380,000 compute units and 1,067 bytes with the lookup table.

Getting paid

Coins. claim pays your share of the first buy once, together with any USDC owed to you. The creator's cut is claimed separately and only by the creator.

Creator fees. pump.fun pays the coin's creator a fee on every trade, in USDC for a USDC coin. The creator is the vault, so collect, which anyone can call, sweeps those fees into the vault and credits them to depositors. It works on the curve and on PumpSwap after the coin graduates. pump.fun also lets anyone sweep a creator's fees directly; that still lands in the vault, and the next collect credits it.

Principal. Withdraw it whenever you like, with the growth since the close.

When a launch fails

If the target is not reached, the creator can cancel at any time and anyone can after the deadline. Cancelling redeems the interest exactly as a launch would and credits it to depositors on their weights. Principal comes out as usual. The failure mode returns more than was put in.

Measured on a mainnet fork: $100,000 in a vault that missed its deadline 31 days in came back as $100,371.

Instruction reference

InstructionWhoDoes
createanyoneOpens a vault and its USDC and jlUSDC accounts.
depositanyoneUSDC into Jupiter Lend, principal recorded, weight brought forward.
withdrawdepositorPrincipal out, any phase.
closeanyoneRealises the interest once it covers the target; freezes weights.
launchanyoneCreates the pump.fun coin and makes the first buy.
cancelcreator, or anyone after the deadlineRealises the interest and owes it to depositors.
abortanyone, a day after a closeTurns a stuck close into a cancel.
claimdepositorCoins once, then USDC owed.
claim_creatorcreatorThe creator's cut, once.
collectanyoneSweeps creator fees from the curve or PumpSwap and credits them.

Addresses

EarnPad programearngCLJqXa9X8qoC9z4dpupEmVyifYPRVNMVQdRs6N
USDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
jlUSDC9BEcn9aPEmhSPbPQeFGjidRiEKki46fVQDyPpSQXPA2D
Jupiter Lend (earn)jup3YeL8QhtSx1e253b2FDvsMNC87fDrgQZivbrndc9
pump.fun6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
PumpSwappAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA

Risk

Venue risk

Every vault earns in Jupiter Lend's USDC pool. A loss there, a pause, or a long stretch of very high utilisation reaches every vault at once. Jupiter Lend also limits how much can leave in a short window, so a very large withdrawal can have to wait for that limit to widen.

The mechanism is slow

Interest takes weeks to add up to anything. Depositors pay for their coins in interest they did not keep, which is a real price even though no principal is at risk.

The coin is a pump.fun coin

After the first buy it trades like any other, and its price is up to the market.

Configuration is permanent

Target, cap, deadline and the creator's cut are fixed when the vault is opened.

Unaudited

The program passes its unit tests and an end to end run against mainnet state, but no third party has reviewed it.