> ## Documentation Index
> Fetch the complete documentation index at: https://docs.inkyswap.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> InkyPump V2 contract addresses, architecture, and where each module lives.

<Note>
  This section covers the V2 contracts on Ink mainnet. For V1 contracts, see [Legacy Contracts](/legacy/contracts).
</Note>

## Addresses on Ink mainnet (chain 57073)

| Contract                      | Address                                      |
| ----------------------------- | -------------------------------------------- |
| InkyPumpHook (proxy)          | `0x4cC8F6d5B7cE150CCC0A9B7664532B1283b96AC4` |
| LaunchViewModule              | `0xce83E3659251116d114Ec1CA729ffB49B99403c3` |
| SaleSplitCalculator           | `0xF665c51026e4c35Bbc4FC91F00c7A4b10089ED1f` |
| PoolManager (Uniswap V4)      | `0x360E68faCcca8cA495c1B759Fd9EEe466db9FB32` |
| Universal Router (Uniswap V4) | `0x551134e92e537cEAa217c2ef63210Af3CE96a065` |
| Quoter (Uniswap V4)           | `0x3972C00f7ed4885e145823eb7C655375d275A1C5` |
| StateView (Uniswap V4)        | `0x76Fd297e2D437cd7f76d50F01AfE6160f86e9990` |
| Position Manager (Uniswap V4) | `0x1b35d13a2E2528f192637F14B05f0Dc0e7dEB566` |
| Permit2                       | `0x000000000022D473030F116dDEE9F6B43aC78BA3` |
| WETH                          | `0x4200000000000000000000000000000000000006` |

## 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 do      | What to call                                                                    |
| ------------------------ | ------------------------------------------------------------------------------- |
| Launch a token           | `createLaunch` or `createLaunchWithReferral` on the hook                        |
| Buy on the curve         | `buy` or `buyWithReferral` on the hook                                          |
| Sell on the curve        | `sell` or `sellWithReferral` on the hook                                        |
| Preview a buy            | `previewBuyLocal(...)` on `LaunchViewModule`, with state from `getLaunchState`  |
| Preview a sell           | `previewSellLocal(...)` on `LaunchViewModule`, with state from `getLaunchState` |
| Read launch state        | `getLaunchState(launchId)` on the hook                                          |
| Update creator fee split | `updateCreatorFeeSplit(launchId, newSplitBps)` on the hook                      |
| Withdraw accrued fees    | `withdrawFees()` on the hook                                                    |
| Swap a bonded token      | Uniswap Universal Router on the V4 pool                                         |

## Constants

From `LaunchSharedState.sol`:

```solidity theme={null}
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

<CardGroup cols={2}>
  <Card title="ABI" icon="file-code" href="/api-reference/contracts/abi">
    Function signatures and event topics.
  </Card>

  <Card title="Token Creation" icon="coins" href="/api-reference/contracts/token-creation">
    createLaunch and createLaunchWithReferral.
  </Card>

  <Card title="Trading" icon="arrows-rotate" href="/api-reference/contracts/trading">
    buy, sell, and the referral variants.
  </Card>

  <Card title="Quotes" icon="calculator" href="/api-reference/contracts/quotes">
    Preview functions for buys, sells, and sale splits.
  </Card>

  <Card title="Integration Guide" icon="code" href="/api-reference/contracts/integration-guide">
    End to end integration walkthrough.
  </Card>

  <Card title="Legacy Contracts" icon="clock-rotate-left" href="/legacy/contracts">
    V1 contract addresses.
  </Card>
</CardGroup>

<Warning>
  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.
</Warning>
