size.fun Open app

Reference

Contracts

Every deployed address on X Layer, what each one does, and the parameters they are running today.

Every address below is on X Layer, chain 196, and every one is verified on OKLink. The source is what's deployed, so you can read it instead of taking this page's word for anything.

Launchpad#

ContractAddress on X Layer
LaunchFactory
Creates every coin and its curve, holds the launch terms, and runs graduation. This is the contract you call to launch.
0xfdfCaaF9e744D2C43365a710628469bCAf365491
View on OKLink →
LaunchAndBuy
Creates a coin and buys its curve in a single transaction, so there is no window between the two for anyone to trade against.
0x24274B859C2B99358A7c9ed1da33EbAb832CadB4
View on OKLink →
FeeEscrow
Holds every recipient's claimable balance. Pays whoever calls claim(), so there is no recipient argument to get wrong.
0x401100747741364AD16a96D6Ba5724Bf817Cc25F
View on OKLink →
MemeHook
The Uniswap v4 hook every graduated pool shares. Charges the same 1% on swaps and splits it the same way the curve did.
0x48AB5124B299c4C437eE6B3A03325FF3B9b56044
View on OKLink →
LaunchLocker
Holds the graduated liquidity position. No withdrawal function of any kind.
0x2de052028A272f77763906A68c5a5372000f4eD9
View on OKLink →
BuybackVault
Holds bought-back supply on a five-year vest, for creators who opt into buyback-and-lock.
0x9e4ddfC7c772c1C8E055233C08a9E4dBeC31F873
View on OKLink →
GraduationExecutor
Mints the full-range v4 position at graduation and sends the NFT to the locker.
0xdc306AcBbD096c9266DB712f8737a78596341Bc9
View on OKLink →
LaunchDeployer
Deploys the token and curve pair at their CREATE2 addresses on the factory's behalf.
0x1aaD1c0363E3D84d1Ad96a8F5A91df353cFC6C1E
View on OKLink →
GraduationGuard
Blocks liquidity being added to a graduated pool outside the launchpad's own position.
0xC0C31995B318eDA8B5776Cc94192932B39E0cD6f
View on OKLink →

The two you'll actually call are LaunchFactory to launch, and each coin's own bonding curve to trade. Curves are per coin — find one with getLaunchedToken(token) on the factory.

Seeded launcher#

The second launcher, and a separate deployment rather than a mode of the first. It opens a coin directly into a Uniswap v3 pool and locks the position — see two ways to launch. It shares the escrow above, so a creator's earnings from both arrive in one balance.

ContractAddress on X Layer
V3LaunchFactory
Creates a coin, opens its Uniswap v3 pool, puts the whole supply into it and locks the position, in one transaction. This is the contract you call to launch a seeded coin.
0x3038604B92fb5ef8FfbdDDae5A5730CA4CAdAf62
View on OKLink →
V3LaunchLocker
Holds every seeded launch's position forever. No withdrawal function of any kind; collectFees() is the only way anything leaves, and it pays the escrow.
0x1CA8bfe2E20E17cD14518501a203A001a21ecd3c
View on OKLink →

One launch config per quote asset, read with getLaunchConfig(id) and passed back to launchToken by id. getLaunchedToken(token) answers for a seeded coin the way the curve factory's does for a curve coin — the pool, the position id and the quote asset.

Per-coin contracts#

Two contracts are created for every launch, at addresses derived from the creator's account and their chosen salt:

ContractWhat it is
SizeLauncherToken The coin. Fixed-supply ERC-20 with no owner, no mint, no pause and no transfer tax. Carries the logo, description and socials as read-only metadata.
SizeBondingCurve Holds the whole supply and prices every trade until graduation. Where buy and sell live.

A seeded launch creates one contract instead of two — there is no curve, because the pool is the market from the first block:

