Overview
Ingot is a token launchpad 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 token 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:
- A Uniswap v4 pool from the first block. There is no bonding-curve contract and no migration. The whole supply is minted into the pool in the launch transaction, and the positions are owned by a contract that cannot remove them.
- 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. Pair 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.
Pair coins and the peg
A pair 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 minting and redeeming until refreshed. Where a Chainlink feed exists on Robinhood Chain it is wired in and takes precedence.
Baskets
A token 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 token trades on one pool, not one per leg, and pays holders in basket units they can unwrap at any time.
Instant Launch
| Setting | Value |
|---|---|
| Supply | 1,000,000,000 tokens, fixed. 725M sit on the curve; 275M above it as reserve liquidity. |
| Pair | Any pair coin, a basket of 2 to 5 with weights of at least 5% each, or $INGOT. |
| Opening FDV | $5,000, fixed in the pair coin at creation so it does not drift with the commodity afterwards. |
| Curve end | $35,000 FDV (7x). About $9,600 of the pair coin is absorbed on the way. |
| Fee | 1% to 3%, chosen by the creator, charged by the pool on every trade. |
| 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, charged the plain fee. The site mints the coin through the peg for you if needed (or buys $INGOT on Pons for a $INGOT pair). |
| Creator allocation | None. Creators earn like every other holder, plus whatever fee share they set. |
The pool: curve and reserve
The launch transaction deploys the token, initialises a Uniswap v4 pool at the opening price, and mints two single-sided positions from the launchpad's own balance: the curve, 725M tokens between the opening tick and the tick 7x above it, and the reserve, 275M tokens from that cap to the top of the usable tick range. Both positions belong to the launchpad contract, which has no function to decrease them, so the liquidity is locked for as long as the chain runs. There is no LP token and no locker with a date.
As buys come in the price walks up the curve; when it clears 7x the curve is sold out and trading continues on the reserve, which behaves like a constant-product pool with the whole reserve on the token side. Sells push the price back down the same ranges. Every Ingot pool uses one hook with two permissions: beforeInitialize, so only the launchpad can create a pool (nobody can front-run a launch at a wrong price), and beforeSwap, which returns the fee. It never touches liquidity or takes a delta, so any Uniswap v4 router or aggregator can trade the pool.
Fees
The pool charges the creator's fee on every swap: in the pair coin when someone buys, in tokens when someone sells. Fees accrue to the two positions. Anyone can call collectPoolFees at any time; the site's keeper does it every fifteen minutes.
| Share | Goes to |
|---|---|
| 55% | The market: holders, paid in the pair coin, minus the creator's chosen share (at most 15 points). |
| 25% | $INGOT buyback. Half burned, half to stakers. |
| 20% | Protocol. |
| token side | Burned. Every sell shrinks the supply. |
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 pool, the treasury, the buyback) 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 pool fee starts at 50% and decays linearly to the creator's fee, so bots that snipe the first block mostly pay the market. The creator's own first buy, inside the launch transaction, pays the base fee only. After a minute the fee is simply the creator's fee, forever.
$INGOT, buybacks and staking
$INGOT as a pair. A token can be launched against $INGOT instead of a commodity coin. The oracle prices INGOT through a feed that reads its Pons bonding curve (or its Uniswap v4 pool once it graduates) and multiplies by Chainlink's ETH/USD; that price only fixes the opening tick of a launch. The router's middle leg for these markets is ETH to INGOT on Pons rather than the peg. Holders of a INGOT-paired token are paid in INGOT, and the 25% buyback share of its fees is INGOT already: anyone can call distribute on the buyback, which burns half and sends half to stakers with nothing to buy.
INGOT is the exchange coin, launched on Pons against ETH with a fixed 1,000,000,000 supply. 25% of every fee on every token lands in the buyback contract in pair coins. Anyone may unwrap those through the peg to USDG and execute a buyback, on the Pons curve now and on the Uniswap v4 pool once it graduates; 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 pair 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 owner cannot do
The hook is bound to the launchpad exactly once and the launchpad's addresses (oracle, basket factory, treasury, buyback, launch fee) and the peg's oracle can only change through a proposal that waits 48 hours on chain before anyone can apply it, so every change is visible in advance. The launch tokens, the pools, the peg reserve accounting and the holder reward ledgers have no admin functions at all. The only emergency control is a pause on new launches; it cannot touch a live pool, reward balances, the peg reserve or staked INGOT.
What the keeper does (and does not)
| Job | Cadence | Note |
|---|---|---|
| Price push | 60s | Writes prices that moved. Capped per push; anyone can read staleness. |
| Pool fee collection | 15 min | Permissionless; the keeper just does it regularly. |
| Buybacks | as fees accrue | 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. Ingot addresses come from the deployment synced into the site; the Uniswap v4 address is the live one on Robinhood Chain.
| Contract | Address | Role |
|---|---|---|
| IngotLaunchpad | not deployed | Creates tokens, seeds their Uniswap v4 pools, owns the locked positions, splits fees. |
| IngotHook | not deployed | The pools' only hook: sets the fee, runs the launch tax, lets only the launchpad create a pool. |
| IngotLens | not deployed | Read-only pool numbers: price, curve progress, current fee. |
| IngotRouter | not deployed | ETH or USDG in, token out, and back. One transaction. |
| IngotPeg | not deployed | Mints and redeems every pair coin at the oracle price. |
| IngotOracle | not deployed | Reference prices with staleness limits, move caps and Chainlink adapters. |
| IngotBasketFactory | not deployed | Deploys weighted baskets of up to five coins. |
| UniswapV4SwapAdapter | not deployed | Single-hop v4 swaps for the router and buyback, native ETH included. |
| INGOT | not deployed | The exchange coin, launched on Pons. |
| IngotBuyback | not deployed | Converts fee coins to INGOT; burns half, pays half to stakers. |
| IngotStaking | not deployed | 24h lock, earnings never locked. |
| IngotRequests | not deployed | Tokenize-anything requests and refunds. |
| Uniswap v4 PoolManager | 0x8366a39CC670B4001A1121B8F6A443A643e40951 | Holds every pool. Robinhood Chain's live deployment. |
FAQ
Is a pair 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. Pools keep trading because a pool is fixed in the pair coin, not in dollars.
Can the team pull a token's liquidity?
No. The launchpad owns the positions and only exposes fee collection. There is no function that decreases liquidity, for anyone.
Can the team pause trading?
No. The only pause stops new launches. A pool that exists trades until the chain stops.
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.