Vortex
Launch coin

Contracts

Deployed on Base mainnet, chain ID 8453.

contractaddress
PairLaunchpad0x07dCAD32902623545a2Bd1d6b2c9b2210B7EA20f
FeeVault0x41A00c179C96380C4952B698b3B13D4d2B005816
QuoteRegistry0x8D24424806cE1bfEFAdec9328A2C1c4e8EBFeA68
CompositeQuoteGate0xaBaD2c322A087dDE9F4633E5e6c2F2b5CC128Cc5
UniV3QuoteGate0x40f7F4Ae85f293Ac9bD53374BBdc98b372992be0
AerodromeQuoteGate0xe1B63AF3219147a396fd2B878175E305A6394656

The source is not verified on Basescan yet. Until it is, you cannot read the code of what you are sending funds to, and none of the claims on these pages are independently checkable. That is a real gap, not a formality.

External contracts it uses

Uniswap v4 PoolManager0x498581fF718922c3f8e6A244956aF099B2652b2b
Uniswap V3 factory (measurement only)0x33128a8fC17869897dcE68Ed026d694621f6FDfD
Aerodrome Slipstream factory0x5e7BB104d84c7CB9B682AaC2F3d509f5F406809A
Aerodrome Slipstream factory #20xf8f2eB4940CFE7d13603DDDD87f123820Fc061Ef
Chainlink ETH/USD0x71041dddad3595F9CEd3DcCFBe3D1F4b0a16Bb70
Chainlink BTC/USD0x64c911996D3c6aC71f9b455B1E8E7266BcbD848F

Calls worth knowing

Before launching

// Non-reverting. Returns whether it would be allowed, and why not if not.
registry.status(address quote)
  returns (bool eligible, Decision decision, Report report)

// The bar this particular asset has to clear — $15,000 if listed, $50,000 if not.
registry.requiredDepthUsdE8(address quote) returns (uint256)

Launching

launchpad.launch(LaunchConfig cfg) payable returns (address token, bytes32 poolId)
launchpad.predictToken(address creator, bytes32 salt) returns (address)
launchpad.launchFee() returns (uint256)

LaunchConfig carries feeRoute (0 keeps the fees, 1 buys back and burns) and feeRecipient (zero means the launching wallet), so both choices are made in the launch transaction rather than as a follow-up.

After launching

// Anyone can call. Proceeds only ever reach the recorded recipient, the sink and the treasury.
feeVault.collect(address token)

// Creator only. Both take effect from the next collect.
feeVault.setFeeRoute(address token, FeeRoute route)
feeVault.setFeeRecipient(address token, address recipient)

// Reads
feeVault.launchOf(address token) returns (Launch)   // includes the PoolKey
feeVault.feeRouteOf(address token) returns (FeeRoute)
feeVault.feeRecipientOf(address token) returns (address)
feeVault.owed(address token, address who) returns (uint256)   // a payout that could not be pushed
feeVault.claim(address token)                                  // collect one

Owner powers

The owner can retune the depth bars, the fee bounds, the treasury, the buyback sink, the curated list and the gates. It cannot touch a launch's liquidity, change an existing launch's creator share, or redirect a creator's fees.

Ownership transfer is two-step everywhere: a handover that is never accepted leaves the current owner in place rather than sending the protocol to a wrong address.

Today the owner is a single EOA. It should be a multisig behind a timelock, and the contracts do not enforce that themselves.