Archemist Docs
Back to App
v2.0 • Built on Arc Network™

Introduction

ArchemistV2 is a fixed-supply launch protocol on Arc. Every launch creates the token, opens its TOKEN/USDC Uniswap V3 market, mints the launch liquidity position, and transfers that position to the Archemist Locker in one transaction.

Immediate Liquidity

Tokens trade directly against system USDC as soon as the launch transaction confirms.

Creator-Locked LP

The launch position is held by the Archemist Locker and cannot be withdrawn by the token creator.


How ArchemistV2 Works

ArchemistV2 uses one fixed launch configuration. Creators choose the token metadata, fee administration wallets, and optional initial buy; the supply, starting market value, V3 fee tier, and launch liquidity policy are enforced by the Factory.

Launch Configuration

STARTING FDV
≈ $4,995.43
TOKEN SUPPLY
1,000,000,000
V3 FEE TIER
1%
LP FEE SPLIT
80 (Creator) / 20 (Protocol)
  • Direct market: Trading begins immediately in the canonical TOKEN/USDC V3 pool.
  • Fixed price policy: Creators cannot configure a different starting market value.
  • Fee allocation: Collected LP fees are currently credited 80% to the creator recipient and 20% to protocol. The split is owner-adjustable per deployment and not fixed for the life of the contract.
  • Canonical identity: Duplicate names and symbols are valid; integrations must use token and pool addresses.
USDC units on Arc

Native USDC uses 18 decimals for gas and payable launch value. System ERC20 USDC uses 6 decimals at 0x3600000000000000000000000000000000000000 for V3 approvals, swaps, pool accounting, and fee claims.


Launch a Token

Launches use the Factory's single public entry point: createToken(CreateParams). The deployment fee is 0.1 native USDC, plus any optional initial buy.

Launch Parameters

name / symbol

ERC20 display metadata. It does not need to be globally unique.

salt

Creator-scoped CREATE2 salt used to derive the token address.

minTokensForCreatorBuy

Minimum token output for the optional initial buy.

creatorFeeAdmin

Wallet authorized to update future creator fee roles.

creatorFeeRecipient

Wallet credited with newly collected creator LP fees.

The transaction sender, fee admin, and fee recipient may be different addresses. Updating the recipient affects future collections only; previously credited balances remain with the old recipient.

Launch Example

Convert the six-decimal creator buy to native eighteen-decimal units, add the deployment fee, and send the combined value with createToken.

launch-v2.ts
import { parseEther, parseUnits } from "viem";

const creatorBuyUsdc6 = parseUnits("100", 6);
const nativeValue = parseEther("0.1") + creatorBuyUsdc6 * 10n ** 12n;

const hash = await walletClient.writeContract({
  address: ARCHEMIST_V2_FACTORY,
  abi: factoryAbi,
  functionName: "createToken",
  args: [{
    name: "Example Token",
    symbol: "EXAMPLE",
    salt,
    minTokensForCreatorBuy,
    creatorFeeAdmin: account,
    creatorFeeRecipient: feeReceiver,
  }],
  value: nativeValue,
});

// Decode TokenCreated from the confirmed receipt.
// token, pool and positionId are the canonical identifiers.

Receipt Mapping

Decode TokenCreated from the confirmed receipt. Store the emitted token, pool, and position ID as the canonical launch identifiers.

TokenCreated.sol
event TokenCreated(
  address indexed token,
  address indexed creator,
  address indexed pool,
  uint256 positionId,
  address creatorFeeRecipient,
  uint24 poolFee,
  int24 normalizedTick,
  int24 actualPoolTick,
  uint160 initialSqrtPriceX96,
  uint256 tokensInPosition,
  uint256 creatorBuyNative,
  uint256 creatorBuyTokens
);

Fees & Custody

The Locker holds each launch position and accounts for LP fees without giving creators control over the NFT itself.

Creator Roles

Fee Admin

Controls future updates to the creator fee administrator and creator fee recipient.

Fee Recipient

Receives the creator's share (currently 80%) when new LP fees are collected and credited.

Collect & Claim

collectFees(token)

Collects fees from the launch position and credits protocol and creator balances per the current split (currently 20:80).

claimable(account, asset)

Returns an account's credited balance for either launch token or system USDC.

