Skip to content
Critter Vault

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

  1. The server reserves the next serial and builds a transaction that pays 0.2 SOL to the treasury and creates the NFT.
  2. The server signs only for the new asset address (and the collection, if one is set). Your wallet adds the last signature.
  3. Payment and mint are in one transaction. If either part fails, the whole thing fails and nothing is charged.
  4. 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 price0.2 SOL
Maximum supply500
Desk share of revenue40%
Launch fee0.05 SOL
NetworkSolana mainnet-beta

Accounts

TreasuryHtfGJD…fVnokj
Desk collectionGSw7v7…HmJcG3
NFT programCoREEN…ZNhX7d

Public API

All responses are JSON. Amounts are strings in lamports.

EndpointReturns
GET /api/statsProtocol totals
GET /api/stats/revenue?days=90Daily revenue with running total
GET /api/desks?page&pageSize&sort&status&search&ownerPaginated desks
GET /api/desks/:serialOne desk with history and payouts
GET /api/leaderboard?limit=50Top desks and holders
GET /api/profile/:walletDesks and launches for a wallet
GET /api/launchesConfirmed token launches
GET /api/configPrices, 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:

  1. Create a Supabase project and run supabase/migrations/0001_init.sql.
  2. Copy .env.example to .env.local and fill in the RPC, treasury and Supabase values.
  3. Optionally run npm run create-collection and set the collection variables it prints.
  4. Deploy to Vercel. The cron in vercel.json indexes the treasury and reconciles owners.
  5. Run payout rounds with npm run distribute from a machine that holds the treasury key.