🌊 Pool Launch

Pool Launch is Flap's second launch protocol, independent of the bonding curve. A token does not start on a curve: one transaction creates the tax token, adds its liquidity directly to a DEX pool, burns the LP, and the token trades on the DEX from the first block.

Bonding curve (today)
supply soldpricegraduateDEXprotocol-run curve
  • Fixed supply, fixed curve
  • Graduation = curve fills up
Pool Launch (new)
Creatorquote + tokenDEX poolfrom block 1LP burned πŸ”’seedno curve Β· custom supply Β· custom seed
  • Creator picks supply & seed size
  • Graduation = enough liquidity for the supply

Because there is no curve, the initial liquidity has to come from somewhere else. That is the point of Pool Launch: you decide how the initial liquidity is raised, with your own launch page.

Pool Launch is in beta and is permissioned. You cannot launch on it directly yet: your Launcher Factory must first be audited by Flap. See Getting access.

Build your own launch page: Launcher and Launcher Factory

A Launcher is your launch page on-chain. It holds the logic that runs before the token exists: a presale, a mint, a game sale, a crowdfund, an allowlist round, or any other way to raise funds. Users interact with your Launcher directly, and the Launcher keeps all of that state itself (pricing, caps, contributions, claims). When its condition is met, typically when the funds raised reach the threshold it needs, the Launcher launches the token straight into the pool, using the raised funds as the pool's liquidity.

Launchers are created by a Launcher Factory: your contract that deploys one Launcher per launch, with that launch's settings (name, target, duration, …). Only the Pool Launch Portal can call your factory, and only once Flap has enabled it; users start a new launch through the Portal, never through the factory directly.

LauncherFactoryβœ“ audited by Flapreused for every launchdeploysLauncheryour launch pagepresale Β· mint Β· gameone Launcher = one launchπŸ‘₯users contributetarget reachedlaunchTaxTokenV2Pool LaunchPortalone transactionDEX poolraised funds + pool tokensLP burned πŸ”’ Β· tradable nowVault (optional)reserved tokens + taxmining Β· airdrops Β· vesting
ContractWho writes itWhat it does
Launcher FactoryYouDeploys a new Launcher for each launch. Audited once by Flap and enabled on the Portal, then reused for every launch. Built on LauncherFactoryBase, which Flap requires.
LauncherYouYour launch page: raises the funds under your rules, then launches the token through the Pool Launch Portal. One Launcher launches one token, once. Can describe itself (name, target, title, summary) for terminals.
Pool Launch PortalFlapRecords each Launcher and the factory that created it, then creates the token, seeds the pool and burns the LP. It does not read your Launcher's internal state; it only checks the launch itself.
Vault (optional)YouReceives a share of the token's tax revenue and, optionally, a reserve of tokens. See Reserve tokens for a mechanism.

How a launch runs

1 Β· Raisethresholdcontributions to the Launcher2 Β· Launch into the poolonce Β· from the Launcher itselfTarget missed by the deadline?the Launcher's own rule, e.g. refund3 Β· After launchcontributors claim Β· vault runspricing, caps, allowlists and claims live in the Launcher β€” the Portal only checks the launch
  1. Create a Launcher. Your app calls Portal.newLauncher(factory, data). The Portal checks that your factory is enabled, asks it to deploy a Launcher (data is whatever your factory expects, for example the token name and the raise target), records which factory created it, and emits FlapNewLauncherCreated with the Launcher's own description, so terminals and monitoring can list it straight away.
  2. Raise funds. Users interact with the Launcher: they contribute, mint, buy in a presale or play the game. Your rules decide what happens if the target is not reached, for example a refund after a deadline.
  3. Launch. Once the threshold is reached, the Launcher itself calls the Portal's launchTaxTokenV2. In that one transaction the token is created, the raised funds and the pool's share of the supply are added to the DEX pool, and the LP is burned. Each Launcher can launch only once.
  4. After the launch, the Launcher can let contributors claim their share of the tokens, and the token trades on the DEX.

Two things help terminals show a Launcher properly:

  • Description. A Launcher can describe itself: the token name and symbol, the quote token and raise target, the share of the supply that goes into the pool, and a short title and summary (in English and Chinese). The Portal copies it into the creation event. It is display data only and never affects the launch, and a Launcher without one still works. See Describe the Launcher.
  • Creator. The Launcher can declare the user who started the sale as the token's creator, so terminals show that user instead of the Launcher contract.

Example: a contribution round

MintLauncher (with its MintLauncherFactory) is a complete Launcher for a simple contribution round:

  • Contributors send BNB until a target is reached. The contribution that reaches the target launches the token in the same transaction.
  • The whole raise becomes the pool's quote side, and half of the supply becomes the pool's token side.
  • The other half of the supply goes back to the Launcher, and contributors claim it in proportion to what they put in.
  • If the deadline passes before the target is reached, contributors take their BNB back.