ContractWhat it is
SizeV3LauncherToken The coin. Same fixed-supply, ownerless ERC-20 with the same read-only metadata, plus the launch-window rules: no pool buys at all in the launch block bar the creator's own, and a 5% wallet cap for two blocks after. Both expire and neither can be re-enabled.

Uniswap v4#

The canonical X Layer deployment. Graduated pools live inside it.

ContractAddress on X Layer
PoolManager
Uniswap v4 singleton. Every graduated pool lives inside it.
0x360E68faCcca8cA495c1B759Fd9EEe466db9FB32
View on OKLink →
PositionManager
Mints the full-range position graduation seeds.
0xcF1EAFC6928dC385A342E7C6491d371d2871458b
View on OKLink →
Permit2
Canonical Permit2, used by the position manager.
0x000000000022D473030F116dDEE9F6B43aC78BA3
View on OKLink →

Uniswap v3#

Also the canonical X Layer deployment. Seeded pools are created here, which is the whole point of them — a pool on this factory is one every v3 indexer already watches.

ContractAddress on X Layer
Factory
Canonical Uniswap v3 factory on X Layer. Seeded pools are created here, which is why every v3 indexer sees them without being told.
0x4B2ab38DBF28D31D467aA8993f6c2585981D6804
View on OKLink →
PositionManager
Mints the one-sided position a seeded launch opens with.
0x315e413A11AB0df498eF83873012430ca36638Ae
View on OKLink →
SwapRouter02
What buys and sells a seeded coin. Wraps and unwraps OKB in the same transaction, so a trader never touches WOKB.
0x4f0C28f5926AFDA16bf2506D5D9e57Ea190f9bcA
View on OKLink →
QuoterV2
Prices a fill before it is sent, price impact included.
0xD1b797D92d87B688193A2B976eFc8D577D204343
View on OKLink →
WrappedNative
WOKB. A v3 pool cannot hold native OKB, so an OKB-quoted seeded pool is really a WOKB pool.
0xe538905cf8410324e03A5A23C1c177a474D59b2b
View on OKLink →

ABIs#

Every ABI as JSON, cut from the compiler output that produced the deployed bytecode. Fetch these rather than pasting a copy into your own repo, where it goes stale without telling you.

All fourteen in one object, keyed by the names used on this page: /abi/size.json. Or one at a time:

FileSolidity contract
/abi/LaunchFactory.json SizeLaunchFactory
/abi/LaunchAndBuy.json SizeLaunchAndBuy
/abi/BondingCurve.json SizeBondingCurve — one per coin
/abi/LauncherToken.json SizeLauncherToken — one per coin
/abi/FeeEscrow.json SizeFeeEscrow
/abi/MemeHook.json SizeMemeHook
/abi/LaunchLocker.json SizeLaunchLocker
/abi/BuybackVault.json SizeBuybackVault
/abi/GraduationExecutor.json SizeGraduationExecutor
/abi/LaunchDeployer.json SizeLaunchDeployer
/abi/GraduationGuard.json SizeGraduationGuard
/abi/V3LaunchFactory.json SizeV3LaunchFactory
/abi/V3LaunchLocker.json SizeV3LaunchLocker
/abi/V3LauncherToken.json SizeV3LauncherToken — one per seeded coin

OKLink carries the same ABI on each verified contract's page, so these files only save you the click. The Uniswap v3 and v4 contracts are canonical deployments — take their ABIs from Uniswap.

Events to index#

Canonical names, exactly as the contracts declare them. A coin's life happens in two places and an indexer has to follow it across both:

  • Before graduation, trades are logged by the coin's own bonding curve. Those addresses are not known ahead of time — they arrive in TokenLaunched, which is why that is the one event you subscribe to first and everything else follows from it.
  • After graduation, trades are Uniswap v4 swaps, logged by the PoolManager singleton and keyed by pool id rather than by token address. PoolRegistered on the hook is what maps a pool id back to a coin.
  • A seeded coin has neither phase. Its TokenLaunched comes from the V3LaunchFactory and carries the pool address, and every trade after that is that pool's own Swap — the standard Uniswap v3 event, which is why nothing bespoke is needed to follow one.

