Search token / address

Press ⌘K / Ctrl+K

LIVE
No data yet

Docs

Everything about ArcLaunch: mechanics, fees, risks, integration

Overview

ArcLaunch is a place to launch and trade tokens on Circle's Arc network. Browse launches, open any token for details, and trade straight from your wallet. Everything is priced in USDC — on Arc, USDC is both the gas token and the quote asset, so you only ever need one asset.

ArcLaunch never holds your funds. Every launch and trade is a transaction your wallet approves. User principal always sits in pools running official Uniswap V3 bytecode; ArcLaunch's own contracts only ever touch the fee stream.

Key facts
  • Names and symbols can be copied. Always check the token address.
  • Prices come from each token's live trading pool, not from us.
  • Launches can be volatile, illiquid, or lose all value.

How launches work

Creating a launch deploys the token, creates its USDC pool, seeds the whole supply as single-sided liquidity and locks the LP position in the FeeLocker forever (there is no unlock function). The creator sets the name, symbol, image, description, links and fee wallet.

Every token trades against USDC in its own pool. There is no bonding curve and no migration later. Buys and sells happen in that same pool from the moment it launches.

01
Create

The token is minted with a fixed 1B supply and its USDC pool goes live in the same transaction, at the platform-wide opening market cap.

02
Trade

Buys and sells run against USDC in the locked pool and move the price.

03
Graduate

The launch graduates once enough USDC is paired; trading continues in the same pool.

Fair launch: one opening market cap
  • Every new token opens at the same market cap (currently $5.0K); the contract derives the starting price and creators have no price input. pons, by contrast, lets creators pick their own opening price.
  • The admin can change this value; it only affects launches after the change.
Supply1,000,000,000 (1e9)
Pool fee1% (10000)
Launch fee$1.00 USDC · contract constant, immutable
Opening market cap$5.0K USDC
Creator first buyOptional, executes inside the launch block
Fee walletOptional, defaults to the deploying wallet

Launch protection

Buys from the pool are protected for the first 20 blocks after launch (Arc produces a block every 0.5s, so roughly 10 seconds). On the launch block itself only the creator's initial buy can execute. For the rest of the window each wallet can hold at most 5% of supply and buy at most 5.5% per transaction.

Selling and wallet-to-wallet transfers are never restricted, and all limits end once the window closes.

Trading and pricing

The price you see is the live pool price, and it moves with each trade. The amount you actually receive can differ slightly from the quote. Slippage sets how much of that movement you accept.

Price
The current pool price for one token, in USDC.
Market cap
Price × circulating supply (total minus burned).
FDV
Price × full supply. Supply is fixed, so it equals market cap unless tokens were burned.
Price impact
The pool movement caused by the size of your trade.
Slippage
The maximum execution movement your transaction accepts before reverting.
Liquidity
USDC in the pool plus the pool's tokens valued at the current price.

Graduation

A launch graduates once the USDC paired in its locked pool reaches the threshold (currently $10.0K). The progress line tracks how close a launch is.

Graduation only confirms the threshold was reached. It is not a quality signal and does not guarantee future liquidity, price, or an exit. Trading continues in the same pool after graduation. Nothing moves or migrates; fees and the creator split are unchanged.

Fees and payouts

Trading generates a 1% pool fee. The protocol keeps 25% and the creator keeps 75%. The split is snapshotted for each token when it launches and never changes afterward — before and after graduation alike.

Creators receive USDC only, automatically
  • A V3 position accrues fees on both the token and the USDC side. At distribution the token-side fees are sold into the same pool for USDC first, then everything is split. Creators and the protocol only ever receive USDC.
  • A keeper calls distribute() on a schedule (anyone can call it) and pushes the share straight to the creator's payout wallet. If the push fails (e.g. the address is on the USDC blocklist) the amount is parked as claimable.
  • If the token-side swap fails (slippage guard) the tokens are kept for the next attempt; the USDC part is paid out regardless.
  • The fee wallet can be set at launch and rotated instantly at any time by the current payout address (creator center).

