Skip to content

docs/FAIR_LAUNCH.md

English governs the contract statements on this page. Contract names, addresses and numbers are shown as they are on the chain.

KAY9 Fair Launch

KAY9 launches through the audited Uniswap Liquidity Launcher stack on Robinhood Chain: a Continuous Clearing Auction (CCA) for price discovery, followed by automatic migration of the proceeds into a Uniswap v4 pool. KAY9 does not implement its own bonding curve or sale contract. The only KAY9 code in the path is KAY9Genesis, which supplies the tokens and pins the parameters, and KAY9LiquidityLock, which makes the resulting liquidity permanent.

What is fair about it

RuleHow it is enforced
No presale, no private allocationThe only supply outside the 91 % launch allocation is the declared 9 % team allocation in KAY9TeamVesting. Genesis holds the rest and can only send it to the launcher.
No whitelistKAY9Genesis.launch() sets the CCA validationHook to address(0) and reverts otherwise.
No privileged creator purchase, no dev pre-buyThe team receives tokens only through vesting. Every bid, including any team bid, is a public submitBid transaction at the same clearing price as everyone else.
No fake wallets, wash trading, bundled buys, artificial volumeNone is built, none is scripted, and the KAY9 audit engine flags exactly these patterns on other tokens. Any such behaviour by insiders would be visible on-chain and contradict the project's purpose.
Uniform pricingCCA clears every block at one price; bids above the clearing price pay the clearing price, not their maximum.
Refund if the auction failsIf less than requiredCurrencyRaised is raised, bidders withdraw their full ETH through exitBid and the tokens return to Genesis.

Parameters

Deployment parameters are supplied by the owner at launch time, echoed on-chain in the LaunchConfigured event, and displayed on kay9.io before the auction starts. Reference values from the brief:

ParameterReferenceNotes
Auction supply455,000,000 KAY9constant, enforced
Liquidity reserve455,000,000 KAY9constant, enforced
Raise currencynative ETHenforced
Duration4 hours ≈ 1,200 blocksblock.number advances ≈ every 12 s, not every 0.10 s; Genesis enforces 300–7,200 blocks, one hour to one day
Floor / reference FDVabout USD 1,000owner parameter; implied floor price = FDV ÷ 1,000,000,000
Graduation / target FDVabout USD 10,000owner parameter; expressed on-chain as requiredCurrencyRaised in ETH
CCA price tick1 % of the floor priceUniswap SDK default
Emission schedule12 convex steps + 30 % in the final blockUniswap SDK default (deriveConvexAuctionSteps)
LP allocation100 % of raised ETHenforced
PoolUniswap v4, fee 1 % (10000), tick spacing 200, hook = Uniswap's canonical InitializerHook (gates initialization only; no swap logic, no hookData)enforced; the hook makes the pool key impossible to squat before migration
Migrationanyone, after migrationBlockenforced migrationBlock > endBlock

FDV is always computed over the full 1,000,000,000 supply. The floor price in the CCA's Q96 format is floorFdvWei × 2⁹⁶ ÷ 10²⁷ (ETH-wei per KAY9-wei), and the USD figures depend on the ETH/USD rate at configuration time, which the launch script reads from the Chainlink feed and prints. The owner confirms the resulting implied prices before signing.

Sequence

  1. Configure and launch (owner signs). KAY9Genesis.launch(params) validates every invariant, deposits 910 M KAY9 into the launcher, and the launcher hands them to LBPStrategy, which deploys the CCA with 455 M and keeps 455 M for liquidity.
  2. Auction. Bidders call submitBid(maxPriceQ96, amount, owner, hookData) with ETH on the CCA contract, from kay9.io, from the Uniswap app's auctions tab, or from any tool. The clearing price rises as demand exceeds the scheduled supply. Bids below the clearing price can exit and reclaim ETH.
  3. End and claim. After endBlock, the final checkpoint fixes the clearing price. Winners claim KAY9 after claimBlock.
  4. Migration (anyone). LBPStrategy.migrate(auction) sweeps the ETH, initializes the pool at the clearing price, mints the full-range position, and sends the LP NFT to KAY9LiquidityLock.
  5. Lock (anyone). KAY9LiquidityLock.lock(tokenId) registers the creator-fee beneficiary and transfers the NFT into FeeSplitter, permanently.
  6. Settle (anyone). KAY9Genesis.settle() sweeps unsold KAY9 from the auction and any returned reserve, adds them as single-sided liquidity above the market price, locks that position too, and burns dust.

Proceeds

All ETH raised goes to liquidity. The protocol fee of the CCA factory on Robinhood Chain is currently zero (protocolFeeController = 0x0). Trading fees on the pool are split by the canonical FeeSplitter: 40 % of native-side fees to the holder of the beneficiary NFT, which is the owner's creator-fee address, and 60 % of native-side and 100 % of KAY9-side fees compounded back into the position. This is the only revenue stream anywhere in KAY9; the audit protocol has none, because nobody pays for an audit. The website never describes this as "the creator receives 1 % of every trade".

Failure and recovery

  • Not graduated: bidders refund themselves; 455 M returns to Genesis via sweepUnsoldTokens; the strategy's recovery returns the 455 M reserve to Genesis; Genesis blocks a new launch for 48 hours and then the owner may launch() again with new pricing under the same invariants.
  • Graduated but migration failed: the strategy returns the ETH and the reserve to Genesis. KAY9Genesis.recover() is permissionless and creates the pool position itself at the auction's final clearing price, then locks it. ETH cannot leave Genesis by any other path.

Where to watch

  • Auction contract: address emitted in LaunchConfigured / Launched.
  • Uniswap app: Explore → Auctions (Robinhood Chain).
  • kay9.io/launch: live clearing price, raised versus required, your bids, migration and lock status.