PHASE A· MINT WINDOW · HIGH TAX
0 / 10,000 sealed cards minted10,000 TO PHASE B
SELL TAX25%
▸ Drops to 1.5% when all 10k sealed cards mint
$CASTERANK · ROLL · REPEAT
CASTE
▸ CARDS0 / 10,000 minted · 10,000 until Phase B
▸ BUFFER0.000B left · 0M drained · ~0k flips remaining
▸ RNGflip seed = keccak256(blockhash(commitBlock+2), tokenId) · fixed at commit
▸ CARDS0 / 10,000 minted · 10,000 until Phase B
▸ BUFFER0.000B left · 0M drained · ~0k flips remaining
▸ RNGflip seed = keccak256(blockhash(commitBlock+2), tokenId) · fixed at commit
/CASTE/STATS · CONTRACTS · CONSTANTS · ENTROPY

The Numbers.

V1 is single-phase, sealed-mint, deferred-reveal. Three things you can verify before touching the contract: how the fees split, how the buffer drains, how the RNG seed is composed.

Phase Transition· A → B · IRREVERSIBLE · ATOMIC
PHASE A · NOW
25%
sell tax · split 16.67 hourly / 8.33 mega
0 / 10,000
0.0%
cards minted · 10,000 more to flip phase
PHASE B · AFTER 10K
1.5%
sell tax · split 1.0 hourly / 0.5 mega
PHASE A · MINT WINDOW · 25%PHASE B · FREE TRADE · 1.5%
Buffer Drain Math· ONE-WAY · GRACEFUL CAP ON DEPLETION
BUFFER · 4,200,000,000 CASTE INITIAL
0.000B LEFT0M drained
▸ payout = tier_base × variant_mult × multiplier_e18 / 1e18 (deducted same tx as flipCard)
▸ when payout > buffer → capped at buffer remaining + BufferDepleted(addr, shortfall) event
▸ buffer never refills · drained CASTE is now circulating supply
AVERAGE FLIP — WEIGHTED
avg tier_base≈ 10,800avg variant_mult× 1.225avg multiplier× 1.050avg payout / flip≈ 13,900
RUNWAY
~0k flips
= 4.2B / 13.9k · ≥ 30× protocol life @ healthy flip rate
Flip RNG· COMMIT-REVEAL · NO ORACLE · ▸ DEV VIEW
// anchor fixed at mint — commitBlock set in the buy tx
anchor = commitBlock + FLIP_DELAY_BLOCKS  // = +2
commitHash = blockhash(anchor)
require commitHash != 0  // else ExpiredReveal (>256 blocks)
seed = keccak256(commitHash, tokenId)
✓ PROPERTIES
  • no oracle, no fee, no async callback (vs Chainlink VRF)
  • seed fixed at commit — your card's fate is sealed at block commitBlock+2
  • owner can't grind — delaying the flip never re-rolls; the anchor hash is immutable
  • 2-block reveal lock — outcome can't be read in the same block you bought
△ ACCEPTED RISKS
  • validator MEV: theoretical — the proposer of block commitBlock+2 could bias its blockhash
  • 256-block window — flip past it and blockhash() returns 0, so the reveal reverts (ExpiredReveal)
  • no re-roll / no fallback — an expired card stays unflippable; flip within the window
  • categorized as meme-grade · same risk profile as any on-chain RNG primitive
Constants· FROM Constants.sol
PRICING & BATCH
UNIT$6.66666 USDC= 6_666_660 raw
MIN_BATCH_UNITS11 × UNIT min
MAX_BATCH_UNITS100$666.666 max
CARDS_PER_UNIT11 unit = 1 sealed card
MAX_CARDS10,000protocol-life cap
TOKEN ECONOMICS
TOTAL_SUPPLY21,000,000,000$CASTE · ERC20
LP_TOKEN_AMOUNT16,800,000,00080% → LP single-side
BUFFER_INITIAL4,200,000,00020% → flip buffer
LP_TICK_OFFSET46,020≈ 100× price range
FEES & TIMING
SWAP_FEE_BPS1501.5% buy + Phase B sell
PHASE_A_SELL_TAX250025% sell tax in mint
HOURLY_EPOCH1 hourlottery resolution
FOMO_INITIAL24hstarting Mega deadline
FOMO_BOOST60s × log10(units)deadline extender · cap 24h
FLIP_DELAY_BLOCKS2commit-reveal lock
JIT_LOCKOUT64 blocksLP add → remove min wait
CONTRACT ADDRESSES · ETHEREUM MAINNET
CasteHook
0xC6A7…b8ACC
v4 hook · 0xACC flag · mined CREATE2
CasteToken
0xA600…412A6
ERC20 · one-shot mint by hook
CasteCard
0x8962…09CA4
ERC721Enumerable · sealed + flip
Roll Your Caste · Trade Your Fate
BUY QUIET · FLIP LOUD
$CASTE · Uniswap v4 Hook Meme · Ethereum Mainnet
Not financial advice · DYOR · code is law
hook 0xC6A7…b8ACC · token 0xA600…412A6