Standard tokens

Standard is the default option on the launch page: a plain ERC-20 with no extra logic. What you send is what arrives — the contract never deducts, adds or blocks. The only trading cost is the Uniswap V3 1% pool fee, and the creator's income comes solely from their share of that fee.

Fixed supply
Every token has a total supply of 1 billion, minted once at launch and placed entirely into the V3 pool. There is no mint function, so nobody can ever inflate it.
LP locked forever
The V3 position NFT that represents the liquidity is held by the FeeLocker, which has no withdraw function; neither the creator nor the platform can pull the pool.
No tax, no privileges
Buy and sell tax are both zero. There is no blocklist, pause, fee switch or owner backdoor. The token contract is not upgradeable — the code at launch is the code forever.
What the creator controls
Only the launch-time metadata (name, symbol, logo, description, socials), the payout wallet and an optional first buy. Afterwards the only lever left is rotating the payout wallet. 75% of every 1% pool fee is paid to that wallet automatically, in USDC.
  • If in doubt, launch a standard token: it is the easiest for traders to reason about and needs no special handling by wallets or aggregators.
  • Consider tax mode (next section) only when you need an ongoing marketing or team budget and are willing to make buyers and sellers pay for it.
  • The mode is chosen once at launch: a standard token cannot become a tax token later, and vice versa.

Tax mode

At launch a creator may choose "tax mode": on top of the 1% pool fee, every buy and sell pays a creator-set tax (up to 10% each; the cap is a contract constant). Rates and allocation are immutable fields on the token contract — nobody, including the platform admin, can change them after launch. Standard tokens have zero tax and never touch transfer amounts.

Buy tax
The pool sends the quoted amount; the token deducts the tax from it, so the buyer receives quote × (1 − rate). The UI shows the after-tax amount.
Sell tax
The pool receives the full N you sell; the tax N × rate is charged on top from your balance. Selling N therefore needs N × (1 + rate); max sellable = balance ÷ (1 + rate). This keeps Uniswap V3's received-amount check satisfied so swaps never revert.
Allocation: marketing / team
At launch the creator sets two wallets (marketing, team) and one ratio; buy and sell taxes are both split that way. Tax tokens go to the FeeLocker, are sold for USDC together with fees, and paid out automatically to the two wallets; the protocol takes no cut.
Immutable
Rates, both wallets and the ratio are immutable fields on the token. If a wallet cannot receive (e.g. USDC blocklist) its share is parked in the FeeLocker as claimable and never blocks anyone else's payout.
  • The protocol takes 0 of the tax; protocol revenue is still only the 0.25% pool-fee share and creation fees.
  • System addresses (FeeLocker, settlement contract, PositionManager) are exempt, so fee conversion is unaffected.
  • Tax tokens carry a gold “Buy x% · Sell y%” badge in lists and on the token page, and the trade panel itemises the tax. Check before you buy.
  • Versus dyorswap: its tax tokens can only migrate to Uniswap V2 and pay the deployer wallet; ArcLaunch tax tokens trade in a V3 pool from the first second, the marketing / team wallets are free-form (multisig or cold wallet), and a holder-dividend option is not offered.

Protocol revenue

Every trade's 1% pool fee is split: project / creator 75%, ARCL buyback & burn 5%, reserve 19%, dev team 1%. The creator's 0.75% is paid straight to the creator's wallet by the FeeLocker; the other 0.25% flows into the automatic settlement contract that settles every 7 days (anyone can call execute(); the keeper triggers it on schedule): 0.19% to the reserve multisig, 0.01% to the dev team wallet, 0.05% into the buyback reserve, then spent in slices buying $ARCL and sending it to the 0x…dEaD burn address (Arc forbids transfers to the zero address). Each slice moves the price at most 1.5%, slices are 10 minutes apart, and every fill must be within 10% of the pool's 10-minute TWAP — MEV protection enforced by the contract. Until the platform token is configured the buyback part accrues in the contract. Creation fees go straight to the reserve multisig. The platform keeps no fund pool: every dollar ends up in the multisig, the dev wallet or the burn address. The ratios, the 7-day cadence and both payout addresses are immutable.