Lifecycle and trades#

EventEmitted byWhat it marks
TokenLaunchedLaunchFactory A coin exists. Carries its token address, its curve address and its creator.
CurveBuythe coin's curve A buy on the curve — OKB in, tokens out, with the base fee and the creator tax reported separately.
CurveSellthe coin's curve A sell on the curve — tokens in, OKB out, same breakdown.
SnipeTaxChargedthe coin's curve The launch-window penalty was charged on that trade. Separate from CurveBuy so a snipe is distinguishable from an ordinary fee.
CurveCompletedthe coin's curve The curve took its last trade and closed for good.
PoolGraduatedLaunchFactory The Uniswap v4 pool is seeded and its position is locked. From here on, trades are swaps.
PoolRegisteredMemeHook Maps the v4 pool id to the coin, its quote token and its creator.
SwapUniswap v4 PoolManager Every post-graduation trade. Filter by the pool id from PoolRegistered.
Transferthe coin Standard ERC-20. Holders and balances.

Fees and earnings#

EventEmitted byWhat it marks
FeesSweptthe coin's curve Curve fees pushed out, split protocol / buyback / creator.
HookFeeCollectedMemeHook The base fee and the creator tax taken on a graduated swap.
PoolFeesSweptMemeHook Graduated fees pushed out, split the same three ways, plus whatever was locked.
CreditedFeeEscrow A recipient's claimable balance went up.
ClaimedFeeEscrow A recipient withdrew.
LockedBuybackVault Bought-back supply went under the five-year vest.
ReleasedBuybackVault Vested supply came out.

The escrow's CreditedToken and ClaimedToken carry the same thing for a coin quoted in an ERC-20 rather than in native OKB.

Signatures and topics#

Declarations as written in the source, each under its topic0. The hook's PoolId is a value type over bytes32, which is what it is in the ABI and what it hashes as.

solidity
// ---- SizeLaunchFactory ----------------------------------------------------

// 0x8d4aad4953d0ca700d468f3753aa14432d1b35b43ec6409f051fb6aa43a89607
event TokenLaunched(
    address indexed token,
    address indexed curve,
    address indexed deployer,
    address pairToken,
    uint256 launchConfigId,
    uint256 graduationThreshold
);

// 0x0a44ef75df69c534f43cd6c1aa3ef8983065fe5fe79ef9e79f6494e6f258c259
event PoolGraduated(address indexed token, uint256 positionId, uint256 tokenAmount, uint256 pairTokenAmount);

// ---- SizeBondingCurve, one per coin ---------------------------------------

// 0xec36bf571f136799e8dc0b0b8bea4b04d8bd3d43de838aab0d5fc21d4cbfc455
event CurveBuy(
    address indexed buyer, address indexed recipient, uint256 quoteIn, uint256 tokensOut, uint256 fee, uint256 tax
);

// 0x8113d738abdcb6b38357e9d53a54a7157861a09031b453651f0fe7fe151f59df
event CurveSell(
    address indexed seller, address indexed recipient, uint256 tokensIn, uint256 quoteOut, uint256 fee, uint256 tax
);

// 0x3bc39a5562b28f5fe8f36cecabfbaa12bb969acf05717994709225fc412a9934
event SnipeTaxCharged(address indexed recipient, uint256 amount);

// 0xf8d37a90738ae063b8b8058b66f5880cf3cf7ab0c5d4fa78219696591dfbfb67
event CurveCompleted(address recipient, uint256 quoteOut, uint256 tokenOut);

// 0x9f4cd7c4ed99d08a797804560c9c5d71d2cf7e101f2e3b5e7d1ca8a24c370e4f
event FeesSwept(uint256 protocolAmount, uint256 buybackAmount, uint256 creatorAmount);

