How It Works
Every strategy has three parts: rules for which cards to buy, a coin on pump.fun, and a Solana vault that collects the coin's creator fees and can only spend them on cards from Collector Crypt. Each step below is a program instruction, an API response or a transaction you can look up on Solscan.
- 1 You launch · rules + coin
- 2 Coin trades · pump.fun · 1B supply · fair launch
- 3 creator fee · 0.30% curve · ≤0.95% PumpSwap
- 4 Strategy vault · caps · ledger · custody
- 5 Buys a card · Collector Crypt
- ↺ each minute: collect fees → read → score → release → buy → vault → draw or hold. pump.fun pays 20% of the creator fee to the platform.
1 · Rules. You describe the card: Pokémon, grader, grade range, language, years, sets, price, discount to fair value, keywords, exclusions and buy order. The worker puts the rules in canonical form and returns their keccak256 hash. Then you choose what happens to each card, who can win, whether winners may sell back, and you name the coin.
2 · Launch. A single signature creates the coin on pump.fun (1B supply, no allocation, a bonding curve that graduates to PumpSwap), sets up its pump.fun fee sharing and locks it to the strategy: 80% vault, 20% platform, and up to 10% for you taken from the vault's part. pump.fun keeps that split forever. The same signature registers the strategy with its rules hash and places your dev buy if you set one. Coin already on pump.fun? Register it instead, and the same lock applies.
3 · Fees. pump.fun pays each coin's creator a fee on every trade: 0.30% of volume on the bonding curve and up to 0.95% on PumpSwap after graduation. On a strategy coin that fee is the vault's. Each minute the worker calls pump.fun's open distribution, which pays the vault, the platform and any creator share directly.
4 · Scan. Each minute the worker reads the live Collector Crypt listings on Solana, cleans them up (numeric grades, standard languages and set names, USD prices, insured value as fair value) and sorts the ones that match each strategy's rules in that strategy's buy order.
5 · Buy. When the vault can afford the top match, the executor calls release, which pays only the strategy's own buying wallet and only within a rolling 24h cap. That wallet swaps SOL to USDC on Jupiter, buys the card on Collector Crypt and moves it into the vault. record_purchase then confirms it is a genuine Collector Crypt card held by the vault and sets its draw round.
6 · Cards come out. Depending on the strategy, a card is raffled to one holder after its delay, drawn with the rest of a scheduled drop, placed in the pack pool, or held for good. The program verifies every draw and the card moves from the vault directly to the winner's wallet. Anyone can send SOL or a card to a vault to speed things up.
The fee on each trade, per stage, as a share of trade value. Hover a segment to see the number.
pump.fun sets these rates and may change them, and its creator fee steps down at very large market caps. A creator share (0–10% of the creator fee, chosen at launch) is taken from the card budget. The platform's own coin puts 100% of its creator fee into cards.
- Card boughtmoved into the vault, drand round set
- Wait N hourstickets grow with time held
- Snapshottime-weighted, Merkle root
- Beacondrand round R published
- Ticketsha256(R, strategy, id) mod W
- Program checksrandomness, proof, range
- Winnercard sent from the vault
Every draw publishes its drand round, signature, randomness, snapshot root and JSON, holder count, total weight, ticket, winner, and the settle and delivery transactions.
Raffle. The creator sets a delay from 1 hour to 30 days (24h by default). When a card is recorded, the program works out the drand quicknet round for boughtAt + delay. At that moment the worker builds the snapshot: each wallet's balance summed over the window, laid out as back-to-back ticket ranges and committed with a Merkle root. It submits the round's signature, the root and the winner's range with a proof. The program derives the ticket itself and rejects any winner whose range does not contain it.
Why drand, and why time-weighting. drand randomness comes from many independent operators together, so nobody can predict or pick it, us included. Tickets are balance multiplied by time held over the whole window, so odds follow how long you really held, and a buy right before the draw barely counts. If no eligible wallet held during the window, the draw moves to a new future round.
Delivery. The card stays in the strategy vault until its draw. After settlement anyone can call deliver (the worker does it at once), and the program sends the NFT from the vault to the winning wallet. Nothing to claim.
Keep. Keep strategies never let a card go: the coin sits on a collection that only grows, held in its vault.
Drops. A drop strategy picks a period, from one day to 30 days. Each card bought is booked for the next drop at least an hour away, so cards build up and are drawn together, each with its own ticket over its own window. One countdown, several winners.
Packs. A pack strategy sets a price in coins. Bought cards go into a pool of up to 200. Opening a pack burns that many coins through the token program and fixes a drand round about 6 seconds ahead. When it's out, the pool slot is sha256(domain, randomness, strategy, pack id) mod pool size, the program takes that card out of the pool and delivers it to the opener. Nobody, us included, knows which card you get when you open.
Draw rules. A strategy can ask for a minimum average balance, cap any one wallet's share of tickets, exclude the creator and give extra weight to wallets that held through every snapshot. These rules live in the strategy's rules file, so the on-chain hash locks them, and they apply in a fixed order anyone can replay from the published snapshot.
Sell-back. If the creator allows it (up to 90%), a winner can return the card to the vault and receive that share of its cost. The card goes into a new draw or back into the pack pool.
Sell to a vault. Pack vaults can buy cards from collectors. The worker quotes 90% of Collector Crypt's insured value, then the collector and the executor sign one transaction that moves the card into the vault and pays the seller. The purchase counts toward the vault's 24h spending cap.
Donations. Anyone can send a Collector Crypt card to any vault. The program records it with the donor's wallet, and it is drawn, dropped or packed like a bought card. Each card can be recorded once per strategy.
One Solana program runs all strategies (not audited yet). Each strategy has a separate vault. The program stores the rules hash, pays only the strategy's buying wallet, records only genuine Collector Crypt cards held by the vault, and verifies every draw before a card can leave.
release can only be called by the executor, pays only the buying wallet bound to the strategy, never exceeds the rolling 24h cap and stops when the guardian pauses. A leaked executor key cannot send SOL anywhere else or take a card out of a vault.
drand quicknet is a threshold BLS beacon run by the League of Entropy: a new round every 3 seconds that nobody, us included, can predict. The round is set when the card is recorded, the program checks randomness = sha256(signature), and every ticket is domain-separated by strategy and purchase.
Tickets are balance multiplied by time held over the whole window, from holder snapshots taken every few minutes. Holding 1M coins for 24h earns 24× the tickets of holding them for the final hour, and a buy right before the draw barely counts. Only wallets can win.
Cards are graded slabs stored in Collector Crypt's insured vaults and tokenized on Solana. The strategy vault holds each NFT until its draw or pack, then the program sends it to the winner. Nothing to claim, and winners can redeem the physical slab with Collector Crypt.
The strategy page links the coin, the vault, the buying wallet and every purchase, release, draw and delivery to Solscan. Each snapshot is published as JSON, so any draw can be recomputed from zero.
Lotus runs the worker that scans, buys and settles, and the program limits what it can do. Read the terms.