> For the complete documentation index, see [llms.txt](https://realmtrade.gitbook.io/realm-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://realmtrade.gitbook.io/realm-documentation/basics/direct-launch.md).

# Direct Launch

The default launch. Straight into Uniswap V4, against ETH or whitelisted ERC20s.

A direct launch is the default way to launch on Realm, and how every Uniswap V4 token is created. There is no bonding curve: the token is created and starts trading on **Uniswap V4 in the same transaction**, in up to **three pools**, each against its own quote currency: ETH, or a whitelisted ERC20 such as a tokenized stock.

There is no launchpad, no curve and no graduation step: the token counts as graduated from its first block.

## How it works

Everything happens in the single `createToken` transaction:

1. The token is deployed, with the same fixed supply of **1,000,000,000** as every Realm token.
2. The supply, minus anything locked in [creator vaults](/realm-documentation/basics/creator-vaults.md), is split across the pools by shares the creator chooses.
3. Each pool opens at the same fixed market cap (see below), holding its share of the supply as **token-only liquidity** from that price upward. Opening a pool needs no ETH or quote tokens.
4. Optionally, the creator buys from one of the pools before anyone else can.
5. Any tokens the pools could not absorb are burned.

Buyers push the price up the pool; sellers can bring it back down toward the opening price.

## Quote currencies and pools

* **1 to 3 pools** per token, each against a different quote currency
* At most one ETH pool, and none is required: a token can trade only against ERC20s
* Wrapped ETH is not accepted as a quote; use an ETH pool instead

Pools are not linked to each other. Arbitrage keeps them aligned once trading starts.

ETH pools use `RealmHook`. ERC20 pools use `RealmHookAnyPair`, which charges taxes in the pool's own quote token.

### Whitelisted quotes

An ERC20 can only be a quote if it is listed in `RealmAssetsWhitelist`. Without that rule, a creator could pair their token with a currency they control, print it, and buy out the pool: a hidden allocation no vault or creator buy would show.

* Listings are managed by approvers appointed by Realm's multisig, who review requests by hand
* Each listing names a Uniswap V2, V3 or V4 pool that prices the asset against ETH. The factory uses it to price the quote at launch
* On Robinhood Chain the list covers Robinhood's tokenized stocks (rStocks), Arcus leveraged pTokens, major coins and a curated set of liquid memecoins. Assets that stop qualifying are delisted
* Delisting only stops new launches against that asset. Existing pools keep trading

## Opening price

The creator does not pick a price. **Every pool opens at a market cap of 1.125 ETH** (price × 1B supply), priced on-chain at launch:

* An ETH pool opens at 1.125 ETH.
* An ERC20 pool opens at the equivalent of 1.125 ETH in its quote, converted at the quote's live price on its whitelisted price pool.

Because every pool starts at the same value, a multi-pool token opens consistently priced across its pairs. The price is rounded to the pool's tick spacing, so it can differ from the target by up to about 2%.

As a guard against a manipulated price pool, the launch reverts if the opening market cap, valued at the rate recorded when the quote was listed, falls outside 1–250 ETH. Realm's keepers can refresh those recorded rates as prices move.

`previewLaunchTick(quote)` on the factory returns the tick, price and market cap a pool against `quote` would open at if created now. Pass `address(0)` for ETH.

## Liquidity is locked forever

Each pool's seed position is held by `RealmLpLocker`, deployed by `RealmDirectGraduatorUniV4`. The locker has no owner, cannot be upgraded, and has no function to withdraw or transfer a position. The liquidity is permanent.

The seed positions do earn the pool's Uniswap LP fee. Anyone can call `collect` on the locker to harvest them, and the fees are split between the creator and the Treasury (see below).

## Fees

* **No launch fee, no curve fee, no graduation fee.** A direct launch costs only gas, plus the creator buy if there is one.
* **LP fee:** the pool's native Uniswap fee tier, 1% or 0.5%, chosen at launch. The share earned by Realm's locked positions is split **70% creator / 30% Treasury**
* **Taxes and tax decay:** available up to 4% per side (4.5% with the 0.5% LP fee), charged by the hook in the pool's quote currency. The tax starts at launch

On ERC20 pools, the hook records taxes at every trade and delivers them in batches: anyone can call `settleFees` on `RealmHookAnyPair` to move accumulated taxes to the creator, for one token or many at once. Creators receive their share in the quote token and claim it as is. See [Fee Structure](/realm-documentation/basics/fee-structure.md#claiming).

## Creator buy

The creator can buy from **one** of the pools in the creation transaction, paid either:

* in that pool's quote currency: ETH for an ETH pool, or an ERC20 amount the factory pulls from the creator (approve the factory first), or
* in **ETH on an ERC20 pool**: the factory converts the ETH into the quote through the quote's whitelisted Uniswap V4 price pool, then buys. The creator can set a minimum conversion output. The route is chosen by the factory, never by the caller.

The buy is an ordinary swap: it pays the LP fee and any opening tax, and it must fill completely or the whole launch reverts. The tokens can be split across several recipients, who are exempt from sniper protection.

## What else is available

| Feature                                                                                               | On a direct launch                                                                                           |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| [Liquidity tiers](/realm-documentation/uniswap-v2-tokens/liquidity-tiers.md)                          | No — every pool opens at the same fixed market cap                                                           |
| [Creator vaults](/realm-documentation/basics/creator-vaults.md)                                       | Yes, same limits. The token is graduated from birth, so vaults follow their cliff and vesting schedule alone |
| [Sniper protection](/realm-documentation/basics/launch-protections.md)                                | Yes, covering every pool                                                                                     |
| [Tax decay](/realm-documentation/basics/launch-protections.md#tax-decay)                              | Yes                                                                                                          |
| [Earnings allocation and dividends](/realm-documentation/basics/fee-structure.md#earnings-allocation) | Yes, without needing a tax. A pool's quote token can itself be a payout asset                                |
| Renounce ownership                                                                                    | Yes                                                                                                          |
| Referral                                                                                              | Recorded on-chain, nothing is paid                                                                           |

## Ownership and admin powers

A direct-launch token has no launchpad, so Realm's launchpad admins have **no powers over it**: they cannot lower its tax, rescue tokens from it, or reassign its ownership. Only the token owner can lower the tax, and nobody can once ownership is renounced. Fee receivers can still be rebalanced by the token owner or a Realm admin, as for every token.

## For integrators

* Entry point: `RealmFactoryUniV4Direct.createToken` — address in [Contract Addresses](/realm-documentation/developers/contract-addresses.md#direct-launch-uniswap-v4)
* A direct launch is recognisable by `TokenCreated.launchpad == address(0)`. It never emits `TokenLaunched` or `BondingCurveAssigned`
* Each pool seeded emits `PoolSeeded(token, quote, poolId, weightBps, tick, liquidity, launchMarketCap, targetMarketCap, quoteDecimals, quoteSymbol)`. `targetMarketCap` is 5× the opening one, a milestone the interface shows as progress; nothing happens on-chain when it is reached
* Trades on ERC20 pools emit `RealmQuoteSwapBuy` / `RealmQuoteSwapSell`, kept separate from the ETH-denominated `RealmSwapBuy` / `RealmSwapSell`
* `BuyOnDeploy.quoteSpent` is in the quote of the pool the creator buy ran on. When the buy was paid in ETH on an ERC20 pool, it is the converted quote amount