claim(asset, to)

Transfers only the caller's credited balance to the requested recipient.

LP Custody

Launch position

The Uniswap V3 NFPM position created at launch remains in Archemist Locker custody. Token creators cannot remove the launch liquidity or transfer its NFT.


Protocol Reference

Canonical Arc deployments and the minimal interfaces needed for launches, V3 market discovery, swaps, and fee claims.

Network & Contracts

LIVE

The launch Factory and Locker are ArchemistV2 contracts. V3 infrastructure uses the canonical Arc deployments listed below. A prior Factory/Locker pair (0x926629E3b2069fF50773400C6f54Cc11B47Ee0F4 / 0x621ea0c825936329B5EB57e6aF0E1BF596F69f9F) remains live read-only custody for tokens launched before this pair — new integrations should target the addresses below.

Arc Mainnet · Chain 5042
ArchemistV2 Factory0x297Cebc4de347347205CD08667b56ee951dd8810
ArchemistV2 Locker0x7Dd53C388F650c0DaB535eFb03d8bd80F0A6bD07
System USDC (ERC20 · 6 decimals)0x3600000000000000000000000000000000000000
Uniswap V3 Factory0xf0db7b58379503491d857dB50AC9ece64c653918
Nonfungible Position Manager0x39654a85a4c05127f5fd6ed22caec077a0fb1377
SwapRouter020x53bf6b0684ec7ef91e1387da3d1a1769bc5a6f77
QuoterV20x7dfd4f31be6814d2906bde155c3e1b146eac1468
Arc Testnet · Chain 5042002
ArchemistV2 Factory0xfc07569be3FF9405F4065ea3ddf839c8246C9bc6
ArchemistV2 Locker0x488bAa0EDE8782dBf450edB081e2e9704DAf8f30
System USDC (ERC20 · 6 decimals)0x3600000000000000000000000000000000000000
Uniswap V3 Factory0x32440A432500cB49ffAAF8AB18749D0048fc6aA2
Nonfungible Position Manager0xf506Eeb2dD5eBDc64e615607c0e5668698A17dFF
SwapRouter020x0df09F620FcBF56F60265C21170DD84438d51867
QuoterV20xDD119dd34376BDFfE733fe87471Aa9aB159D8F1a

Contract Interfaces

Integrations launch and discover markets through the Factory, then use the Locker for creator role management and fee accounting.

Factory

Creates tokens and exposes the canonical pool, LP position, fee tier, ticks, and token ordering.

createTokenlaunchInfoForToken

Locker

Holds launch positions, splits collected fees, exposes claimable balances, and manages creator roles.

collectFeesclaimupdateCreatorFeeRecipient
Factory ABIView code
ArchemistV2USDCFactory.json
[
  {
    "type": "function",
    "name": "createToken",
    "stateMutability": "payable",
    "inputs": [{ "name": "p", "type": "tuple", "components": [
      { "name": "name", "type": "string" },
      { "name": "symbol", "type": "string" },
      { "name": "salt", "type": "bytes32" },
      { "name": "minTokensForCreatorBuy", "type": "uint256" },
      { "name": "creatorFeeAdmin", "type": "address" },
      { "name": "creatorFeeRecipient", "type": "address" }
    ]}],
    "outputs": [
      { "name": "tokenAddress", "type": "address" },
      { "name": "pool", "type": "address" },
      { "name": "positionId", "type": "uint256" }
    ]
  },
  {
    "type": "function",
    "name": "launchInfoForToken",
    "stateMutability": "view",
    "inputs": [{ "name": "token", "type": "address" }],
    "outputs": [
      { "name": "creator", "type": "address" },
      { "name": "pool", "type": "address" },
      { "name": "positionId", "type": "uint256" },
      { "name": "poolFee", "type": "uint24" },
      { "name": "normalizedTick", "type": "int24" },
      { "name": "actualPoolTick", "type": "int24" },
      { "name": "initialSqrtPriceX96", "type": "uint160" },
      { "name": "tokenIsToken0", "type": "bool" }
    ]
  }
]
Locker ABIView code
ArchemistV2USDCLocker.json
[
  "function claimable(address account,address asset) view returns (uint256)",
  "function collectFees(address token) returns (uint256 amount0,uint256 amount1)",
  "function claim(address asset,address to) returns (uint256 amount)",
  "function updateCreatorFeeRecipient(address token,address newRecipient)",
  "function updateCreatorFeeAdmin(address token,address newAdmin)"
]

