Skip to main content
This section covers the V2 contracts on Ink mainnet. For V1 contracts, see Legacy Contracts.

Addresses on Ink mainnet (chain 57073)

ContractAddress
InkyPumpHook (proxy)0x4cC8F6d5B7cE150CCC0A9B7664532B1283b96AC4
LaunchViewModule0xce83E3659251116d114Ec1CA729ffB49B99403c3
SaleSplitCalculator0xF665c51026e4c35Bbc4FC91F00c7A4b10089ED1f
PoolManager (Uniswap V4)0x360E68faCcca8cA495c1B759Fd9EEe466db9FB32
Universal Router (Uniswap V4)0x551134e92e537cEAa217c2ef63210Af3CE96a065
Quoter (Uniswap V4)0x3972C00f7ed4885e145823eb7C655375d275A1C5
StateView (Uniswap V4)0x76Fd297e2D437cd7f76d50F01AfE6160f86e9990
Position Manager (Uniswap V4)0x1b35d13a2E2528f192637F14B05f0Dc0e7dEB566
Permit20x000000000022D473030F116dDEE9F6B43aC78BA3
WETH0x4200000000000000000000000000000000000006

Architecture

V2 splits the launch system into a UUPS proxy plus separate stateless modules. The proxy holds state and routes calls. The modules implement the logic.
InkyPumpHook (proxy, holds state)
  ├── delegates trading logic to LaunchTradingModule
  ├── delegates view / preview logic to LaunchViewModule
  └── state lives in LaunchSharedState

Helpers:
  SaleSplitCalculator (decides sale supply vs liquidity supply per launch)
  LaunchAccounting (computes fee splits)
  LinearBondingCurve (forward and inverse curve math)
Modules are stateless and swappable. An admin can deploy a new LaunchTradingModule and point the proxy at it through configureModules, without redeploying the hook itself.

Why modular

  • Bug fixes ship as a module redeploy without touching the proxy or its state
  • Each module can be audited independently
  • New features (like the referral variants of buy and sell) added by upgrading the trading module

Common integration entry points

What you want to doWhat to call
Launch a tokencreateLaunch or createLaunchWithReferral on the hook
Buy on the curvebuy or buyWithReferral on the hook
Sell on the curvesell or sellWithReferral on the hook
Preview a buypreviewBuyLocal(...) on LaunchViewModule, with state from getLaunchState
Preview a sellpreviewSellLocal(...) on LaunchViewModule, with state from getLaunchState
Read launch stategetLaunchState(launchId) on the hook
Update creator fee splitupdateCreatorFeeSplit(launchId, newSplitBps) on the hook
Withdraw accrued feeswithdrawFees() on the hook
Swap a bonded tokenUniswap Universal Router on the V4 pool

Constants

From LaunchSharedState.sol:
uint256 public constant TOTAL_SUPPLY      = 1_000_000_000 ether;
uint256 public constant MIN_RAISE         = 1 ether;
uint256 public constant MAX_RAISE         = 5 ether;
uint32  public constant MAX_GAIN_BPS      = 200_000;     // 21x ceiling
uint256 public constant MIN_BUY_ETH       = 0.00001 ether;
uint128 public constant MIN_SELL_TOKENS   = 1 ether;
uint256 public constant PROTOCOL_FEE_BPS  = 100;         // 1 percent
uint256 public constant VARIABLE_FEE_BPS  = 100;         // 1 percent
uint256 public constant BPS_DENOMINATOR   = 10_000;
uint24  public constant POOL_FEE          = 1_000;       // 0.1 percent on V4 pool

Where to next

ABI

Function signatures and event topics.

Token Creation

createLaunch and createLaunchWithReferral.

Trading

buy, sell, and the referral variants.

Quotes

Preview functions for buys, sells, and sale splits.

Integration Guide

End to end integration walkthrough.

Legacy Contracts

V1 contract addresses.
Always verify contract addresses before calling. The proxy at 0x4cC8F6d5B7cE150CCC0A9B7664532B1283b96AC4 is the only V2 entry point. If you see a different address claiming to be the V2 hook, treat it as untrusted.