reading logs…

    okei.fun documentation

    A launch is a curve,
    not a sale.

    Every token opens at a fixed valuation and trades instantly against its own bonding curve, in native USDC on Arc. There is no presale, no allocation and no unlock schedule — the curve is the entire mechanism, and it treats the last buyer the same as the first.

    01Getting started

    What okei.fun is

    okei.fun is a permissionless token launchpad on Arc, Circle’s USDC-native L1. Anyone can create a token in one transaction. The token is a fixed-supply ERC-20 of 1,000,000,000 units, and every unit of it starts inside a bonding curve that holds native USDC.

    The curve is a market from the first block. There is no listing step, no order book and no counterparty — buying moves the price up along a fixed formula and selling moves it back down. Nobody, including us, can mint more, change the terms of a launch after it is created, or withdraw the USDC a curve holds.

    Terms are snapshotted at creation. If the operator retunes the launchpad afterwards, an existing launch keeps the deal it opened with.

    02Getting started

    How a launch works

    Four states, in order, and each one is visible on the token page:

    1. 1Live on the curveBuys and sells happen against the curve. Price is a pure function of the reserves, so it cannot move without a fill.
    2. 2GraduatedThe raise target is met and the curve closes. It stops quoting. Nothing can be bought or sold until the next step runs.
    3. 3MigratedLiquidity is paired into a pool at the curve’s closing price and the LP tokens are burned. migrate() is permissionless — anyone can call it, and we run a keeper that does so automatically.
    4. 4Trading on a poolThe token trades on the pool from then on. The curve is finished and holds nothing.

    03Getting started

    Network

    okei.fun runs on Arc Testnet today. The thing to know about Arc is that the gas token is USDC — you do not hold a separate asset to pay fees.

    Network
    Arc Testnet
    Chain ID
    5042002
    RPC
    https://rpc.testnet.arc.io
    Explorer
    https://testnet.arcscan.app
    Gas token
    USDC

    Native USDC on Arc carries 18 decimals; the USDC ERC-20 at 0x3600…0000 is the same funds at 6. They are one pool of money viewed two ways, and mixing them misprices by 1012 silently. Everything on this site speaks the native 18-decimal form.

    Arc mainnet is chain 5042, public from 16 September 2026. Circle has published testnet parameters only so far — its own documentation says mainnet endpoints are released separately — so this site runs on testnet until that endpoint exists.

    The app is already keyed per chain: every contract address, the explorer and the network chip all read from the chain in use rather than assuming testnet. Enabling mainnet is an endpoint, a factory address and a chain ID, not a rewrite. It stays unregistered until its RPC is set, so a half-configured mainnet cannot take the site down.

    04Using okei.fun

    Launch a token

    One transaction mints the token, opens its curve and — optionally — places your opening buy in the same call. That last part matters: because the buy is atomic with creation, nobody can see the launch and get in front of it.

    You supply a name, a ticker, an optional logo and optional social links. The logo is pinned to IPFS and the token stores an ipfs:// URI — the image itself never goes on chain, where it would cost millions of gas.

    Liquidity goes to an OkeiSwap pool when the curve fills. That is frozen onto the contract at creation, so it is part of the deal every later buyer accepts.

    05Using okei.fun

    Trade on the curve

    Buying sends USDC and receives tokens; selling does the reverse. Both quote from the same reserves, so the price you see is the price the contract computes.

    A position is worth two different numbers and the token page shows both. The mark is balance × spot price. The exit is what selling all of it would actually return — walking back down the curve and paying the fee on the way out. The gap between them widens with position size, and it is the number a mark alone hides.

    Every trade panel refuses to sign while the index is stale. If the data behind a quote is behind the chain, the site says so instead of letting you trade on it.

    06Using okei.fun

    Graduation

    A curve graduates when its raise target is met. At the stock configuration that is a 25× move from the opening valuation to the close, because price on a constant-product curve rises with the square of the USDC that has entered.

    At migration the USDC raised — less the migration fee — is paired against the tokens the curve still holds, at exactly the closing price. Whatever cannot be paired is burned, which is why a graduated token has a smaller supply than it launched with: about 43,200,000 of the 1,000,000,000 at stock parameters. Market cap and every holder percentage on this site are computed against the live supply, not the launch constant.

    The LP tokens are burned at migration, so the liquidity cannot be withdrawn by anyone, including us. That claim is only unconditionally true while the burned seed is the only liquidity in the pool — which is why the pools page does not accept deposits.

    07Using okei.fun

    Fees

    Trade fee, on the curve
    1% of each fill
    Migration fee
    2% of the raise, once
    Pool fee, after graduation
    0.30% of each swap
    — to liquidity
    0.20%
    — to the protocol
    0.05%
    — to the creator
    0.05%

    The creator’s share of an OkeiSwap pool accrues for as long as the pool trades. It is paid by claimFees(), which is permissionless and pushes: it sends the creator’s share to the creator’s own address regardless of who calls it. A creator with no gas can be paid by a stranger, and nobody can redirect it.

    08Protocol

    The bonding curve

    Constant product, x · y = k, against a virtual USDC reserve. The virtual reserve is what sets the opening price without anyone having to deposit first — it is an accounting figure, it is never payable, and it is deliberately excluded from the liquidity number shown on a token page.

    Because price is a pure function of the reserves and every fill event carries the reserves it left behind, two things follow that are unusual for a chart: a candle’s close is an exact on-chain number rather than a sample, and a period with no fills is genuinely flat rather than missing data.

    Supply
    1,000,000,000 tokens, fixed at launch
    Opening valuation
    $6,000 at stock parameters
    Raise target
    $24,000 at stock parameters
    Launch → graduation
    25×

    Testnet runs a 24 USDC target against a 6 USDC virtual reserve rather than the stock thousands, so a launch can be filled with faucet money. The ratios, and therefore the 25×, are identical.

    09Protocol

    Liquidity after graduation

    OkeiSwap is our own constant-product AMM. Its pools hold native USDC against one token, seeded at the curve’s closing price with the LP burned. A launch that graduates here keeps trading on this site, and its creator earns from it forever.

    A Uniswap venue was offered and has been withdrawn. Uniswap’s Arc deployment is v3 and v4 — there is no v2 in it — so the pair those launches would have created has no canonical home on this chain. The option remains in the contract for the launches that already chose it, and will return if it can point somewhere real. A v4 pool is a different piece of engineering, not a relabel: a v4 position is an NFT, and unlike a fungible V2 LP token it cannot be burned while it still holds liquidity — which is why other launchpads park theirs in a vault contract instead of destroying it.

    Either way the token is a normal ERC-20 and can be traded anywhere that lists it. The venue choice decides where we put the liquidity, not where the token is allowed to go. Token-to-token swaps between any two graduated OkeiSwap launches are one transaction at the swap.

    10Protocol

    Contracts

    All contracts are verified on the explorer. The factory is the address every launch on this site comes from — if a token was not created by it, this site will not show it.

    Multicall3
    0xcA11bde05977b3631167028862bE2a173976CA11
    USDC ERC-20 view
    0x3600000000000000000000000000000000000000

    The owner can retune parameters for future launches. There is no withdrawal path out of any curve, and no function that changes an existing launch’s terms.

    11Developers

    Public API

    Every figure on this site is served by a public, unauthenticated JSON API. You are welcome to use it. Responses are uncached and carry a freshness envelope describing how far behind the chain the index is.

    GET /api/launches
    Ranked, paged, searchable launch list
    GET /api/launches/{curve}
    One launch
    GET /api/launches/{curve}/trades
    Its tape
    GET /api/launches/{curve}/candles
    OHLC, aggregated on the fly
    GET /api/launches/{curve}/holders
    Distribution
    GET /api/launches/{curve}/graph
    Holder connections
    GET /api/pools
    OkeiSwap markets
    GET /api/portfolio/{address}
    Positions, basis and PnL
    GET /api/dashboard
    Daily activity
    GET /api/stats
    Totals
    GET /api/stream
    Server-sent events on every change

    Read the freshness object before you trust a number. It carries the indexed block, the head block, how far behind the two are, and whether the index considers itself stale.

    12Developers

    The index

    Launch state, trades, holders and cost basis are served from a Postgres index built by replaying logs, not from a contract call per visitor. A holder count has no contract call at all — it can only be built from Transfer logs.

    This is the one honest limitation worth knowing about. Arc prunes logs roughly 250,000 blocks behind the head, so history older than the index cannot be recovered by us or by anyone. Where a figure depends on history we do not have — a cost basis, a wallet connection — the site reports it as unknown rather than guessing. An absent number means not recorded, never zero.

    13Safety

    How risk is measured

    Every token page carries a What to check panel. These are the exact definitions behind it. They are published because a number you are asked to act on is worse than useless if it quietly means something else.

    There is deliberately no score. A composite grade is a judgement wearing the costume of a measurement: it hides which input moved, it invites launches to be built against it, and the first time something scoring well goes badly, every other score on the site becomes worthless. Each row is a number and its definition; the weighing is yours.

    Creator holds
    The launch address's balance, over circulating supply
    Top 10 hold
    The ten largest holders summed, over circulating supply
    Connected wallets
    Holders joined by any chain of token transfers
    Bought in the launch block
    Buys in the creation block, creator excluded
    Bought within 20 blocks
    ≈10 seconds on Arc, excluding the launch block

    Attribution. A buy is credited to whoever received the tokens, never to whoever sent the transaction. The factory performs a creator’s opening buy and a router performs routed swaps, so counting senders would credit contracts and miss people.

    The creator’s opening buy is never counted as a bundle. `createToken` places it atomically with creation by design, which is what stops a launch being sniped before its creator can buy. Flagging it would mark every honest launch.

    Wallets and share are different questions, so both are shown. Twenty snipers who sold on day one are history; two who still hold 40% are a live risk. The count says what happened, the share says what is still true.

    Where a figure cannot be computed it says so rather than saying zero. The two windowed figures need the creation block, and a launch whose `TokenCreated` log was pruned before the index first read it has none. Those read “not measurable”. Reporting “0 snipers” for a launch nobody can measure would be a safety claim we have not earned — the most damaging kind of wrong a panel like this can be.

    The same applies to connections. Transfers are only recorded from the point the edge table began, and Arc prunes older logs beyond recovery, so no line drawn means not recorded, never not connected.

    14Safety

    Risks

    This is testnet software. Trade with money you can afford to lose.

    • Anyone can launch anything. A name and a ticker are not a claim to be the project they resemble — check the creator address and the contract, not the logo.
    • A creator can buy their own launch at the opening price and sell into later buyers. The holder list marks the creator and shows their share; the concentration figures above it say how much the top wallets hold.
    • Concentration is not the same as safety. Ten wallets at 8% each can be one person. The holder map draws the transfers between them where they were recorded.
    • Selling walks the curve down. The larger the position, the further the exit sits below the mark, and the gap is charged to you.
    • A graduated launch that has not migrated cannot be traded anywhere until migrate() runs. It is permissionless — if our keeper is down, you can call it yourself.

    Contact

    Talk to us

    Same handle on both, which is deliberate — an impersonator’s easiest opening is a project whose accounts do not obviously match. We will never message you first, and we will never ask for a seed phrase.

    Something here wrong or unclear? The contracts are the source of truth and they are verified on the explorer — read those first, and treat this page as a description of them rather than a substitute for them.