Project / creator75% of the 1% fee (0.75%), paid directly by the FeeLocker, unchanged after graduation
ARCL buyback & burn5% of the 1% fee (0.05%), reserved every 7 days and bought in slices (≤1.5% move / 10-min cooldown / 90% TWAP floor)
Reserve (multisig)19% of the 1% fee (0.19%) + all creation fees: creator incentives, operations, audits
Dev team1% of the 1% fee (0.01%), single address fixed at deployment
Dashboard/burn

Burning does not guarantee a higher price.

Admin powers

Contracts are not upgradeable. What the admin (a multisig later) can and cannot do is fully public:

Can
  • Tune opening mcap ($500–$10M), graduation threshold (≥ $1k), protection window (≤ 7200 blocks), buy caps (≥ 1%) — all hard-bounded, new launches only
  • Propose a new creator payout wallet for a token — subject to a 48-hour timelock during which the creator can veto (emergency use only; not open to public requests)
  • Configure which platform token the settlement contract buys back — write-once
Cannot
  • Touch pool funds, the LP position, or withdraw liquidity
  • Change any payout address: the reserve multisig, dev wallet, creation-fee recipient and protocol-share collector are fixed at deployment
  • Change the 75/25 split of any launched token
  • Mint, freeze, pause trading, or upgrade contracts
  • Change a creator's payout address instantly
  • Change the tax rate or allocation of any launched token
  • Change the 75/19/5/1 split, the 7-day cadence, the 1B supply, or the 1% pool fee
  • Change the 1 USDC creation fee or the 10% tax cap, or waive the fee for anyone — both are constants, there is no whitelist

Risk disclosures

Tokens launched through ArcLaunch are user-created and experimental. Review the token address, creator, liquidity, holder concentration, and transaction preview before signing.

  • Prices can move quickly and liquidity can be thin.
  • Similar names and images can represent unrelated tokens.
  • Smart contracts, wallets, RPCs, and indexers can fail.
  • Displayed values are estimates, not execution guarantees.
  • At mainnet launch no third-party audit has been completed yet; unit tests, E2E and static analysis have. User principal sits in official Uniswap V3 bytecode.

ArcLaunch is an interface, not investment advice or a representation of token quality.

Integration

Everything reads directly off the contracts. Index factory and pool events for a trust-minimized onchain source of truth.

Network

NetworkArc Testnet
Chain ID5042002
Native assetUSDC (18dp native · 6dp ERC-20)
Public RPChttps://rpc.testnet.arc.network
Pool fee10000 (1%)
Supply1,000,000,000 (1e9 · 18dp)

Contracts

LaunchFactory
FeeLocker
Treasury
USDC (quote token)
Uniswap V3 Factory
NonfungiblePositionManager
SwapRouter
QuoterV2
Start block

Onchain events

Index the factory's TokenLaunched event, register each emitted pool, and index its Swap events. Onchain events are the authoritative source of truth. There is no migration event; poll graduationStatus(token) for graduation and optionally index token Transfer events for holder balances.

TokenLaunched (topic0)0x4cd2fd90016cf5f6e013c401659f13717b281747a25c4fa208d07db08f0f8dd2
Swap (topic0)0xc42079f94a6350d7e6235f29174924f928cc2ac818eb64fed8004e115fbcca67
Read launches with viem
import { createPublicClient, http, parseAbiItem } from "viem";
import { arcTestnet } from "viem/chains";

const client = createPublicClient({ chain: arcTestnet, transport: http() });

const launches = await client.getLogs({
  address: "0x…",
  event: parseAbiItem(
    "event TokenLaunched(address indexed token, address indexed deployer, address indexed pool, uint256 positionId, bool isToken0, uint256 restrictionsEndBlock, uint256 graduationThreshold, uint256 initialBuyUsdc, uint256 creationFeePaid)",
  ),
  fromBlock: 0n,
  toBlock: "latest",
});
// The public RPC times out on wide eth_getLogs ranges — backfill in bounded chunks (≤ 2000 blocks).
Buy or sell side
// isToken0 comes straight from the TokenLaunched event
usdcDelta = isToken0 ? amount1 : amount0   // signed, from the Swap event
side      = usdcDelta > 0 ? "buy" : "sell" // USDC flowing into the pool = buy

