Docs
How RWAPad works
Two levels of ERC20, both fixed-supply, both 100% seeded into a single unilateral Uniswap V3 position at launch. The whole model, the real numbers, on this one page.
Overview
RWAPad runs on Robinhood Chain (chain id 4663, an Arbitrum Orbit L2, gas in ETH). Every token is an ERC20 with a fixed supply of 1 billion — no mint function, ever. There are two levels:
- ASSET
- Represents a priced real-world object — the Mona Lisa, a banana, your car. The creator sets a reference price per unit in $, converted once at deploy time into an ETH price and locked into the pool’s starting tick. Paired against WETH. Reusable by an unlimited number of memes.
- MEME
- Paired against one ASSET — never against WETH directly. Kaiten-style bonding curve: a fixed opening market cap, ~80% of supply sold as the range is walked. Anti-snipe caps any single transaction to 0.5% of supply for the first 5 minutes.
Both pool types are single-sided (unilateral) Uniswap V3 positions: 100% of the 1B supply goes in at deploy, at one edge of the range. Nobody — including the creator — provides matching liquidity on the other side. There’s no rug because there’s nothing held back to rug.
How a launch works
- 1 — Price an asset (optional if one already exists)
AssetFactory.createAsset(name, symbol, imageURI, lore, loreUrl, refPriceUsd, initialTick, salt), payable 0.01 ETH.initialTickis computed off-chain from your $ price and the live ETH/USD rate, then rounded to the pool’s 200-tick spacing. A single unilateral WETH/ASSET position opens at that tick, sized to make the price nearly fixed — deep enough that ordinary trading barely moves it.- 2 — Launch a meme
MemeFactory.createMeme(asset, name, symbol, imageURI, description, startFdvInAssetUnits, initialBuyMinOut, salt). The starting FDV is converted through the asset’s own live WETH/ASSET pool price and checked against on-chain bounds (0.2–4 ETH equivalent). An optional same-transaction initial buy is supported viamsg.value.- 3 — Trade
- Buys and sells route through
SwapRouter02.exactInput, multi-hop WETH → ASSET → MEME (and back).RwapadRouterwraps this intobuyWithETH/sellForETHfor anything that just wants to spend or receive native ETH — see Trading via the router. - 4 — Claim fees
- Every LP position is minted straight to
FeeLockerand never leaves — no withdraw-principal function exists on that contract. Pool fees accrue in whatever token sits on each side;claimFeesswaps them to ETH before paying out, split 50/50 between creator and protocol, on both ASSET and MEME positions alike.
Fees
- Creating an asset
- 0.01 ETH, paid to the treasury, once.
- Launching a meme
- No creation fee.
- Trading
- 1% per swap, on both pool types (WETH/ASSET and ASSET/MEME). Split exactly 50/50 between the asset’s or meme’s creator and the protocol treasury — the creator earns 0.5% of every trade, in ETH, claimable anytime through
FeeLocker.claimFees. - Opening market cap
- Fixed at 3 ETH-equivalent for every meme (converted to $ at the live rate — currently well over $2,000 per ETH, so a few thousand dollars). Not a creator choice: everyone opens at the same real starting liquidity depth.
Trading via the router
RwapadRouter is the entry point for bots and scripts — it wraps the multi-hop swap so a caller only has to think in native ETH:
- buyMemeWithETH(meme, minOut, deadline)
- Payable. Sends
msg.valueETH → WETH → ASSET → MEME in one transaction, and reverts if the meme received is belowminOut. - sellMemeForETH(meme, amountIn, minOut, deadline)
- Requires an ERC20
approvefirst. Sells MEME → ASSET → WETH → native ETH, sent back to the caller. - buyAssetWithETH / sellAssetForETH
- Same shape, one hop (WETH ↔ ASSET) — for trading an asset directly, not through a meme.
- Quoting
quoteBuyMeme/quoteSellMeme/ their asset-side equivalents are QuoterV2-backed — call them viaeth_call(a plain read, never a transaction) to get an expected output before settingminOut.- Anti-snipe
- For a meme’s first 5 minutes, any single transaction is capped at 0.5% of supply (enforced via transient storage — EIP-1153 — so it resets per transaction, not per block). A trade over that cap reverts with Uniswap’s generic transfer-failure error, not a named error.
Contracts
All four are verified on Blockscout. None of them has a withdraw-principal function — the only owner powers are the treasury address, the asset creation fee, and a meme’s FDV bounds.
Risk
- Reference prices are not appraisals
- Anyone can price anything at any number. A $ figure on RWAPad is a creator’s claim, not a valuation, an offer to sell the real object, or advice.
- Single-sided liquidity moves in one direction
- A unilateral position only has price room to move away from its genesis tick. That protects against the price falling below where it started — it does not protect against volatility above it, or against a meme’s price going to zero if nobody’s buying.
- Smart contract risk
- Audited, but audited is not risk-free. No contract here is upgradeable — a bug found after deploy cannot be patched in place.
- No recourse
- RWAPad does not custody funds, does not sell tokens, and does not sell the objects tokens reference. Trading is peer-to-pool, permissionless, and final.
FAQ
- Can two memes pair against the same asset?
- Yes — unlimited. An asset is reusable by any number of memes.
- Can a meme change which asset it’s paired to?
- No. The pairing is set at
createMemeand is permanent. - Who can claim creator fees?
- Only the position’s original creator, or the treasury —
claimFeesis not permissionless, to stop a third party from griefing the swap with a bad slippage setting. - What happens if the platform owner disappears?
- Every user-facing flow — create, buy, sell, claim — keeps working. The only things that stop are the two owner-only knobs (asset creation fee, meme FDV bounds), which simply freeze at their last value.
- Is there a presale or team allocation?
- No. 100% of every token’s supply goes into its pool at launch.