The same pattern works for a mint (sell an NFT, then launch), a game (in-game purchases fund the pool), or a crowdfund paired with a vault: CrowdLauncher + CrowdVault, where contributors also share the token's tax revenue.

Both examples are in the example repository. Each one has a fork test that runs it against the live Pool Launch Portal on BNB Chain and BNB Chain Testnet, from creating the Launcher through the launch to the last claim. The repository also contains the recommended base contracts for your own Launcher and factory: LauncherBase and LauncherFactoryBase.

Reserve tokens for a mechanism

The creator chooses the total supply and how much of it goes into the pool. Part of the rest can be reserved and handed to a Pool Launch Vault inside the launch transaction. The vault receives a share of the tax revenue and holds the reserve, and its code decides how both are used, for example mining or staking rewards, airdrops, vesting, or releasing tokens as the market cap grows.

Bonding-curve vault
taxVaultprocesses revenue only
Pool Launch vault
taxreserveVault= strategyrevenue + token distribution

A Launcher and a Vault can be used together: the Launcher raises the initial liquidity, and the Vault runs the mechanism on the reserved tokens afterwards. Reserved tokens are held in Flap's Token Dock, a shared, well-known contract that terminals can label as "reserved", so a vault's reserve is not mistaken for one large holder.

Graduation

A Pool Launch token is on the DEX from the first block, so there is nothing to migrate. Instead, the launch is checked once, inside the launch transaction: if the pool's quote side is worth enough for its share of the supply, the token is shown as Graduated; otherwise it stays New. A launch below a lower creation floor is rejected. An audited Launcher Factory (or Vault Factory) can be given a lower floor, agreed during the audit.

Launch txpool seededtradable nowchecked oncepool valueβ‰₯ floor ?at launchyesnoπŸŽ“ GraduatedFlapTokenGraduatedπŸ†• Newno event Β· stays hereno bonding curve β†’ nothing to migrate Β· a later price rise never moves a token to Graduated

The two floors, in USD of the quote put into the pool:

quoteUsd        = poolQuote Γ— quote USD price
graduationFloor = $1,500 Γ— multiplier Γ— totalSupply / poolToken
creationFloor   = $750   Γ— multiplier Γ— totalSupply / poolToken

graduated      ⇔ quoteUsd β‰₯ graduationFloor
launch allowed ⇔ quoteUsd β‰₯ creationFloor     (otherwise LaunchLiquidityTooLow)
  • The floors are for a pool that holds the whole supply. With only part of it in the pool, they scale with 1 / share: at 50% the graduation floor is $3,000, at 20% it is $7,500.
  • multiplier is 1 (10000 bps) unless the launch's Vault Factory, or else its Launcher Factory, has a lower one.
  • Example: BNB at $600, 3 BNB in the pool, 50% of the supply in the pool. quoteUsd = $1,800, the creation floor is $1,500 and the graduation floor $3,000: the launch is allowed but the token stays New. It would need 2 BNB more to graduate.
  • The quote token's USD price is set on the Portal by Flap (launchQuoteConfig). To check a planned launch, call graduationFloorV2.

Getting access (beta)

During the beta, Pool Launch is permissioned, not permissionless:

  • A Launcher can only be created through a Launcher Factory that Flap has audited and enabled on the Portal. Calling newLauncher with any other factory reverts with LauncherFactoryNotEnabled.
  • On BNB Chain, token creation is currently paused for everyone else. A Launcher is let through by its own Launcher Factory alone: while that factory is enabled, its Launchers can launch. If Flap disables the factory, it can no longer create Launchers, and its existing Launchers can no longer launch during the pause.
  • If your launch also uses a Vault, its Vault Factory must pass the audit too, and Flap enables it for the vault itself (its floor and its UI). A Launcher does not need the Vault Factory to get through the pause.
1 Β· Contact Flapshare your factory2 Β· Auditfactory (+ vault factory)3 Β· Enabledon the Portal4 Β· Launchreuse for many tokensbeta: an unaudited factory cannot create Launchers (LauncherFactoryNotEnabled)

To launch on Pool Launch:

  1. Contact the Flap team with your Launcher Factory (and Vault Factory, if any) to start the audit.
  2. Pass the audit. The floor multiplier for your factory is agreed at this step.
  3. Flap enables your factory on the Pool Launch Portal, and registers its UI so your Launchers appear on Flap.
  4. Launch. Your audited factory is then reused: every new launch creates a new Launcher through the same factory, with no new audit as long as the factory does not change.

Learn more