Overview
PairYard is a market exchange on Robinhood Chain where every token is priced against a real thing instead of a bare stablecoin. A token trades against a coin that tracks gold, WTI crude, corn, a dozen eggs or a basket of several. Holders of a market are paid their share of its trading fees in that commodity, and they claim it themselves, straight from the token.
Three things set it apart from other launchpads:
- Rewards without a keeper. The launch token keeps a reward-per-share ledger. There is no payout cycle, no minimum, no snapshot, no service that can go down.
- A peg that is a vault, not a range. Commodity coins are minted and redeemed at the oracle price inside a 0.1% spread. Nothing has to be repriced and the ask cannot run dry.
- Liquidity that cannot leave. A graduated market's Uniswap v4 position is owned by a contract with no function to remove it.
Commodity coins and the peg
A commodity coin is an 18-decimal ERC20 whose price is held at the commodity's reference price. One GOLD is one troy ounce, one CORN is one bushel, one BIGMAC is one sandwich at the US menu price.
The peg is a single contract holding a pooled USDG reserve. mint(coin, cashIn) pays the oracle price plus the spread and receives coin; redeem(coin, coinsIn) burns coin and receives the oracle price minus the spread from the reserve. Because a mint never fills below the oracle and a redemption never pays above it, the on-chain price can only sit inside the spread. The exchange tops the reserve up as it hedges the exposure; the reserve, every coin's outstanding supply and the total liability at current prices are public on chain, and the owner can only withdraw surplus above that liability.
Prices come from the oracle contract. Keepers push prices that moved. Each asset has a staleness limit (6h for live sources, 72h for futures across weekends) and a per-push move cap; a stale or paused asset stops trading until refreshed. Where a Chainlink feed exists on Robinhood Chain it can be wired in and takes precedence.
Baskets
A market can be priced in a basket of two to five coins. A basket is its own ERC20: one unit is worth exactly one dollar at creation, made of each leg's weight in dollars divided by its price. Units are minted by depositing the legs and redeemed for them, so a basket is always fully backed and its USD price is the sum of its legs. A basket market trades on one pool, not one per leg, and pays holders in basket units they can unwrap at any time.
Launching a market
| Setting | Value |
|---|---|
| Supply | 1,000,000,000 tokens, fixed. 725M sell on the curve; 275M are reserved for the pool. |
| Pair | Any commodity coin, or a basket of 2 to 5 with weights of at least 5% each. |
| Opening cap | $5,000, fixed in the pair coin at creation so it does not drift with the commodity afterwards. |
| Graduation cap | $35,000 (7x). About $9,600 of the pair coin is raised on the way. |
| Fee | 1% to 3%, chosen by the creator, charged on the curve and as the pool's LP fee after. |
| Creator share | 0% to 15% of every fee, out of the market's 55%. Default 0. |
| First buy | At least $1 of the pair coin, in the launch transaction. The site mints the coin through the peg for you if needed. |
| Creator allocation | None. Creators earn like every other holder, plus whatever fee share they set. |
The curve
Before graduation a market trades on a constant-product curve held by the launchpad, with 1,165,528,000 virtual base tokens and a virtual quote reserve set so the opening price is $5,000 / 1B. Selling the last curve token lands at exactly 7x the opening price. Token price in the pair coin is virtualQuote / virtualBase; USD price is that times the commodity price. Fees are always taken in the pair coin: from the amount paid on buys, from the amount received on sells.
Graduation to Uniswap v4
The buy that takes the last curve token triggers graduation in the same transaction. The launchpad hands the coin raised and the 275M reserve tokens to the migrator, which initialises a Uniswap v4 pool at the curve's closing price with the creator's fee as the LP fee, and mints one full-range position owned by itself. The migrator has no function to decrease that position beyond zero, so the liquidity is locked for as long as the chain runs. Every PairYard pool carries a tiny init-guard hook with one permission, beforeInitialize, which rejects any initialiser except the migrator: nobody can create a market's pool first at a wrong price to break its graduation. The guard never touches swaps or liquidity, so routers and aggregators see an ordinary pool. At graduation the PoolManager is excluded from holder rewards, so the tokens sitting in the pool never dilute real holders. Whatever the pool cannot take is burned (tokens) or paid to holders (coin).
After graduation anyone can call collectPoolFees. Token-side fees are burned; coin-side fees are split exactly like curve fees.
Fees
| Share | Goes to |
|---|---|
| 55% | The market: holders, paid in the pair coin, minus the creator's chosen share (at most 15 points). |
| 25% | YARD buyback. Half burned, half to stakers. |
| 20% | Protocol treasury. Runs the keeper, the feeds and the site. |
Holder rewards
The holders' share of every fee is transferred to the launch token contract and credited through a magnified reward-per-share counter. Every transfer carries a correction so balances that move mid-period are accounted for exactly. Excluded addresses (the launchpad while it holds the curve supply, the treasury, the buyback, the pool) neither earn nor dilute. withdrawableRewardOf(account) is what you are owed; claimRewards() sends it. Anyone may push a holder's rewards to them with claimRewardsFor.
Launch tax
For the first 60 seconds after creation the fee starts at 50% and decays linearly to the creator's fee. The part above the creator's fee goes entirely to holders. Bots that snipe the first block fund the people who hold the token. The creator's own first buy, inside the launch transaction, pays the base fee only.
YARD, buybacks and staking
YARD is the exchange coin, a fixed 1,000,000,000 supply. 25% of every fee on every market lands in the buyback contract in commodity coins. Anyone may unwrap those through the peg to USDG and execute a buyback on Uniswap v4; every step takes a caller-supplied minimum. Of each buyback, half is burned and half is sent to the staking contract.
Staking: a deposit locks the whole position for 24 hours from the last deposit. Earnings are never locked and can be claimed or compounded at any time; compounding keeps the lock where it was. If a buyback arrives while nobody is staked, that half is burned too.
Tokenize anything
Anything with a real, liquid price can become a coin. Submit a name, a symbol, a category, a unit and a price source with 0.02 ETH. The keeper checks depth: one buyer cannot move the price, cards need monthly sales volume, Amazon products need a steady price and no stock gaps. It then creates the coin through the peg and lists it on the oracle, or refunds the request on chain.
What the keeper does (and does not)
| Job | Cadence | Note |
|---|---|---|
| Price push | 60s | Writes prices that moved. Capped per push; anyone can read staleness. |
| Buybacks | as fees accrue | Permissionless; the keeper just does it regularly. |
| Pool fee collection | 15 min | Permissionless. |
| Tokenize requests | on request | Fulfil or refund. |
| Holder payouts | never | Holders claim from the token. The keeper is not in the loop. |
| Peg repricing | never | The peg is a vault priced by the oracle; nothing to move. |
Contracts
Robinhood Chain, chain id 4663. PairYard addresses come from the deployment synced into the site; the Uniswap v4 addresses are the live ones on Robinhood Chain.
| Contract | Address | Role |
|---|---|---|
| YardLaunchpad | not deployed | Creates markets, runs the curve, splits fees, triggers graduation. |
| YardRouter | not deployed | ETH or USDG in, market token out, and back. One transaction. |
| YardPeg | not deployed | Mints and redeems every commodity coin at the oracle price. |
| YardOracle | not deployed | Reference prices with staleness limits, move caps and Chainlink adapters. |
| YardBasketFactory | not deployed | Deploys weighted baskets of up to five coins. |
| UniswapV4Migrator | not deployed | Owns every graduated pool's position; can only collect fees. |
| UniswapV4SwapAdapter | not deployed | Single-hop v4 swaps for the router and buyback, native ETH included. |
| YARD | not deployed | The exchange coin. |
| YardBuyback | not deployed | Converts fee coins to YARD; burns half, pays half to stakers. |
| YardStaking | not deployed | 24h lock, earnings never locked. |
| YardRequests | not deployed | Tokenize-anything requests and refunds. |
| Uniswap v4 PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | Holds every graduated market's pool. |
| Uniswap v4 PositionManager | 0x58daec3116aae6D93017bAAea7749052E8a04fA7 | Mints the locked full-range position. |
FAQ
Is a commodity coin a claim on physical goods?
No. It tracks a reference price and is redeemable for USDG at that price from the peg reserve. It is not a warehouse receipt.
What happens if the oracle goes stale?
Mints, redemptions and launches that depend on that coin revert until a fresh price is pushed. Curve trades keep working because the curve is fixed in the pair coin, not in dollars.
Can the team pull the liquidity of a graduated market?
No. The migrator owns the position and only exposes fee collection. There is no owner function that decreases liquidity.
Can the team pause trading?
The launchpad has a pause for emergencies, which stops curve trades and launches. It cannot touch graduated pools, holder reward balances, the peg reserve, or staked YARD.
Why is the fee not paid in the launch token?
Paying holders in the commodity is the point. A corn-paired token pays corn, and corn is worth the same whether the token does well or not.