DEX Routing

Token-page trading reads launchInfoForToken(token).poolFee. Current Archemist launch pools use fee tier 10000. Approve Router02 against the six-decimal system USDC interface and do not send native value to Router02.

trade-launch-pool.ts
const amountIn = parseUnits("100", 6); // linked ERC20 USDC

await approve(SYSTEM_USDC, SWAP_ROUTER_02, amountIn);
await router.exactInputSingle({
  tokenIn: SYSTEM_USDC,
  tokenOut: launchToken,
  fee: launchInfo.poolFee, // current launch tier: 10000 (1%)
  recipient: account,
  amountIn,
  amountOutMinimum,
  sqrtPriceLimitX96: 0n,
});

// Do not send native value to Router02.
Generic routing

The generic swap page compares fee tiers 100, 500, 3000, and 10000. It also evaluates two-hop routes through system USDC when neither endpoint is USDC.

Route discovery outlineView code
find-best-v3-route.ts
const feeTiers = [100, 500, 3000, 10000];

// Compare every viable direct path.
// If neither endpoint is system USDC, also compare:
// tokenIn -> systemUSDC -> tokenOut
// using QuoterV2.quoteExactInput(encodedPath, amountIn).
// Submit the best encoded path with Router02.exactInput.

Generic V3 Liquidity

Generic liquidity positions are normal user-owned NFPM NFTs. Users select their fee tier and tick range, then manage those positions through the standard V3 position manager. They are separate from Archemist launch positions held by the Locker.


v4.0 • Uniswap v4 Hook Launcher

Archemist V4

Archemist V4 is a separate, newer launch protocol built on a single custom Uniswap v4 hook (ArchemistV3Hook) attached to every launch pool. The deployed contracts keep their original ArchemistV3* names on-chain — the generation is called V4 here so it matches the Uniswap v4 pools it creates. It is not a replacement for ArchemistV2 above — both run independently on Arc — but it adds anti-snipe protection, a front-run-proof atomic creator buy, and an automatic ARCH buyback on every trade, none of which exist in V2.

Permanently Locked Liquidity

The full token supply is minted as a one-sided LP position directly into the Locker at launch. There is no withdraw or remove-liquidity function anywhere in the contracts — not even for the owner.

Automatic ARCH Buyback

A fixed share of every trade's fee is swapped into ARCH and sent to treasury automatically, triggered by the hook itself. No keeper, no bot, no separate transaction.

How It Works

A creator launches with one transaction: token name/symbol, quote currency, a target starting FDV, and their anti-snipe and fee-share settings. The launcher deploys the token, initializes the pool at a tick computed on-chain from the target FDV, and mints the entire supply as launch liquidity — all in the same call. Trading is live the instant the transaction confirms.

  • Fixed supply: 1,000,000,000 tokens, 18 decimals, minted once at launch. No mint function exists afterward.
  • Locked forever: The launch position lives in ArchemistV3Locker, which has no owner at all and no way to withdraw the underlying liquidity.
  • Config locked at launch: Anti-snipe fee, decay window, and max-buy cap are set once in Hook.lockConfig() and can never be changed afterward — not by the creator, not by the protocol owner.
  • No owner-side rug switches: ArchemistV3Hook has no owner or privileged function whatsoever — it cannot pause trading, change fees post-launch, or block a wallet.

Anti-Snipe & Creator Buy

Every launch decays a starting fee down to a permanent floor over a short window, specifically to make sniping the first few blocks unprofitable for bots — while giving the creator themselves a way to buy in that bots categorically cannot front-run.

Anti-Snipe Decay

STARTING FEE RANGE
1% – 99%
FLOOR (FOREVER)
1%
MAX DECAY WINDOW
120s
  • Quadratic decay: the fee decays from the creator's chosen starting rate down to the 1% floor over the decay window, then stays at 1% permanently.
  • Max buy per trade: during the decay window, a single buy cannot exceed a creator-set percentage of total supply (minimum 0.1%) — bounding how much of the launch any one snipe attempt can capture.
  • Atomic creator buy is exempt from both: if the creator sets an initial buy amount, it executes inside the very same transaction as the launch itself, so there is no window for anyone to front-run or back-run it. Because it can't be sniped, it's charged the flat 1% base fee instead of the decaying rate, and isn't subject to the max-buy cap.

