1What a pack is
A pack is a budget of ETH sealed inside the SlabVault contract on Robinhood Chain. When it is drawn it becomes five cards. Each card is a tier (common, rare, holo or chase), one tokenized stock from the current series, and an ETH value. Right after the draw the keeper buys exactly those stocks on Uniswap, so every card is backed 1:1 by real stock tokens sitting in the vault until its winner takes them.
- Fill. Creator fees flow into the vault and the pack pool rises live on the home page.
- Seal. At the pack target the keeper seals a pack: a hidden seed's hash, the Merkle root of the ticket list, and a reveal block a few L1 blocks ahead.
- Draw. After the reveal block,
settlePackmixes the seed with that block's hash and draws the winning ticket and the five cards on-chain. - Fill the cards. The keeper swaps each card's ETH into its stock in one transaction.
- Rip. The winner opens
/rip/?pack=N, tears the pack and decides card by card: keep the stock or sell it back.
2How fees fill it
The token trades on Pons. Its creator fees (ETH) reach the vault either directly (the vault is the Pons fee recipient) or forwarded by the founder with a plain, public transfer. Anyone can call harvest(), which splits every new ETH:
| Where | Share | What it does |
|---|---|---|
| Pack pool | 90% | fills the next pack |
| Infra | 10% | server, RPC and keeper gas |
A pack is sealed when the free pool reaches the pack target (0.02 ETH). Its budget is the whole free pool, capped at 0.5 ETH. There is no way to buy into a pack. If no fees arrive, no pack fills. Every fee-in and harvest is listed on the reserve.
3Tickets
Right before a pack is sealed, the server snapshots holders of and publishes the list as /api/pack/N/tickets.json, kept forever. Its Merkle root goes on-chain with the seal, so the list cannot change after the fact.
- Eligible: at least 100,000 tokens (0.01% of the 1B supply). The vault, the Pons curve, hook and pool, and team wallets are excluded.
- Hold multiplier: rises from 1.0× to 3.0× over 24 h since your wallet's last outgoing transfer (or its first receive). Any sell or send resets it to 1.0×.
- Tickets = floor( min(balance, 1% of supply) × multiplier ), counted in whole tokens.
- Cap: no wallet holds more than 10% of all tickets (re-applied until stable).
- Ranges: wallets in ascending address order, each owns tickets
start … end − 1. One ticket number is drawn per pack.
4The draw
Robinhood Chain has no Chainlink VRF, so SEALSLAB uses a commit → future block → settle draw that anyone can replay:
The keeper commits the seed before anyone can know the reveal block's hash, and the contract rejects a seed that does not match. On Robinhood Chain block.number is the L1 block number (about 12 s) and a block hash is only readable for 256 L1 blocks. If the keeper does not settle in that window, anyone can call expirePack and the whole budget goes back to the pool.
What the keeper still controls, honestly: it could refuse to settle a draw it dislikes and let the pack expire. That never moves money to anyone; the budget simply returns to the pool and a new pack is sealed with a new seed. Every expiry is public on the reserve.
Verify any pack in your browser
5Tiers & odds
Each of the five cards rolls its own tier: roll = keccak256(entropy ‖ "tier" ‖ i) mod 10000. Odds and weights are constants in the contract.
| Tier | Odds per card | Roll | Weight | Example value* |
|---|
* One card of that tier in a 0.02 ETH pack whose other four cards are common. The five values always add up to the whole budget.
The stock on each card is series[ keccak256(entropy ‖ "stock" ‖ i) mod series.length ]. The current series:
| Stock | Name | Token | Pool fee |
|---|---|---|---|
| Loading… | |||
Stock tokens are Robinhood's official tokenized stocks on Robinhood Chain (the vault only accepts the official token code) with a WETH pool on Uniswap V3. The pool fee is paid once when a card is filled and once more if it is sold back. The series changes only for future packs.
6Honest value
A pack is always worth its whole ETH budget at fill time. Tiers only decide how that budget is split across the five cards and which card shines:
So a chase card is big because the other four are smaller, not because value appears from nowhere. SEALSLAB never shows a "market value" above what was spent. After the fill, stock prices move and swaps have slippage and pool fees; the reserve shows the shares actually bought and every sell-back shows the ETH actually paid, as they are.
7Keep the stock or sell it back
Only the drawn wallet can act on its pack. Open /rip/?pack=N, connect that wallet on Robinhood Chain (4663), rip the pack, then per card:
- Keep the stock (
redeem): the card's shares move from the vault to your wallet. Keep all does the five in one transaction (redeemAll). - Sell back (
sellBack): the vault swaps that card's shares to WETH on Uniswap at the pool price, unwraps it and sends ETH to you in the same transaction. The page quotes the price first and sets a 1% slippage limit by default.
There is no expiry: cards wait in the vault until you act. If the keeper has not bought a drawn pack's stock within an hour, the rip page lets you fill it yourself. Ripping is only the on-chain "opened" moment; it does not move anything. If an ETH push to your wallet ever fails, the amount is kept for you and pull() sends it. You pay only gas (a fraction of a cent on Robinhood Chain).
8Risks & disclosures
- No purchase, fees only. Packs are funded only by Pons creator fees that actually arrive. Nobody can buy a pack, a pull or a ticket from SEALSLAB.
- Tickets come from holding the token, with a public list per pack. Holding the token gives you a chance at a draw, nothing more; most holders are never drawn.
- Not for US persons. Tokenized stocks may not be available in your jurisdiction. Check your local rules before you keep a card.
- Stock tokens are not shares held at a broker. They follow Robinhood's tokenized stock terms, can be paused or restricted by their issuer, and their pool price can differ from the market.
- Unaudited contracts. SlabVault is a single contract without proxy or upgrades, with a 48 h timelock on admin changes, but it has not been audited. Bugs can lose funds.
- Prices move. A card's ETH value is fixed at fill time; what the stock is worth later is not. Sell-backs are subject to pool depth, fees and slippage.
- Keeper risk. If the keeper stops, packs stop sealing. A drawn pack that is not filled within 1 hour can be filled by its winner (
fillCards, quoted with a slippage limit). Budgets never leave the vault except as stock for the winner (fill) or back to the pool (expire). - Not financial advice. Nothing on this site is a recommendation to buy, hold or sell anything. Every pack's seed is committed on-chain before the draw.
9Addresses
Robinhood Chain (chain id 4663). Explorer: robinhoodchain.blockscout.com.
| What | Address |
|---|---|
| Loading… | |
10FAQ
Do I need to do anything to enter?
How do I know I was drawn?
Can the team pick the winner?
Does a card ever expire?
Why tokenized stocks and not the token itself?
harvest().