Docs

A dev picks a nest: a pad coin that migrated. The nest sets the price. If it says yes, the new coin hatches inside it: the dev's bid buys the new coin for the nest's holders, and the nest keeps a share of the new coin's fees forever.

The words

wordwhat it is on chain
NestA pad coin that migrated to PumpSwap. Its dev can open it (open_nest): dev price or holder vote, a price (the minimum bid, at least 0.1 SOL) and a share (5 to 30 % of every chick's creator fees). A migrated coin nobody opened is a holder-vote nest with the pad defaults (0.1 SOL, 20 %).
EggA dev's offer to a nest: the final name, ticker and picture of the new coin plus a bid (at least the nest's price, at most 2 SOL), escrowed with the 0.02 SOL launch fee and a 0.03 SOL rent reserve.
The askingHow a nest answers. Dev price: accepted at once, the nest dev can refuse it during the 1 h review. Holder vote: the nest's holders sign votes with their wallets for 24 h; a quorum of 10 % of the eligible weight and a simple majority accept it.
HatchOne instruction, alone in its transaction: pump.fun creates the chick and the whole bid buys it into the escrow. Those tokens are the nest holders' airdrop. At most 3 hatches per nest in any rolling 24 h.
ChickThe coin that hatched. Its creator fees split on chain, forever: chick dev the rest, nest the nest's share, $CUCKOO 20 %, treasury 20 %. At the default 20 % nest: 40 · 20 · 20 · 20.
Nest shareBuys the nest coin and burns it (feed_nest), so every nest holder gains without a list.
Push it outThe nest's holders vote a chick out (quorum + two thirds of the votes cast): from then on its nest share goes to $CUCKOO.
SwapA chick whose median market cap stays above its nest's for 24 h, checked at most 30 min apart, swaps roles: the old nest keeps 5 %, the freed part buys and burns the chick itself.
$CUCKOOThe pad token. Every coin's pad share collects in the pad vault; buy_pad buys $CUCKOO and burns it.

Lifecycle of an egg

statehow it gets therewhat can happen next
Laidlay_egg into a holder-vote nestthe vote runs until vote_end; the attestor posts the tally; after the 2 h veto window anyone applies it
Accepteddev-price nest: at lay time · holder vote: a passing tally applieddev price: the nest dev may refuse during the review · then the chick dev hatches it before expires_at (48 h after laying) and while the nest has a free slot
Hatchedhatch by the chick devthe attestor posts the airdrop root; holders claim for 30 d; the rest is burned by sweep_drop
Rejectedrefused by the nest dev in review, or the vote failedrefund_egg (anyone): the whole deposit and the egg's rent back to the chick dev
Expirednot accepted or not hatched before expires_atrefund_egg (anyone): full refund
Cancelledcancel_egg by the chick dev before the hatchfull refund, egg closed

Worked example

  1. Nest $OAK is open: dev price 0.50 SOL, share 20 %. It hatched 1 chick in the last 24 h, so it has 2 slots.
  2. You lay an egg: bid 0.50 SOL. The escrow takes 0.50 + 0.02 (launch fee) + 0.03 (rent reserve) = 0.55 SOL. Dev price: the egg is accepted at once; the review runs 1 h.
  3. After the review you hatch it. One instruction: pump.fun creates $CHICK with the pad's per-coin fee account as its creator and buys $CHICK with the whole 0.50 SOL into the escrow. The unused part of the rent reserve comes back to you in the same transaction; the 0.02 SOL fee is booked to the treasury.
  4. The attestor takes the snapshot of $OAK's holders (each wallet's lowest balance over the 24 h before the hatch) and posts a merkle root whose total equals the escrowed $CHICK exactly. After the veto window each holder takes their share with the proof from the published file. A holder with 5 % of the weight gets 5 % of the $CHICK.
  5. $CHICK trades. Say it earns 1 SOL of creator fees. collect splits it on chain: you 0.40, $OAK's share 0.20 (it buys $OAK and burns it), $CUCKOO 0.20 (buys $CUCKOO and burns it), treasury 0.20.
  6. If $CHICK's median market cap stays above $OAK's for 24 h straight, the roles swap: $OAK keeps 5 %, the other 15 % buys and burns $CHICK itself.

Rules

Holder snapshot (votes and airdrops)

