Skip to main content
After a V2 launch bonds, curve calls stop and trading moves to the V4 pool created by that launch’s hook.

Resolve the pool key by ABI family

First match the token’s hook_address to tradeableDeployments from Capabilities. The resolution path depends on that deployment’s hookAbi: The deprecated Ink hook does not implement getLaunchPoolKey. Calling that selector on it reverts. For a corrected hook:
For a legacy Ink token, require every indexed pool field:
Do not stop at loading the key. Validate all of these before using it:
  1. tokenToLaunchId(token.address) equals the indexed launch_id.
  2. getLaunchState(launchId) is finalized and names the same token.
  3. The currencies are exactly the launch token and its quote asset: native zero address for a native launch, wrapper address for an xStocks launch.
  4. hooks equals the token’s original deployment, while fee is positive and tickSpacing is nonzero.
  5. keccak256(abi.encode(currency0, currency1, fee, tickSpacing, hooks)) equals the 32-byte launch_id.
  6. An indexed pool_id, when present, equals that computed ID.
If the getter and indexed fields both exist, require them to match. If a legacy key is missing or incomplete, wait for indexing or send the user to the InkyPump trade page. Never guess a pool.
A token/WETH guess can identify the wrong pool. Current native Ink launches use native ETH as the zero-address currency. xStocks pools use the asset’s wrapper. Historical launches stay on their original hook.

Current pool settings

The checked current deployments use: Read these values from the pool key instead of treating this table as a permanent constant.

Trading

The InkyPump trade page changes route after bonding. Direct integrations swap through the chain’s V4 router with the returned pool key. Quote and simulate against the same block when possible, then apply a user-approved minimum output and deadline. The current Ink V4 addresses are published through GET /api/capabilities?chainId=57073 under activeCreationDeployment.canonicalV4. Fetch them at runtime instead of copying router, quoter, or state-view addresses from an old page.

Fee allocation

The 1000 pool tier charges a 0.1 percent LP fee. Current checked hooks also charge a 1 percent protocol fee and a 1 percent variable hook fee after bonding. The hook fee can be taken in the quote asset or launch token, depending on swap direction and exact-input or exact-output mode. Use the deployment’s quote output as the user’s net result instead of subtracting a flat percentage in the UI. How the variable hook fee is allocated depends on the deployment. Current Ink uses holder fee sharing for the non-creator portion; older Ink uses buy-and-burn.

Liquidity and price

The bond transaction seeds the pool with the launch’s quote reserves and liquidity supply. Later liquidity positions can change depth and execution price. Read live pool state for quotes; do not infer executable output from a USD market-cap value.

State checks

  • getLaunchState(launchId) tells you whether the launch finalized.
  • Corrected hooks expose getLaunchPoolKey(launchId); legacy Ink uses the indexed immutable pool fields.
  • LaunchFinalized proves the bond transaction.
  • V4 state reads provide the current tick and liquidity.
See Bonding to Uniswap V4 for the creator-facing explanation.