OmniPool Documentation
Protocol reference for creators, traders and integrators.
Overview
OmniPool is a token launchpad on BNB Chain built directly on PancakeSwap v3. There is no bonding curve, no custodial trading phase and no migration step: a launch creates real PancakeSwap v3 pools in the same transaction, and the token is tradeable from any wallet, router, bot or aggregator from its first block.
The protocol consists of three immutable contracts:
- OmniFactory — deploys tokens, opens pools, mints the launch positions and records launches and baskets.
- OmniLocker — holds every launch position forever and distributes collected swap fees.
- OmniDistributorFactory — optional per-token contracts that convert creator fees into buybacks and burns.
Swaps go through PancakeSwap’s own SmartRouter; OmniPool ships no router of its own.
Launching a token
A single launch() call performs the following, atomically:
- Deploys an OmniToken as a deterministic EIP-1167 minimal proxy of a single verified implementation — a fixed-supply ERC20 (1,000,000,000 tokens, 18 decimals) with no owner, no mint, no tax, no blacklist and no pause. Every token therefore shows verified source on explorers from its first block, and the address is predictable before launch.
- For every asset in the chosen basket, creates the 1 % PancakeSwap v3 pool between the token and that asset at the opening valuation.
- Splits the entire supply across those pools by basket weight, minted as single-sided liquidity above the opening price, and sends each position NFT straight to OmniLocker.
- Wires fee routing for the positions: creator share, protocol share and the creator’s fee recipient.
- Optionally executes the creator’s first buy in the same transaction, before anyone else can trade — capped at 20 % of supply.
For a two-asset basket the pool deployments (about 5M gas each) run in a preceding preparePools() transaction, so neither transaction approaches BNB Chain’s 16,777,216 per-transaction gas cap even after wallets pad their estimate. A prepared pool is only accepted by launch() while it is empty and sits at the opening price; an empty pool that was moved off-price is moved back at no cost, and a pool anyone has seeded makes the launch revert.
Parameters
| Name / symbol | ≤ 64 / ≤ 32 bytes |
| Total supply | 1,000,000,000 tokens, fixed for every launch |
| Basket | One approved asset, or two of them at 50 % each (every combination is registered on the factory) |
| Opening market cap | Set per asset by governance, not by the creator; currently $3,000 in every asset |
| First buy | Optional; paid in BNB or USDT and routed into every pool of the basket; at most 20 % of supply |
| Metadata | Inline JSON (description, image, links) stored on the token, ≤ 4096 bytes |
| Launch fee | Flat native fee set by governance, capped at 1 BNB; the caller passes a maximum they consent to |
Supply not placed in a pool because of rounding (a few wei) is burned, so every unit is either pool liquidity or a holder balance.
Baskets and approved assets
A launch is backed by a basket: one approved asset, or any two of them at 50 % each. A one-asset basket (for example “USDT”) is a plain TOKEN/USDT launch. A two-asset basket (for example “NVDAB + QQQB”) opens one pool per asset and puts half of supply in each. The token then trades against both assets from the first block, and arbitrage keeps the pools priced together. Every single asset and every pair is pre-registered on the factory, so the creator simply picks the assets.
Baskets stop at two assets because BNB Chain caps a single transaction at 16,777,216 gas (BEP-652) and each PancakeSwap v3 pool a launch opens costs roughly 5.4M; a two-pool launch with a first buy uses about 12.7M, a third pool would not fit.
Only assets on the factory’s on-chain allowlist can appear in a basket. Assets are added by governance after a manual review that checks, at minimum, that the token has verified source and no upgrade path, no transfer tax, blacklist, pause or max-wallet, can be freely sold by any holder, and has meaningful liquidity and a credible issuer. This prevents honeypot or high-tax tokens from being laundered through the launchpad as “base” assets.
Anyone can submit an asset for review. Approval, revocation and basket registration are single owner transactions (setQuote, createBasket, setBasketActive). Revoking an asset or deactivating a basket only blocks new launches — existing pools are ordinary PancakeSwap pools and keep trading.
Opening valuation
Every launch starts from the same curve. For each approved asset governance stores an opening market cap denominated in that asset — how much of the asset the whole supply is worth at launch. It is currently set so that every asset opens at $3,000(≈ 4 BNB, 3,000 USDT, and so on) and is refreshed as asset prices move. Creators cannot change it, so nobody can open a pool at a price designed to trap the first buyers.
With the whole supply as single-sided liquidity, the pool behaves like a constant-product curve seeded with a $3,000 virtual reserve: buying 20 % of supply costs about $750, and the market cap reaches the $69,000 graduation mark once roughly 79 % of supply has been bought, with about $11,400 of assets inside the pools.
Pool parameters
| Protocol | PancakeSwap v3 (canonical BNB Chain factory and NonfungiblePositionManager) |
| Swap fee | 1.00 % (fee tier 10000) |
| Tick spacing | 200 |
| Launch liquidity | One position per basket asset, from the opening tick to the maximum tick, holding that asset’s weight of supply |
Because the pools are standard PancakeSwap v3, anyone may add further liquidity, quote them through the PancakeSwap interface, index them on DexScreener or route through them with any aggregator or bot. OmniPool does not need to be involved in a trade.
Swap fees
Every swap pays the 1 % pool fee into the locked launch positions. Fee collection is permissionless: anyone can callcollectFees(token) on OmniLocker at any time; it sweeps every pool of the launch.
- The token side of collected fees is burned in full, permanently reducing supply.
- The asset side is split at the ratio snapshotted at launch: 50 % to the creator, 50 % to the protocol.
- The protocol share is further split between the treasury and a buyback wallet (currently 65 % to buybacks).
All amounts are credited to pull-based balances per asset; recipients withdraw with claimFees(asset, to, unwrap), where WBNB can be paid out as BNB. One stuck recipient can never block another, and credits never expire.
Creator fee recipient
The creator chooses a fee recipient at launch (defaulting to their own wallet) and can hand the role to a new address later withsetCreatorFeeRecipient. Balances already credited stay with the previous recipient.
Routing creator fees to holders
A creator may forgo their fee share in favour of all holders by pointing the fee recipient at the token’s buyback distributor. The address is deterministic and known before launch, so it can be selected in the create form.
The distributor is permissionless: anyone can call distribute(token), which collects fees, claims the creator’s share in every basket asset, market-buys the token through its own pools and burns the proceeds. Every holder’s share of supply grows in the same transaction — no snapshots, no claims. Once the recipient is a distributor, nothing can hand the role back to a wallet.
Graduation
A token is marked Graduated once its market cap — the supply-weighted average price across its pools, in USD — reaches $69,000. This is a display milestone only. There is no bonding curve to exit and no liquidity migration: the pools that trade on day one are the same pools that trade forever.
Trading
This interface trades through PancakeSwap’s SmartRouter. For a basket-backed token a buy is split by weight, routed from your payment asset into each pool and paid out as one transfer behind a single slippage floor; a sell does the reverse and can pay out in BNB, USDT or any basket asset.
You can equally trade any OmniPool token through the PancakeSwap app, a DEX aggregator, a trading bot, or by calling the pools yourself. Charts and trade history shown here are indexed from on-chain pool events, so trades executed elsewhere appear too.
Security model
- Tokens have no privileged functions: no owner, mint, tax, blacklist or pause.
- OmniLocker exposes no function that decreases liquidity, transfers a position or approves an operator. Launch liquidity cannot leave.
- Governance can adjust the launch fee (≤ 1 BNB), the protocol fee share for future launches (≤ 50 %), fee recipients, the first-buy cap (≤ 50 %), opening valuations, the asset allowlist and baskets, and pause new launches. Live pools and existing fee splits are unaffected.
- Pools are created in the launch transaction; a pre-created pool at a hostile price simply makes the launch revert.
- The first buy is executed with the creator’s own funds only, and its cap is enforced on tokens leaving the pools, not on any address the creator names.
- All contracts are MIT-licensed with source verified on BscScan.
FAQ
Can the creator remove liquidity?
No. The position NFTs are owned by OmniLocker, which has no withdrawal path.
Why can’t I set my own starting price?
Every launch opens at the same $3,000 valuation so buyers always know what they are stepping into. Use the first buy to take an early position instead.
What happens to unsold supply?
There is no “unsold” supply. Everything sits in the pools as liquidity and is bought out gradually as price rises.
Do trades on other venues show up here?
Yes. Trades, price and holders are indexed from pool Swap and token Transfer events regardless of which router was used.