Docs
What Critter Vault is
Critter Vault runs products on Solana that earn fees, and sends a fixed share of everything they earn to the holders of its desks. A product can be retired and a new one plugged in; the desks keep earning from whatever is running.
Every payment into the protocol lands in one public treasury wallet. Every payout to a desk is a separate on-chain transfer. Nothing in between is a claim you have to take on trust.
Where revenue comes from
Anything that reaches the treasury counts as protocol revenue. Today that is:
- Desk mints. Each desk costs 0.2 SOL, paid to the treasury in the minting transaction.
- Token launches. Each launch pays a 0.05 SOL fee.
- Other products. Any SOL sent to the treasury from elsewhere is detected by an indexer and recorded as external revenue.
Of all revenue, 40% goes into the desk pot. The remainder funds the protocol.
Checking the numbers
Mints and launches are recorded only after the server has fetched the transaction from the chain and confirmed that it succeeded, was paid by the right wallet, and moved at least the right amount into the treasury. Each payout row on a desk page links to its transaction on Solscan.
What a desk is
A desk is a Metaplex Core NFT with a serial number. Supply is capped at 500. Every live desk receives an equal share of each payout round, so the earliest desk and the newest one earn the same amount from the next round onward.
Minting
- The server reserves the next serial and builds a transaction that pays 0.2 SOL to the treasury and creates the NFT.
- The server signs only for the new asset address (and the collection, if one is set). Your wallet adds the last signature.
- Payment and mint are in one transaction. If either part fails, the whole thing fails and nothing is charged.
- After it confirms, the server re-reads the transaction and the asset from the chain before recording the desk.
A reserved serial is held for four minutes. If the transaction lands but your browser closes before it reports back, the next maintenance run finds the asset on chain and records it anyway.
Payout rounds
When the pot holds enough to make a round worthwhile, it is split equally across every live desk and sent as SOL to the wallet that holds each desk at that moment. Owners are read from the chain immediately before paying, so a desk bought on a marketplace pays its new owner. There is nothing to claim.
A desk minted after a round ran shows Next round until its first payout.
Rank and value
Rank orders desks by total SOL earned; earlier serials win ties. Estimated value is replacement cost — what it costs to mint an equivalent desk now. Because every desk earns the same share going forward, past earnings don’t change what a desk will earn next.
Selling
A desk is an ordinary NFT. Sell or transfer it on any marketplace that supports Metaplex Core; future payouts follow it. Payouts already sent stay with the wallet that received them.
Launching a token
The launcher creates a standard SPL token with Metaplex metadata and mints the full supply to your wallet in one transaction. You keep update authority over the metadata. If you choose a fixed supply, the mint authority is revoked in the same transaction and can never be restored. The 0.05 SOL launch fee is protocol revenue, so part of every launch is paid to desks.
The numbers
| Desk price | 0.2 SOL |
| Maximum supply | 500 |
| Desk share of revenue | 40% |
| Launch fee | 0.05 SOL |
| Network | Solana mainnet-beta |
Accounts
| Treasury | HtfGJD…fVnokj |
| Desk collection | GSw7v7…HmJcG3 |
| NFT program | CoREEN…ZNhX7d |
Public API
All responses are JSON. Amounts are strings in lamports.
| Endpoint | Returns |
|---|---|
GET /api/stats | Protocol totals |
GET /api/stats/revenue?days=90 | Daily revenue with running total |
GET /api/desks?page&pageSize&sort&status&search&owner | Paginated desks |
GET /api/desks/:serial | One desk with history and payouts |
GET /api/leaderboard?limit=50 | Top desks and holders |
GET /api/profile/:wallet | Desks and launches for a wallet |
GET /api/launches | Confirmed token launches |
GET /api/config | Prices, supply and addresses |
Running your own
The full setup — Supabase, environment variables, the desk collection, scheduled maintenance and payout rounds — is in the project’s README.md. In short:
- Create a Supabase project and run
supabase/migrations/0001_init.sql. - Copy
.env.exampleto.env.localand fill in the RPC, treasury and Supabase values. - Optionally run
npm run create-collectionand set the collection variables it prints. - Deploy to Vercel. The cron in
vercel.jsonindexes the treasury and reconciles owners. - Run payout rounds with
npm run distributefrom a machine that holds the treasury key.