Documentation
Everything about VARO, in one place.
varo.fun is a token launchpad on Stable Mainnet. Mint an ERC-20 in seconds and trade it on Uniswap V3 from the first block. Its liquidity is locked forever. No presale, no team allocation — every token launches the same way.
Overview
varo.fun is a place to launch and trade tokens on Stable Mainnet. Browse launches, open any token to see its market, holders, and trades, and buy or sell straight from your wallet.
varo.fun never holds your funds. Every launch and trade is a transaction your wallet asks you to approve.
- Names and symbols can be copied — always check the token address.
- Prices come from each token’s Uniswap V3 pool — trading is on Uniswap from the first block.
- Launches can be volatile, illiquid, or lose all value.
Launch lifecycle
Creating a launch deploys the token and lists it directly into Uniswap V3 in a single transaction. Every token has a fixed supply of 1,000,000,000 and lists immediately — the entire supply is the liquidity.
- 01
Create
The token is minted with a fixed supply through the
VaroLaunchFactoryand starts trading on Uniswap V3 in the same transaction. - 02
Trade on Uniswap V3
Buys and sells route straight through the token’s Uniswap V3 pool. A brief anti-snipe window caps early buys per wallet; after it expires, trading is unrestricted.
- 03
Graduation milestone
Once paired reserves reach 8,400 USDT0, the token is flagged graduated — a milestone read from the factory, not a migration.
- 04
Locked liquidity & creator fees
The LP NFT is held permanently by the
VaroLaunchLocker, so liquidity can’t be pulled. The creator keeps earning their share of the pool’s trading fees.
No presale and no team allocation. 100% of the supply seeds the Uniswap V3 pool at launch and the LP NFT is locked forever — the protocol takes only a flat launch fee and a share of the pool’s trading fees.
Token addresses
Every token launched through VARO carries a signature in its contract address: it ends in b0a7 — which reads BOAT (0 for O, 7 for T), matching the sail mark.
0x5eaf…c0deb0a7
This is a real, on-chain property, not a display trick. The factory deploys each token with CREATE2, so its address is fully determined by a salt. Before you launch, the app searches for a salt whose resulting address ends in b0a7and confirms it against the factory’s own predictTokenAddress — so the deployed address always matches what you were shown.
The suffix is purely a recognizable mark that a token was launched through VARO — it has no effect on supply, trading, fees, or security. Finding it adds a brief moment before the wallet prompt; if a match can’t be found the launch still proceeds with a standard address rather than being blocked.
Trading and pricing
Price comes from the token’s Uniswap V3 pool and moves with every swap. The amount you actually receive can differ from the quote — slippage sets how much movement you accept. During the anti-snipe window, early buys are capped per wallet.
Graduation
A launch is flagged graduated once the paired USDT0reserves in its locked pool reach the threshold. The default is 8,400 USDT0, and the progress line tracks how close a launch is.
The pool exists from the first block — the entire supply is placed as one-sided liquidity and the LP NFT is locked in the locker. Graduation adds nothing onchain; it simply marks that enough paired USDT0 has accumulated. Nothing migrates.
Graduation only confirms the threshold was reached. It is not a quality signal and does not guarantee future liquidity, price, or an exit.
Fees and burns
There is no bonding-curve trade fee. Protocol revenue is the creator/protocol split of the token’s Uniswap V3 LP fees, plus a flat launch fee. The split is snapshotted per token at launch.
The creator earns their share of the locked pool’s Uniswap V3 trading fees, claimable any time through the locker.
Protocol revenue
The protocol’s 30% LP-fee share plus flat launch fees fund a buyback and operations, fanned out to dev, marketing, and buyback wallets by a FeeSplitter.
Risk disclosures
Tokens launched through varo.fun 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.
varo.fun is an interface, not investment advice or a representation of token quality.
Integration
A minimal, verifiable surface.
varo.fun is a monorepo of independent services. The chain is the source of truth; everything else reads from it.
Network
varo.fun runs on Stable Mainnet. Every token trades in a Uniswap V3 pool quoted against wvUSDT from the first block.
Contracts
Deployed addresses on Stable Mainnet. Per-token VaroLauncherTokentokens are deployed by the factory — read a token’s address from any launch.
Onchain events
For a trust-minimized integration, index the factory’s TokenDeployedevent to discover tokens, then index each pool’s Swap events. Onchain events are the authoritative source of truth.
// Discover launches from the factory, then index each pool's swaps.
const logs = await client.getLogs({
address: "0xA6c902d3370FE900e5cE0ce6c0DB7cC460975611",
event: parseAbiItem(
"event TokenLaunched(address indexed token, address indexed deployer, address indexed dexFactory, address pairToken, address pool, uint256 dexId, uint256 launchConfigId, uint256 positionId, uint256 restrictionsEndBlock, uint256 initialBuyAmount)"
),
fromBlock: "earliest",
toBlock: "latest",
});
// Authoritative onchain sources of truth:
// Factory: TokenDeployed · TokenLaunched
// Token: Transfer (holder balances)
// Pool: Swap (every buy/sell — price & volume)
// Locker: FeesClaimed (creator/protocol LP fee splits)Reading token state
Every launch token is self-describing onchain. Read its metadata and pool directly from the token contract, with no off-chain source required.
import { createPublicClient, http } from "viem";
import VaroLauncherTokenABI from "./VaroLauncherToken.json";
import VaroLaunchFactoryABI from "./VaroLaunchFactory.json";
const client = createPublicClient({
chain: {
id: 988,
name: "Stable Mainnet",
nativeCurrency: { name: "USDT0", symbol: "USDT0", decimals: 18 },
rpcUrls: { default: { http: ["https://rpc.stable.xyz"] } },
},
transport: http(),
});
// The token is self-describing; graduation status comes from the factory.
const [info, pool, grad] = await Promise.all([
client.readContract({ address: token, abi: VaroLauncherTokenABI, functionName: "getTokenInfo" }),
client.readContract({ address: token, abi: VaroLauncherTokenABI, functionName: "liquidityPool" }),
client.readContract({ address: factory, abi: VaroLaunchFactoryABI, functionName: "graduationStatus", args: [token] }),
]);
// grad: [pairedPrincipal, threshold, graduated] — distance = threshold - pairedPrincipal
// Read live price from the pool's slot0 (sqrtPriceX96).Social links, metadata URL, and creator are exposed as public getters on the token itself. Read live price from the Uniswap V3 pool’s slot0, and graduation from the factory’s graduationStatus.
Support
Integrating varo.fun? If you’re indexing launches, deriving prices, wiring trades, or verifying onchain state, we can help you get it right.
Deployed contracts are immutable. New versions ship as new factory and locker addresses, listed under Contracts.