Architecture
A handful of contracts of ours, one chain, one perpetuals venue that takes deposits from it directly and pays out through Arbitrum and Circle's bridge, no proxies.
Chain
Avalanche C-Chain, chain id 43114. Blocks come about every second (1.05 s on average over 1,000 blocks, read on chain 2026-09-21) and are final within a second or two; there are no reorgs to wait out in practice. Several blocks can share one timestamp.
The quote asset is USDC, Circle's native dollar on Avalanche, at 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E with 6 decimals — an ordinary ERC-20. It is not USDC.e (0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664), the older bridged token, which nothing here accepts. Gas is paid in AVAX: a transaction costs a fraction of a cent, but a wallet needs a little AVAX to send one. Everything else is paid and received in USDC; the stack has no AVAX path and does not use wrapped AVAX. Verified sources are on Snowtrace.
Contracts
Not deployed on Avalanche yet. Addresses will be listed here at launch, with the deployment block; until then, treat any address presented as Flake Fun's as unverified.
| Address | What it does | |
|---|---|---|
MemeLauncherV3 | listed here at launch | launches coins (launch), opens their pool, performs the bond |
PermanentLockerV3 | listed here at launch | holds every position NFT forever, books and pays fees |
LTFactory | listed here at launch | lists the markets, deploys one vault + one NAV oracle per tracker, routes each to its Lighter market and hedge wallet |
LtUsdcLiquidityManager | listed here at launch | keeps each tracker's USDC reference pool centred on NAV |
NavBatchRelay | listed here at launch | posts the keeper's signed NAVs to every tracker's oracle in one transaction |
Each tracker is an LTVault (the ERC-20 itself, holding its USDC) with its own NAVOracle, both created by the factory. None of these is behind a proxy. What is deployed is what runs, and it cannot be swapped out from under you.
Canonical Uniswap on Avalanche
| Address | |
|---|---|
UniswapV3Factory | 0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD |
NonfungiblePositionManager | 0x655C406EBFa14EE2006250925e54ec43AD184f8B |
SwapRouter02 | 0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE |
QuoterV2 | 0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F |
V4 PoolManager (platform token only) | 0x06380C0e0912312B5150364B9DC4542BA0DbBc85 |
Fee tiers enabled on the V3 factory: 0.01%, 0.05%, 0.3% and 1% (read on chain 2026-09-21). A coin's pool uses the 1% tier (spacing 200); a tracker's USDC reference pool uses 0.05% (spacing 10). Everything is paid and received in USDC; there is no second leg through another asset.
The venue
The position behind a tracker lives on Lighter, an order-book perpetuals exchange built as a zk-rollup on Ethereum with a verifiable matching engine (https://mainnet.zklighter.elliot.ai). Its markets are quoted and margined in USDC, and a Standard account pays no trading fees. A smart contract cannot own a Lighter account, so the positions sit in an account held by the protocol's hedge wallet — a plain wallet whose address each vault stores as its hedgeFunder, the only address the vault can send hedge money to. A wallet may hold at most four sub-accounts on Lighter, so every tracker of the hedge wallet is hedged inside its one cross-margin account, and the keeper keeps a per-tracker ledger of who owns what inside it.
Lighter takes USDC directly from Avalanche: it issues the wallet a deposit address here (createIntentAddress), and a plain USDC transfer to it credits the wallet's account within minutes (minimum 5 USDC). That address belongs to Lighter's bridge operator.
Withdrawals come back another way. Lighter's fast withdrawal pays the wallet on Arbitrum (chain id 42161, USDC 0xaf88d065e77c8cC2239327C5EDb3A432268e5831) in 15–20 seconds according to Lighter's docs, out of a liquidity pool Lighter runs. From there the wallet uses Circle's CCTP V2, which burns USDC on one chain and mints it on the other once Circle's attestation service has signed the burn:
| Avalanche | Arbitrum | |
|---|---|---|
| CCTP domain | 1 | 3 |
TokenMessengerV2 | 0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d | same address per Circle's docs |
MessageTransmitterV2 | 0x81D40F21F12A8F0E3252Bccb954D722d4c464B64 | same address per Circle's docs |
The wallet burns on Arbitrum with the vault as the recipient, so the USDC is minted straight into the vault on Avalanche. The exchange itself is on neither chain, so nothing about a position can be read from Avalanche's state. See The hedge book.
The launcher is the registry
allCoins on the launcher contains exactly the coins it created, in order, and nothing else. The site's board reads it directly.
That has two consequences worth having. Coins from older stacks and abandoned experiments cannot appear at all — there is no deny-list to maintain and no way for a stale index to resurrect one. And a coin is listable in the block it launches, with no indexing lag between the transaction and the board.
What is immutable
| Total supply | 1,000,000,000, minted once in the constructor |
| Fee split | CREATOR_SHARE_BPS = 7000, a constant with no setter |
| Pool fee | POOL_FEE = 10000 (1%), a constant on the launcher |
| Bond threshold | bondBackingUsd = 15,000 USDC, immutable on the launcher |
| Seed floor | minSeedUsdc = 1 USDC, immutable on the launcher |
| Reference-pool floor | minRefPoolUsdc = 500 USDC, immutable on the launcher |
| Leverage ceiling | MAX_LEVERAGE = 5, a constant on the factory |
| Protocol treasury | immutable on the locker |
| Creator of a coin | written at lock, no setter |
| The liquidity lock | absence of any withdrawal function |
Changing any of these means deploying new contracts at new addresses. There is no admin action that alters them in place, and no upgrade path that could.
What is not
The protocol owner can point the front at a different launcher, list or delist the markets the launch form offers (LTFactory.setUnderlying, with the Lighter market id and the leverage a position can hold there), and, on a tracker's vault, change its hedge wallet or cut it off (setHedgeFunder, where address(0) stops every outflow), pause it, and adjust its oracle, its risk parameters and its fees within on-chain caps — the full list is in Risks & security. None of these reaches an existing coin's pool: a coin already launched keeps its pool, its lock, its fee split and its creator whatever the site later decides to display or whatever happens to the keeper.
Reading it yourself
Every number this documentation states about our contracts is a public call. Where a figure could change with a future deployment — the bond threshold, the seed floor, the fee split — the docs name the getter alongside the value, so you can check the live contract rather than a page that may have gone stale. The Lighter side is read from Lighter's own public API, not from Avalanche.