The house programme · Documentation
How the house works
Every coin launched here is a pump.fun coin plus a house of exactly 100 seats. Seats are sold by the house in order, cheapest first. After that each seat always has a price its owner names, and anyone can pay it and sit down.
Overview
A house has 100 seats. A seat is an account of the Club Pad program, not a token: only 100 can exist per coin. What a seat earns, 1/100 each:
- 80% of the coin's pump.fun creator fees (the creator of the coin is the house's vault, a program account);
- the house's token stream: 70% of every seat sold by the house buys the coin, and those tokens are released to the seats over 30 days;
- every other seat's tax (0.5% of its price per day), 5% of every resale, and the whole price of every auction.
An unsold seat banks its 1/100. Its first buyer receives the backlog with the seat.
What is enforced, plainly. "Only 100 can hold" is enforced on the seat, not on the coin: a pump.fun coin is a plain Token-2022 mint without a transfer hook, anyone can hold and trade it anywhere. Only a seat earns the creator fees, the token stream and the other seats' tax and fees. Holding the coin without a seat earns nothing from the house.
House rules
- Every seat has a price its owner names. It can never be below the house floor (the price of seat 1), so nobody dodges the tax with a price of zero.
- Anyone can pay it and sit down.
buy_seatneeds no consent. One exception: a new owner who states more than he paid cannot be bought out for the next 10 minutes (the raise delay), so nobody can buy a seat and flip it at once at a higher price. The buyer pays exactly the stated price; 5% goes to the other 99 seats, the rest and the old owner's unused deposit go to the old owner's ledger. - Owners pay 0.5% a day of their price to the other 99. The tax accrues every second from a prepaid deposit. A price cut is in force at once; a raise waits 10 minutes, so nobody can raise a price in front of a buyer.
- No deposit, no seat. When the deposit runs out the unpaid tax becomes arrears. The owner can still cure it with a deposit until anyone calls
foreclose. Then the seat goes to a Dutch auction for 24 hours, from its last price down to the floor, and the whole auction price goes to the other 99 seats. - Seats sold by the house go in order, seat 1 first. Seat k costs
first_price × (1 + step)k-1; with the default step seat 100 costs about ten times seat 1. - A wallet can hold at most 10 seats of one house. (Anyone can split across wallets: the tax, not the cap, is what prices hoarding.)
- Everything a seat earns lands in its owner's ledger and is paid by
claim. A forced sale never depends on the seller's wallet.
Life of a seat
| State | Colour | What anyone can do | What the owner can do |
|---|---|---|---|
| Not released | dim | Wait: seats sell in order | – |
| Open from the house | brass | buy_primary at the ladder price, state a price, bring a deposit | – |
| Held | plaster | buy_seat at the stated price, no consent | set_price, deposit, withdraw (keeps the minimum cover), claim |
| Tax due (under 24 h of cover) | grey | Buy it at the stated price | Top up the deposit |
| In arrears (cover ran out) | grey | foreclose, or buy it: the purchase repossesses it and sells it as an auction at its last price | Cure: a deposit pays the arrears first |
| In auction (24 h) | brass | buy_seat at the falling price; the price goes to the other 99 | The old owner has lost the seat and keeps what it earned before |
Worked example
A house with the default parameters: seat 1 at 0.05 SOL, step 2.3531% per seat, tax 0.5% a day.
- Take seat 25 from the house. Its ladder price is 0.05 × 1.02353124 ≈ 0.0873 SOL. The house splits it: 70% (0.0611) buys the coin for the seats, 20% (0.0175) to the dev, 10% (0.0087) to the house. You state your price, say 0.30 SOL, and bring a deposit: 7 days of tax = 0.30 × 0.5% × 7 = 0.0105 SOL.
- Hold it. Your seat pays 0.0015 SOL a day to the other 99 (0.0000152 each) and receives 1/100 of the fees, the token stream and every other seat's tax.
- Someone takes it. A buyer pays 0.30 SOL without asking you. 5% (0.015) goes to the other 99; 0.285 plus your unused deposit and your unclaimed earnings go to your ledger. Claim them any time.
- Or you stop paying. After 7 days the deposit is empty. Anyone forecloses; the seat runs a 24 h auction from 0.30 down to 0.05; the winner's price goes to the other 99.
Transaction steps on the site: Preparing (the transaction is built and simulated, a failing one never reaches your wallet) → Sign in wallet → Sending (the signed transaction is resent every 2 seconds until it lands) → Admitted, with a link to the transaction. buy_seat carries max_price = the price you saw: if the owner changed it meanwhile, nothing is spent and the site asks again.
Parameters
Read live from the program's Config. They are copied into every house when it opens: a house's rules never change after launch.
| Parameter | Value now | Bounds in the program |
|---|---|---|
| Launch fee | 0.02 SOL | 0 to 0.5 SOL |
Program
Program id CLBosWVh9VBoMmn19eDvZKRcfDo2u3cPAoLUwBA1d1At. Anchor 0.31. The coin is created by create_club through pump.fun's create_v2, with the house's vault as the coin's creator.
Accounts and seeds
| Account | Seeds | Holds |
|---|---|---|
| Config | ["config"] | admin, treasury, pause flag, parameters for new houses, counters |
| Club (a house) | ["club", mint] | name, symbol, uri, the house's copied parameters, seats sold, next price, accumulators, totals |
| Mint | ["mint", dev, nonce u32 LE] | the pump.fun Token-2022 mint |
| Vault | ["vault", club] | all SOL of the house: deposits, ledgers, dev and pad shares, the seat pool; pump creator of the coin |
| Seat | ["seat", club, index u8] | owner, stated price, pending raise, deposit, tax clock, arrears, auction state, totals |
| Member | ["member", club, wallet] | seats held, SOL and tokens owed (the pull ledger) |
Instructions
| Instruction | Who | What |
|---|---|---|
| create_club | anyone (the dev) | launch fee to the treasury, pump create_v2 (creator = vault), optional dev buy; alone in its transaction |
| buy_primary | anyone | the next seat only, at next_price ≤ max_price; 70/20/10 split; the house buys the coin; the backlog goes to the buyer |
| buy_seat | anyone but the owner | resale at the stated price, or auction at the falling price; a seat in arrears is repossessed inside |
| set_price | owner | a cut is instant, a raise waits raise_delay_secs and needs deposit cover |
| deposit / withdraw | owner | deposit pays arrears first; withdraw keeps min_deposit_secs of tax |
| poke | anyone | settles a seat: tax to the other 99, earnings to the owner's ledger, a due raise |
| foreclose | anyone | a seat in arrears goes to its 24 h auction |
| collect | anyone | pump creator fees → seats 80% / dev 10% / pad 10% |
| sync_tokens | anyone | coin tokens sent to the vault join the stream |
| claim | member wallet | SOL ledger to the wallet, tokens to the wallet's own token account |
| claim_dev / transfer_dev | dev | the dev share (20% of seats sold by the house + 10% of fees) |
| flush_treasury, close_member | anyone / member | housekeeping; every temporary account returns its rent |
| update_config, set_paused, set_treasury, set_hidden, propose_admin / accept_admin | admin | see Admin below |
Errors
Rendered from the program's IDL; the site shows these messages when a transaction is refused.
| Code | Name | Message |
|---|
The formulas
- Ladder:
p0 = first_price,p(k+1) = floor(p(k) × (1e6 + step_ppm) / 1e6). - Tax over [t0, t]:
due = (price × tax_bps × (t - t0) + remainder) / (10000 × 86400); the remainder carries over, so frequent settling never lowers the tax. - Minimum deposit:
ceil(price × tax_bps × min_deposit_secs / (10000 × 86400)). - Auction:
start - (start - floor) × elapsed / auction_secs, then the floor. - The house's buy of the coin in a seat sold by the house is capped at 1% of the bonding curve's virtual SOL per slot; what the cap leaves of the 70% goes to the 100 seats as SOL instead.
- Tokens added to the stream (a donation, a later buy) stretch the release window by their weight instead of restarting it: new end = (old unreleased x time left + new x release_secs) / all.
- Per-seat share: every payment to the seats adds
x / 100(to all 100) orx / 99(to all but the payer) to an accumulator; a seat's earnings are its accumulator minus its debt.
Verify on chain
- The coin's creator on pump.fun is the house's vault PDA
["vault", club], not a person. - The house's Club account holds a copy of its parameters: the admin cannot change them.
- For every house: vault balance = rent floor + deposits + member ledgers + dev owed + treasury pending + the seat pool (asserted after every SOL-moving instruction).
- There are never more than 100 Seat accounts per house (
SoldOuton seat 101). - Every change emits an event: SeatSoldPrimary, SeatBought (with
foreclosed_now), PriceSet (witheffective_at), Settled, Foreclosed, Deposited, Claimed.
Admin: can and cannot
| Can | Cannot |
|---|---|
| Pause new houses and seats sold by the house | Stop resales, auctions, deposits, withdrawals or claims |
| Change parameters for future houses (within the bounds above) | Change the parameters of a house that is open |
| Set the treasury wallet; hide a house from this site | Move any SOL or token of a house, or any seat |
| Hand over the admin role (two steps) | Take a seat without paying its price |
Closing the pad: the admin pauses new houses; everything already open keeps working without the site, the keeper or the admin. Anyone can foreclose, collect and settle.
Risks
- You can lose your seat at any time to anyone who pays your price. Name a price you would accept.
- Defaulting loses the seat without compensation. Watch the deposit countdown; the site shows it on every seat.
- Fees still waiting in pump's creator vault at the moment of a forced sale go to the new owner (the keeper collects every few seconds).
- The house's buy of the coin (up to 70% of a seat price) can be sandwiched by a multi-transaction bundle; the loss is bounded by the price impact of a small buy minus pump's fees.
- The per-wallet seat cap can be split across wallets.
- Wallets show the coin only. The seat lives on this site and on chain.
- The coin itself trades on pump.fun and later PumpSwap like any pump.fun coin.
FAQ
Why would anyone sell a seat they like?
They do not choose to. That is the point: the owner names a price, pays tax on it, and anyone can take the seat at that price. A high price costs more tax; a low price invites a buyer.
Can the owner raise the price when I try to buy?
No. A raise only takes effect after 10 minutes, and your transaction carries the price you saw as a maximum.
What does holding the coin without a seat give me?
Nothing from the house. Only seats earn the creator fees, the token stream and the tax.
Who runs the keeper?
The pad runs one that collects fees and forecloses seats past their cover. It has no special powers: every step it takes is a button anyone can press on this site.