Ref. KARMA-1000 · manual
How the watch works.
Every number on this page is read from the program config or the published formula.
Overview
Every wallet has a karma score from 0 to 1000. It is computed from how the wallet behaved in Karma coins: holding them through graduation and over days raises it, flipping presale tokens and abandoning your own coin lowers it, and idle weeks pull it back toward 100. The score lives in a soulbound account on chain (["karma", wallet]): it cannot be sent, sold or bought.
What the score buys: every new Karma coin opens with a pre-window where only wallets with karma commit SOL, highest tier first, and the whole pool buys the coin at one price in the same transaction that creates it. After that, buys through this site's router by wallets with karma 500+ get part of the pump.fun fee back.

The formula
The keeper indexes Karma coins only: presale allocations at birth, buys and sells on the curve and on PumpSwap, transfers in and out. A position counts as real when its cost is at least 0.05 SOL (transfers carry no cost, so passing bags between wallets earns nothing).
| Term | Rule | Points | Cap |
|---|
score = clamp(100 + hold + time − snipe − abandon + decay, 0, 1000)
Decay: for each full week without activity (holding a real position counts as activity) the distance from 100 shrinks by 2 %, truncated: d = trunc(d × 98 / 100). It works in both directions: a negative record recovers toward 100 too.
Epochs and sync
The keeper computes every score, builds a merkle tree (leaves sorted by wallet) and the attestor signs the root. The program checks the Ed25519 signature and opens a veto window of 6 h for the guardian. After that the epoch is final and anyone can sync a wallet: the program recomputes the leaf, checks the score against the formula line and the caps, walks the proof to the root, and writes the score to the wallet's soulbound account.
- A rise is capped at 300 per sync (a stolen attestor key needs several epochs, each with its own veto window, to fake a high score). A fall applies in full.
- A karma counts while it is fresh: synced from one of the last 2 epochs. The keeper pushes syncs for every existing karma whose leaf changed, falls included.
- Epochs are at least 24 h apart. A vetoed epoch can never be synced and its number is not reused.
Tiers
Five dials, read from the config. You do not pick one; the score does.
| Dial | Score | Pre-window | Cap per launch | Rebate |
|---|
The pre-window
A creator opens a launch with a final name, ticker, picture and a raise cap between 1 and 70 SOL. The pre-window lasts 10 min, in three equal stages:
- Stage 1: tier 3 only (karma 900+).
- Stage 2: tier 2 and up (600+).
- Stage 3: tier 1 and up (300+).
Each wallet commits up to its tier's cap. The pool never goes above the raise cap: when tier 3 fills it, lower tiers get nothing. Withdrawals are open in stages 1 and 2 (and never in the last 60 s); commits in stage 3 are final. The creator commits like everyone else, in its own tier's stage.
When the window ends, birth (anyone can send it; the keeper does) runs alone in one transaction: pump.fun create_v2 with the coin's final metadata, then one buy for the whole pool. Every committer gets tokens pro rata to what they put in: one price for everybody. What the buy did not spend comes back pro rata. If the pool is below 1 SOL, or nobody births it within 1 h, the launch fails and every commit is refunded in full.
Worked example
Raise cap 20 SOL. Stage 1: two Midnight wallets commit 5 SOL each. Stage 2: three Salmon wallets commit 3 SOL each. Stage 3: a Sage wallet asks for 1 SOL but only 1 SOL of room is left: pool 20 SOL.
Birth: deploy = 20 − 0.03 reserve. Launch fee = 2.5 % of the deployed amount, to the pad treasury. The rest buys the coin in one pump.fun buy. A 3 SOL committer owns 15 % of the tokens bought, the same share it put into the pool. Nobody outside the pool could buy before it: the coin did not exist.
The rebate
A buy through the router (buy) is a normal pump.fun curve buy sent through the program. The program measures the fee pump took (the lamports that reached pump's fee accounts and the creator vault), and if your karma is fresh and at least 500, pays back 40 % of it from the rebate pool, up to 0.05 SOL per wallet per UTC day. Buying and selling back always loses money: the rebate is less than the fee.
The rebate pool is filled by 30 % of every Karma coin's creator fees. After graduation the router refuses (it buys on the curve only): trade on PumpSwap, the rebate stops.
Fees
| Launch fee | 2.5 % of the deployed pool, at birth, to the pad treasury |
| Creator fees (pump.fun) | go to the coin's fee account; collect splits them: 50 % to the creator, 30 % to the rebate pool, 20 % to the pad |
| Commit, withdraw, sync, claim | no pad fee; network fees and account rent only (rent comes back when the account closes) |
Parameters
Live from the config account.
| Parameter | Value | Meaning |
|---|
Program
Program id . Anchor, pump.fun rails, Ed25519 attestation.
| Account | Seeds | Holds |
|---|---|---|
| Config | ["config"] | admin, treasury, attestor, guardian, params, epoch count, rebate books |
| Rebate pool | ["rebate"] | global rebate SOL |
| Epoch | ["epoch", n] | root, leaves, as of, final at, vetoed |
| Karma | ["karma", wallet] | soulbound score, target, epoch, components, rebate books of the day |
| Launch | ["launch", id] | creator, final metadata, times, raise cap, params copy, pool books, birth results, fee books |
| Vault | ["vault", launch] | the pool; after birth the unclaimed tokens and SOL back |
| Fees | ["fees", launch] | the coin's pump.fun creator; fee books |
| Mint | ["mint", launch, nonce] | the coin, created by pump.fun inside birth |
| Commit | ["commit", launch, wallet] | what a wallet committed, its tier and stage, claim flags |
| Instruction | Who | What |
|---|---|---|
| sync | anyone | writes a wallet's leaf from a final epoch (proof checked) |
| create_launch | creator | opens a pre-window (starts now or up to 7 days ahead) |
| commit / withdraw | the wallet | stage rule, tier cap, pool cap / until the lock |
| birth | anyone, alone in its transaction | create_v2 + one pooled buy |
| claim / refund | anyone (pays to the wallet) | tokens + SOL back / the whole commit |
| buy | the wallet | router buy with the karma rebate |
| collect / claim_dev / collect_treasury | anyone | books and pays the creator fee legs |
| post_epoch / veto_epoch | attestor-signed / guardian | a new root / stops it inside the veto window |
| expire / close_launch / close_epoch / close_karma | anyone / the wallet | clean up; every rent comes back |
Errors
What the program says, word for word.
| Code | Name | Message |
|---|
Verify on chain
- Read the Config account: the attestor and guardian keys and every parameter on this page.
- Read the latest Epoch account: root, number of leaves, as of, final at, vetoed.
- Download the tree and the index from the scorer (/api/epoch/<n>): recompute every score from the index with the published formula, rebuild the tree, compare the root with the one on chain. The tree file's sha256 is the tree_hash stored in the epoch.
- Read any wallet's Karma account (["karma", wallet]) and compare it with its leaf.
- For a launch, the Launch account holds the pool, the birth results and every fee book; the vault and the fee account balances must match them.
What the admin can and cannot do
Can
- Change parameters for new launches (a live launch keeps its copy).
- Change global karma and rebate parameters. Tightening applies at once; loosening waits a timelock and the guardian or admin can cancel it.
- Pause new launches and new commits (sunset). Claims, refunds, withdrawals and births stay open.
- Rotate the attestor or the guardian, with a timelock the guardian can see.
Cannot
- Move any pool, vault, token, fee leg or rebate pool SOL.
- Change a live launch's rules or anyone's committed amount.
- Write a score without an attestor-signed epoch that passed the veto window and the formula check.
- Stop a refund, a claim or a withdrawal.
Honest limits
- After the pre-window the coin is a normal pump.fun coin: anyone can buy. Early access means the pooled presale at one price, nothing more. pump.fun cannot gate buyers.
- A searcher can buy in the transaction right after birth. The pool still bought first, at the best price.
- Karma is computed off chain by the keeper and attested per epoch. The program checks the signature, the veto window, the formula line and caps, freshness and the rise cap. It does not re-run the trade history; anyone can, from the published files.
- The rebate exists only for buys through this router on the curve.
Risks
- Memecoins lose value, usually all of it. A good karma does not make a coin good.
- A compromised attestor could post a false root; the guardian veto, the rise cap and the published files bound it to presale access and small rebates, never to user funds.
- The keeper can be slow; every keeper action is permissionless and can be sent from this site.
- Smart contract risk: the program was tested and audited; bugs can still exist.
FAQ
Why is my score 100?
Every wallet starts at 100. It moves once the wallet holds, flips or launches Karma coins and the next epoch is synced.
Can I buy karma or move it to another wallet?
No. The account is derived from your wallet and has no transfer instruction. Tokens passed to a new wallet carry no cost, so they earn it nothing.
My score went down after I sold.
Selling is fine. Selling at least half of what you got in the first minute within ten minutes is a snipe and dump. Letting your own coin go before graduation is an abandoned dev coin.
Why did the rise stop at +300?
A sync can raise a score by at most the configured rise. The rest is kept as the target and applied at the next epoch.
Do I have to sync myself?
The keeper pushes syncs for wallets that already have a karma account. The first one is yours to send (Read my karma, then Put my karma on chain). Anyone may push a sync for anyone.
Terms
Karma Pad is software on a public blockchain. Using it is your decision and your risk. Nothing here is financial advice. The site shows what the program and the chain say; if they disagree, the chain is right. Coin names and pictures are chosen by their creators.