Fees & Buyback

Every trade — buy or sell — pays a fee in the quote currency, split three ways automatically. There is no separate claim step for the buyback portion; it converts to ARCH and moves to treasury on its own.

Creator Share

50%–80% of every trade's fee (bounded per quote currency, set by the creator at launch within that range).

Buyback Share

A fixed 12.5% of every trade's fee, swapped into ARCH and forwarded to treasury.

Treasury Share

Whatever remains after the creator and buyback shares.

Buy vs. Sell Fee Rate

Buys

Pay the decaying anti-snipe rate during the launch window (see above), then the 1% floor afterward. The creator's own atomic buy always pays the flat 1% base rate.

Sells

Always pay the flat 1% base rate — no anti-snipe decay applies to sells, since that protection exists against bots buying in at launch, not against selling out.

How the Buyback Executes

ArchemistBuybackVault accumulates the 12.5% share from every trade and periodically swaps it for ARCH. execute() is permissionless — anyone can call it, and the hook itself calls it automatically right after a trade generates a fee — but it's guarded against abuse by three independent checks:

Cooldown — 6 hours

Minimum time between successful executes, shared per quote currency (not per token) — every USDC-quoted launch shares the same cooldown clock.

Epoch cap — 30%

A single execute() can only swap up to 30% of the vault's current balance of that currency, so no single call can drain it.

Price-drift check

Refuses to execute if the pool's spot price has moved too far from the vault's own rolling reference price, guarding against a manipulated pool.

A trade during cooldown still succeeds

If a buyback attempt reverts (cooldown active, price drift, or no route yet), the hook catches it silently — the trade itself is never blocked, and its fee still gets recorded and paid out normally. The accrued fee isn't lost: it simply sits as claimable balance until the next successful execute() call sweeps up everything accumulated since the last one.

Any quote currency automatically routes to ARCH via a two-hop chain (asset → linked USDC → ARCH) if it doesn't have a direct ARCH pool of its own, so buyback works for any launch quote with a real pool into linked USDC — not only ones paired directly with ARCH.

V4 Reference

Token addresses and current deployment for Archemist V4 on Arc Mainnet.

Supported Pairs

Two token addresses matter for every V4 launch: the quote currency you launch against, and ARCH, the token your trading fees automatically buy back.

Arc Mainnet · Chain 5042
System USDC (linked ERC-20)$USDC6 decimals
0x3600000000000000000000000000000000000000

Launch quote currency — the only pair currently offered when launching a new V4 token.

Archemist$ARCH18 decimals
0x5042419b1F2498959787Bc23Be1F484Ed1306650

Buyback target — every trade's buyback share is automatically swapped into ARCH and sent to treasury.

Contract Addresses

LIVE

Current (fifth) V4 deployment on Arc Mainnet. ArchemistBuybackVault is not upgradeable and the launcher's buyback vault address is one-time-set with no setter, so every meaningful vault change so far has required a full-stack redeploy — these addresses will change again if that happens. Tokens launched under a superseded deployment stay on that stack permanently; nothing breaks for existing holders, they simply don't get later fixes.

Arc Mainnet · Chain 5042 · Deployment #5
Uniswap v4 PoolManager0x8366a39CC670B4001A1121B8F6A443A643e40951
ArchemistPairRegistry0x13bDbB044127De3b5c0E768c4f53525BB6Ab9414
ArchemistV3Launcher0x28C032E1bEe2d1a95F89C6d8Df90D7c3b503D105
ArchemistV3Locker0x6Fd5D19A4Ba5e0A1Cc86c2Ab2D0ae2cFdDF60800
ArchemistV3Hook0x11E652f7538f25228644C89Ceff69c34Dfb6e8cC
ArchemistBuybackVault0xfbbd02802DDE5529c484c4DC0FFa7adC180ab9c2
Arc is a trademark of Circle Internet Group, Inc. and/or its affiliates.