Weight of a wallet = the sum over its Token-2022 accounts of the nest coin of each account's lowest balance in the window [T − 24 h, T]. T = the hatch time for an airdrop, the end of the vote (or the early decisive moment) for a vote. A balance bought inside the window counts only from its lowest point, so a flash buy before the snapshot earns nothing. An account whose owner changed inside the window counts 0.

Not holders: owners that are not wallets (pools, curves, escrows, program vaults) and the chick's dev wallet (he pays the airdrop, and his votes about his own egg or chick do not count).

Vote

Every vote is a wallet signature over a readable text (below), not a transaction: free. The last valid signature per wallet and round received before the vote ends counts. Quorum base = the eligible weight: the total weight of every holder in the same snapshot, so buying or dumping at posting time does not move the quorum. Accept: quorum 10 % and yes > no. Push out: quorum and yes ≥ 2/3 of the votes cast; eject rounds run every 24 h from the hatch. The program computes the outcome on chain from the posted numbers. The report lists every vote with its signature and every holder weight; anyone can recount.

Airdrop

amounti = floor(total × wi / W); the rounding remainder goes 1 unit at a time to the largest holders; holders under 1e-6 of W are left out. Leaves: sha256(0x00 ‖ index u32 ‖ wallet ‖ amount u64), nodes sha256(0x01 ‖ min ‖ max). The total must equal the escrowed tokens exactly (checked on chain). Unclaimed after 30 d: burned. No root by 7 d after the hatch: the escrow burns after the claim window too; every lamport returns to the chick dev.

Program buys (feed the nest, feed itself, $CUCKOO)

Every buy the program makes uses the median of the last 7 price observations (spanning at least 10 minutes, each clamped to ±10 % of the running median), spends at most 0.6 % price impact, refuses if the live price is above the median, makes one program buy per coin per slot and refuses any pump or PumpSwap trade in the same transaction. The caller passes no amount.

What your wallet signs

A vote is this exact UTF-8 text, signed with your wallet's "sign message":

Cuckoo Pad vote
action: accept-egg
target: <egg account>
round: 0
choice: yes

For a push-out vote: action: eject-chick, target: <chick mint>, round: floor((now − hatch time) / vote window). It moves nothing and costs nothing.

The attestor signs reports with one key per cluster: the vote report (218 bytes: "cuckoopad:vote:v1" ‖ program ‖ kind ‖ target ‖ round ‖ nest ‖ yes ‖ no ‖ voters ‖ eligible ‖ as_of ‖ snapshot_root ‖ votes_hash) and the drop root (165 bytes: "cuckoopad:drop:v1" ‖ program ‖ chick ‖ root ‖ total ‖ leaves ‖ snapshot_at ‖ holders_hash). The program verifies the Ed25519 signature in the instruction before its own.

Parameters

Mainnet defaults and the values this preview chain runs with (read from the config account; the preview uses short windows so you can watch a whole cycle).

parametermainnet defaultthis chain

Program reference

Program id Cuc3WwPz3vca68SDVwbnwttAdKTG3gkXw95GqkLVHxy8 · Anchor 0.31.1 · every event is emitted by self-CPI.

Accounts

accountseedswhat
Config["config"]admin, treasury, attestor, guardian (+ pending keys and timelocks), pause, params, counters
PadState["pad"]$CUCKOO mint (set once), its observations, pad-vault books (sol in, sol spent, tokens burned)
pad vault["padvault"]SOL for the $CUCKOO buy and burn
buyer["buyer"]makes every program buy; ends each instruction at its rent floor
Coin["coin", mint]every pad coin: dev, kind (plain / chick), nest, split, vote and swap state, fee books, fee ring, observations
Fees["fees", mint]the coin's pump creator: creator fees land here and wait as booked shares
Nest["nest", nest mint]mode, price, share, the last 3 hatch times, SOL dropped
Egg["egg", nest mint, id u64]chick dev, metadata, bid, deposit, a copy of the terms, state, times, tally, hatch results
brood["brood", egg]the escrow: pays pump at the hatch, makes the dev-buy, holds the airdrop
chick mint["mint", egg, nonce u64]created by pump.fun inside hatch
Report["report", target, kind u8, round u32]an attested vote result (1 accept: target = egg; 2 eject: target = chick)
Drop["drop", chick mint]airdrop root, total, leaves, claim bitmap

Instructions