Pricing and graduation

Price comes from the pool's slot0. Square sqrtPriceX96 and invert it when the token is not token0 — and mind the decimals: launch tokens are 18dp, USDC is 6dp, so a 10^12 scale applies. pons has 18dp on both sides, so its formula does not carry over.

Price, market cap and FDV
const [sqrtPriceX96] = await client.readContract({ address: pool, abi: slot0Abi, functionName: "slot0" });

const ratio = Number(sqrtPriceX96) / 2 ** 96;   // sqrt(token1 raw units per token0 raw unit)
const raw   = ratio * ratio;                      // token1 per token0, raw units
// token is 18dp, USDC is 6dp → scale by 1e12
const priceUsdc = isToken0 ? raw * 1e12 : 1e12 / raw;

const supplyTokens = 1e9;
const fdvUsd       = priceUsdc * supplyTokens;
const burned       = Number(await balanceOf(token, "0x000000000000000000000000000000000000dEaD")) / 1e18;
const mcapUsd      = priceUsdc * (supplyTokens - burned);
Graduation status
const [paired, threshold, graduated] = await client.readContract({
  address: factory,
  abi: [parseAbiItem("function graduationStatus(address token) view returns (uint256 paired, uint256 threshold, bool graduated)")],
  functionName: "graduationStatus",
  args: [token],
});
const progress = Number(paired) / Number(threshold); // 0 → 1
Fee split and payout
// locks(token) → (tokenId, token, quote, pool, creator, payout, creatorShareBps, exists)
const lock = await client.readContract({ address: locker, abi: lockerAbi, functionName: "locks", args: [token] });
const creatorSharePercent = Number(lock[6]) / 100;  // 75
const creatorPayout       = lock[5];                 // may differ from the deployer

Self-describing tokens

const tokenAbi = parseAbi([
  "function name() view returns (string)",
  "function symbol() view returns (string)",
  "function logo() view returns (string)",
  "function description() view returns (string)",
  "function liquidityPool() view returns (address)",
  "function deployer() view returns (address)",
  "function restrictionsEndBlock() view returns (uint256)",
  "function socials() view returns (string website, string twitter, string telegram, string discord, string farcaster)",
  // tax mode (0/0 = standard token); all immutable
  "function taxConfig() view returns (uint16 buyBps, uint16 sellBps, address marketing, address team, uint16 marketingShareBps)",
]);

REST / WebSocket

ArcLaunch's own indexer is public for quick integrations (not authoritative — the chain is):

GET /api/tokens?sort=volume&filter=all&window=24hToken list
GET /api/tokens/:addressToken detail (price, mcap, FDV, liquidity, burned)
GET /api/tokens/:address/candles?interval=1mCandles
GET /api/tokens/:address/trades · /holdersTrades and holders
GET /api/stats · /treasury · /healthPlatform stats, settlement & burns, sync state
WS /wsLive trade / launch / fees / graduated / burn events

Versioning and terms

Versioning

Deployed contracts are immutable. New versions ship as new Factory / Locker addresses listed under Contracts; tokens launched on an older version keep trading there and are never moved. Once official Uniswap V4 is live on Arc a new factory may target it, again without touching existing tokens.

Terms

Onchain data is public and free to read; you are responsible for how you use it. ArcLaunch is provided as is, without warranties, and the team is not liable for losses arising from integrations, interfaces, RPCs, or indexers. When referencing ArcLaunch, link back to the app; do not imply a partnership, endorsement, or official status without written agreement, and do not use the ArcLaunch name or marks in a misleading way. ArcLaunch is not an official Arc or Circle product.

Community and support

For integration, indexing, pricing or onchain-state questions, DM us on X: @ArcLaunch_.