// ---- SizeLauncherToken, one per coin --------------------------------------

// 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
event Transfer(address indexed from, address indexed to, uint256 value);

// ---- SizeMemeHook ---------------------------------------------------------

// 0x01bf263a1db1652580721573296e1a1fa70b3d4c87f61d02a69c4e1109d2d573
event PoolRegistered(PoolId indexed poolId, address memecoin, address quoteToken, address creator);

// 0xc532c43b3423e14ef72748f1c8291238829ca0af8ba9b67975ad1483485a4b4d
event HookFeeCollected(PoolId indexed poolId, address currency, uint256 feeAmount, uint256 taxAmount);

// 0x2f3c43579b9064b6f28edcf41608f3815792d274a56afe024359703cb4ea9b30
event PoolFeesSwept(
    PoolId indexed poolId,
    uint256 protocolAmount,
    uint256 buybackAmount,
    uint256 creatorAmount,
    uint256 tokensLocked
);

// ---- SizeFeeEscrow --------------------------------------------------------

// 0x4e45da441832cf53bdaa69235704fc0575e68210f459ee1562911024b12967d5
event Credited(address indexed recipient, address indexed depositor, uint256 amount);

// 0xd8138f8a3f377c5259ca548e70e4c2de94f129f5a11036a15b69513cba2b426a
event Claimed(address indexed recipient, uint256 amount);

// ---- SizeBuybackVault -----------------------------------------------------

// 0x967ad762aa9070ada8db64577288e214771e89667066ae38e8750cb8a86c5429
event Locked(address indexed token, address indexed depositor, uint256 amount, uint256 newVestingStart);

// 0x82e416ba72d10e709b5de7ac16f5f49ff1d94f22d55bf582d353d3c313a1e8dd
event Released(address indexed token, uint256 creatorAmount, uint256 protocolAmount);

// ---- Uniswap v4 PoolManager -----------------------------------------------

// 0x40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f
event Swap(
    PoolId indexed id,
    address indexed sender,
    int128 amount0,
    int128 amount1,
    uint160 sqrtPriceX96,
    uint128 liquidity,
    int24 tick,
    uint24 fee
);

Live parameters#

What the factory is set to today. These are protocol settings and can change for future launches — a coin freezes the terms it launched under, so a change never reaches back to one already trading.

ParameterValueWhat it is
ChainX Layer (chain 196)Where every contract lives.
Quote assetOKBNative OKB. Coins trade against it from the first second.
Supply1,000,000,000Fixed at launch. Nothing is minted afterwards and nothing is reserved for a team.
Launch fee0.01 OKBPaid once, when the coin is created.
Base trade fee1%Charged on every buy and sell, before and after graduation.
Phantom reserve30 OKBThe virtual OKB that sets the opening price. Nobody deposits it.
Graduation threshold75 OKBReal OKB the curve takes in before it closes.
Pool tick spacing200The graduated Uniswap v4 pool.
Fee termValue
Protocol share of the base fee30%
Creator share of the base fee70%
Buyback share, when enabled50% of the creator's share
Maximum creator tax10%
Hard cap, base fee + creator tax20%
Snipe tax, opening rate99%
Snipe tax window15 seconds
Buyback vest5 years

Network#

ChainX Layer
Chain ID196
CurrencyOKB
RPChttps://xlayerrpc.okx.com
Explorerhttps://www.oklink.com/xlayer
Block time~1 second
Log query cap100 blocks per call

Where this came from#

These contracts are a port of Pons v2, which is MIT licensed and verified on Robinhood Chain. The mechanics are the original's. What changed is the denomination — repriced from ETH to OKB, keeping the ratio that gives the curve its shape — and the name.

Read this before you size a position

These contracts are not audited. They're verified, and the source is a port of a deployed and reviewed original, but neither of those is an audit. The launchpad's mechanics are what these docs describe. The coins launched on it are vetted by nobody, and most of them will go to zero.