instructionwhonotes
launchanyone, alone in its txa plain coin: create + dev buy; fees dev 50 / $CUCKOO 30 / treasury 20
sync_migrationanyonecurve complete + canonical pool: the coin becomes a nest
open_nestthe nest coin's devmode, price, share; eggs keep the terms they were laid with
lay_egganyone (the chick dev)bid in [price, max bid], the terms you saw are checked
reject_eggthe nest coin's dev, during reviewfull refund
cancel_eggthe chick dev, before the hatchfull refund
refund_egganyonerejected or expired eggs: full refund to the chick dev
hatchthe chick dev, alone in its txaccepted, reviewed, not expired, nest has a free slot
post_accept_vote / post_eject_voteanyone with the attestor's signatureoutcome computed on chain
veto_report / veto_dropguardian, before finalcloses the report; the attestor may repost
apply_accept / apply_ejectanyone, after final
post_drop_rootanyone with the attestor's signaturetotal == escrow, snapshot = hatch time
claim_dropanyonetokens go to the leaf's wallet
sweep_dropanyone after the claim windowburns the rest, returns every lamport
collect / unwrap_feesanyonepull creator fees and split them on chain
claim_dev / collect_treasuryanyonepays only the coin's dev / the treasury
feed_nest / feed_self / buy_padanyone (lends 0.02 SOL headroom, returned)guarded buy + burn
observe / observe_pad / check_swapanyoneprice observations, the swap watch

Errors

codenamewhat it means

Verify on chain

  1. Every coin's pump creator is its own ["fees", mint] account of this program: check the bonding curve's creator field.
  2. A hatch is one transaction: pump's create and the buy into the escrow appear as inner instructions of one hatch; the Hatched event lists bid, spent and tokens.
  3. The escrow's token account holds exactly the Drop's total until claims start (post_drop_root refuses anything else).
  4. The drop file at /drop/<chick>.json rebuilds the root on chain; every proof checks against it.
  5. The report at /report/accept-<egg>-0.json lists every vote with its signature; each one verifies against the text above, and the weights sum to the posted yes / no.
  6. Fees PDA lamports = rent floor + dev + nest + self + treasury booked, after every instruction.
  7. Pad vault lamports = floor + sol in − sol spent; every PadBought event burns what it bought (mint supply drops by exactly that).
  8. A nest never holds more than 3 hatch times inside any 24 h window (Nest.hatch_ts).

Admin powers

cancannot
Pause new launches, eggs and hatches (refunds, claims and fees keep working). Change future params within bounds (loosening a guard waits 3 days and the guardian can cancel it). Rotate the attestor and guardian keys with a 3-day timelock. Set the treasury.Touch an escrow, a fee book, the pad vault or an airdrop. Change the terms of an egg already laid. Change the split of a coin already launched. Mint, freeze or move anyone's tokens.

The attestor (votes + airdrop roots) can only choose who among the nest's holders gets what part of a fixed airdrop total and how votes were weighted; it cannot change the total, the price, the shares, the 3-a-day limit or any SOL path. The guardian can only veto (delay) reports and cancel pending rotations.

Compromise, in plain words: pump.fun keeps no holder list on chain, and a signature vote over a balance snapshot can only be checked off chain. So holder snapshots and vote tallies are attested by our service and published in full; the airdrop amount, the escrow, the fee shares, the quorum and majority arithmetic, the 3-a-day limit, the swap and every buy are on chain.

If the pad ever winds down: the admin pauses new eggs and hatches; every open egg stays refundable by anyone, airdrops stay claimable until their window ends, and fees keep splitting. The pinned post and the links will point to a static page with the final transactions.

Risks

FAQ

Do I need to hold anything to lay an egg?

No. Any wallet can lay an egg in any nest with room.

What happens to my bid if the nest says no?

Full refund, including the fee and the reserve. Anyone can send it back to you; the site's Mine window has the button.

Why does my vote weigh 0?

Your wallet's lowest balance of the nest coin over the last 24 h was 0: you bought inside the window, or you hold it in another wallet.

Does voting cost a fee?

No. It is a signature over the text above, not a transaction.

Can a nest stop being a nest?

No. A migrated pad coin is a nest for good; its dev can only change the terms of future eggs.

Is there a token tax?

No. The coins are plain pump.fun coins; everything here runs on the creator fees pump.fun already charges.