Documents
CASTLE is a launchpad on Robinhood Chain. A launch is a real Uniswap v4 pool with real liquidity from the block it's created — nothing migrates, nothing sells out. Buying and selling always looks like connect a wallet, send ETH, get tokens, nothing to approve or mint first, whether or not the market is tethered to a property class.
Deployment
Live addresses for the current deployment, read straight from chain. This updates automatically the next time someone redeploys.
Property-class coins
Each of the 20 classes on the class list is a real, deployed coin, not just a label. They split into two tiers:
Static tier (couch, tent, shed, lean-to, van, shanty — the six with no
real market to track): a PropertyClassCoin. mint() takes ETH and
issues coin at a fixed, immutable rate set once at deployment;
redeem() burns coin and gives back exactly the ETH that backs it. There's no
oracle and nothing updates the rate. Fully collateralized: minting only ever issues coin
backed by ETH just deposited, so the peg can't run short.
Live tier (the other 14 — RVs, tiny and manufactured homes, container
homes, cabins, condos, houses, farmland, luxury homes, commercial retail, and the
duplex/townhouse/high-rise figures derived from them): a PegPool instead. A
mutable-rate mint/redeem contract would be unsound here — if the reference rate ever rose,
redeeming at a flat rate from ETH collected at older, lower rates could leave it short. So
these coins are never redeemed at a promised rate at all: each has a single-sided Uniswap
v4 position offering protocol-minted coin one tick-range above the reference rate (a real,
router-composable ask), and sells pay out of ethReserves — ETH the pool has
actually pulled out of that position via a permissionless harvest(), capped
exactly there. It can't be shorted because it never promises more than it holds. An
authorized updater calls reposition() when the reference index publishes a
new number, which is realistically monthly-ish, not a 60-second keeper, since none of
these sources publish faster than that.
You can buy and sell any of these directly on the
classes page, independent of
launching anything — though only static-tier classes can currently be picked as a launch's
pairing, since Launchpad expects a fixed-rate mint()/redeem()
interface that a PegPool-backed coin doesn't implement.
The starting USD reference price for each class was researched, not guessed, averaged
across 2 to 4 independent sources for the 10 classes with a real market (RV, tiny homes,
manufactured homes, container homes, cabins, condos, houses, farmland, luxury homes,
commercial retail). Duplex, townhouse, and high-rise prices are derived from the house/condo
figures with a disclosed multiplier rather than independently sourced, and farmland applies
a disclosed 3x multiplier for structures since no source prices "land with structures"
directly. The six novelty-tier classes (couch, tent, shed, lean-to, van, shanty) have no
real market to research and stay illustrative. Full source list, per class, is in
script/DeployCommon.sol's comments.
Launch terms
Every launch follows the same shape, whatever class it's tethered to.
Mint straight into a real pool
A launch mints 1,000,000,000 tokens directly into a new Uniswap v4 pool, as two concentrated liquidity ranges seeded in the same transaction: 800 million tokens from a $5,000 opening cap to a $35,000 cap (sized in ETH, or the picked class's coin, at deploy time — this is the "curve"), and 200 million tokens in a second range above the cap, so the pool keeps quoting with no cliff once it's crossed. There is no migration step, because there's nothing to migrate to — it's a real pool from block one.
Creator sets the fee, picks a class (or not), and buys first
The creator picks a trading fee between 1% and 3%, optionally picks a property class — the market trades against that class's coin for its whole life instead of ETH — and sends their first buy, any amount of ETH, in the same transaction that creates the market. No approval step either way.
Trade the pool, forever
Anyone can buy or sell against the pool, always starting from ETH on the trader's side — a picked class just means the router mints/burns that class's coin under the hood. Selling works exactly the same whether the price sits inside the curve range or has moved into the reserve range above the cap: it's the same real AMM liquidity throughout, so there's no sellout event and nothing ever stops trading.
Fees
Every trade's LP fee (the rate the creator chose) accrues to the market's own liquidity
positions. Anyone can permissionlessly call collectFees() to pull it out and
split it, in the market's quote asset (ETH, or the picked class's coin):
| Recipient | Share | Paid in | How |
|---|---|---|---|
| Holders | 40% | the market's quote asset | Pull-based: call claimRewards() on the token any time, no keeper enumerating balances. |
| Buyback | 30% | ETH | Swapped for the $CASTLE-equivalent platform token and burned — anyone can trigger it, permissionlessly. |
| CASTLE (protocol) | 30% | the market's quote asset | Funds the exchange. |
There's no creator carve-out — creators earn like any other holder.
Market metadata
A launch stores its image, name, and links in content-addressed storage. The permanent metadata URI is written on chain at creation and never changes, so a market's name, image, and links stay exactly what its creator published, including for the joke listings.